1.9 KiB
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
- Projekt startet mit klarem Bild, was das System tun soll
- 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
- Code ist schwer zu ändern
- 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
- Enthält Teile, die in anderen Systemen sinnvoll wären
- Ungünstig, aber sehr häufig
Viscosity
- Es ist schwer das Richtige zu tun. Zwei Formen:
- Viskosität der Software
- Devs entscheiden zwischen Designerhaltung und einfacher Lösung
- Design sollte design erhaltende Änderungen fördern
- Viskosität der Umgebung
- h