Entwicklungsmethoden
Softwareentwicklung » Entwicklungsmethoden
Beim Entwickeln von Software gibt es zwei grundsätzliche Methoden: Phasenmodelle (z.B. Wasserfallmodell, V-Modell) und agile Methoden (z.B. Extreme Programming, Test Driven Development). In der Praxis kommen häufig Mischformen zum Einsatz.
Bei ersteren Methoden steht die Planung im Vordergrund, die Codierung ist lediglich eine Umsetzung der Planung. Bei letzteren Methoden steht die Codierung im Vordergrund. Bei der agilen Softwareentwicklung wird der Code dadurch häufiger geändert oder Teile komplett verworfen. Mitarbeiter eines agilen Softwareprojekts müssen somit in den Themen Softwarearchitektur und Refactoring gut geschult und erfahren sein.
Welche der beiden Methoden zum Einsatz kommt, lässt sich nicht pauschal beantworten.
Phasenmodelle eignen sich für Projekte in denen...
- die Anforderungen konstant sind
- ein strikter Zeitplan eingehalten werden muss
- ein strikter Budgetplan eingehalten werden muss
- Softwarefehler fatale Folgen haben
Agile Methoden eignen sich für Projekte in denen...
- sich die Anforderungen im Entwicklungsverlauf häufig ändern
- Zeit- und Budgetplan locker gefasst sind
- Funktion vor Sicherheit steht
Ausschlaggebend ist häufig der erste Punkt: gerade in der Softwareindustrie sind noch zu viele Faktoren in Bewegung, als dass die Anforderungen über Jahre gleich bleiben. Bei den Phasenmodellen ist dies verheerend, denn jede Änderung muss von vorne bis hinten durchpropagiert werden: Anforderungsdokument, Realisierungskonzept, Spezifikation, Code, Test und Benutzerdokumentation.
Agile Methoden schränken die Vorarbeiten stark ein, sind dadurch aber anfälliger für Softwareerosion: Im ersten Durchlauf wird mit einer Softwarearchitektur begonnen, die den vorläufigen Anforderungen gerecht wird. Dadurch, dass viele Anforderungen erst später hinzukommen, skaliert die gewählte Architektur schnell nicht mehr. Der Code wird immer chaotischer und undurchschaubarer. Dies lässt sich nur durch strikte Refactoring-Disziplin vermeiden: ein neues Feature wird erst eingebaut, wenn die Architektur dazu ertüchtigt wurde. Wegen der groben Planung lassen sich auch kaum realistische Zeit- und somit Budgetpläne erstellen.
Auch die Zusammensetzung des Teams spielt ein Rolle bei der Auswahl der Entwicklungsmethode. Besteht es vorrangig aus technikbegeisterten Nerds, so werden die langen Planungsphasen mit Technologieabstinenz, sowie die mangelnde Flexibilität nach der Planung schnell zum Verlust der Motivation führen.
Da größere Softwareprojekte häufig aus mehreren Teilprojekten bestehen, lässt sich auch für jedes Teilprojekt die geeignete Entwicklungsmethode auswählen.