David Schirrmeister 5d0ad57e2e update
2024-06-09 21:47:55 +02:00

1.9 KiB

Agile Design

UML ist nicht Software Design

  • Diagramme repräsentieren einen Teil des SW-Designs
    • Source Code
  • Design ist ein abstraktes Konzept
    • Struktur und Form des Projekts
    • Detaillierte Beschreibung der Klassen, Module, Methoden

What goes wrong with Software

  • Im besten Fall
    • Projekt startet mit klarem Bild, was das System tun soll
      • Design ist ein Bild in den Köpfen der Devs
      • Mit Glück: Klarheit des Designs schafft es bis zum ersten Release
  • Häufig geht vorher was schief
    • Programm wird schwieriger wartbar
    • kleinste Änderungen werden kompliziert
  • Neudesign geht meistens schief
    • Das alte System wächst weiter, neues muss mithalten
    • Probleme im neuen Design entstehen
  • Software geht kaputt, wenn es anfängt mit Design Smells:

Design Smells

Rigidity (Steifigkeit)

  • Das Design ist schwer zu ändern
    • Code ist schwer zu ändern
      • kleine Änderungen erzeugen Probleme in dependent Modulen
      • je mehr Module geändert werden müssen, desto mehr steif ist das Design
  • Ergebnis:
    • Änderungen dauern deutlich länger als gedacht

Fragility (Zerbrechlichkeit)

  • Das Design ist einfach kaputtzumachen
  • Neue Probleme sind in unvorhergesehenen Umgebungen
    • Lösen dieser Probleme führt zu neuen Problemen
    • Fragilität wird mit der Zeit höher
  • Ist sehr normal
    • Module sind bekannt dafür, dass sie repariert werden müssen
    • Sind auf der Bug Liste
    • Niemand will sich der Aufgabe widmen

Immobility

  • Das Design ist kaum neu zu benutzen
    • Enthält Teile, die in anderen Systemen sinnvoll wären
      • Risiko involviert in Aufteilung
  • Ungünstig, aber sehr häufig

Viscosity

  • Es ist schwer das Richtige zu tun. Zwei Formen:
  1. Viskosität der Software
    • Devs entscheiden zwischen Designerhaltung und einfacher Lösung
    • Design sollte design erhaltende Änderungen fördern
  2. Viskosität der Umgebung
    • h