Wasserfall vs. agil: Vorgehen, Planung, Umgang mit Änderungen, Tests und passende Projekte
Das Wasserfallmodell ist ein Entwicklungsmodell, das Anforderungsdefinition, Entwurf, Programmierung und Test der Reihe nach von oben nach unten durchläuft und grundsätzlich erst dann zur nächsten Phase übergeht, wenn die Ergebnisse der vorigen Phase festgeschrieben sind. Da der Gesamtplan zu Beginn feststeht, lassen sich Fortschritt und Kosten gut steuern, doch Fehler in den Anforderungen, die erst in späteren Phasen entdeckt werden, verursachen viel Nacharbeit. Agile Softwareentwicklung ist ein Sammelbegriff für Vorgehensweisen, die kurze Iterationen von einigen Wochen wiederholen, dabei jedes Mal lauffähige Software erstellen, die Rückmeldungen der Nutzer aufnehmen und den Plan an sich ändernde Anforderungen anpassen; typische Methoden sind Scrum und Extreme Programming (XP). Wasserfall passt, wenn die Anforderungen klar und stabil sind, agil, wenn sich Anforderungen leicht ändern und nutzbare Funktionen früh geliefert werden sollen.
| Merkmal | Wasserfallmodell | Agile Softwareentwicklung |
|---|---|---|
| Ablauf der Phasen | Anforderungsdefinition → Entwurf → Programmierung → Test, jede Phase einmal, der Reihe nach von oben | Kurze Iterationen (in Scrum Sprints) mit Planung, Entwurf, Implementierung und Test, viele Male wiederholt |
| Planung | Umfang, Zeitplan und Kosten des Gesamtprojekts werden zu Beginn festgelegt, und die Arbeit folgt diesem Plan | Eine grobe Richtung wird festgelegt, und der Plan wird in jeder Iteration überarbeitet, die wichtigsten Punkte zuerst |
| Umgang mit Anforderungsänderungen | Änderungen nach dem Festschreiben der Ergebnisse der vorigen Phase verursachen viel Nacharbeit und durchlaufen ein Änderungsmanagementverfahren | Änderungen werden vorausgesetzt und lassen sich leicht in den Plan der nächsten Iteration aufnehmen |
| Wann lauffähige Software entsteht | Vor allem gegen Ende der Entwicklung; nach dem Test wird alles auf einmal übergeben | Jede Iteration liefert lauffähige Software (in Scrum ein Inkrement) |
| Wann getestet wird | Nach der Programmierung: Modul-, Integrations-, System- und Abnahmetest der Reihe nach (im V-Modell den Entwurfsphasen zugeordnet) | In jeder Iteration; Änderungen werden oft jedes Mal mit automatisierten Tests und Continuous Integration geprüft |
| Dokumentation | Für jede Phase werden Anforderungsspezifikationen, Entwurfsdokumente usw. erstellt und in Reviews festgeschrieben | Lauffähige Software steht im Vordergrund, die Dokumentation beschränkt sich oft auf das Nötige |
| Einbindung der Nutzer (Auftraggeber) | Vor allem bei der anfänglichen Anforderungsdefinition und beim abschließenden Abnahmetest | Prüfen das Ergebnis in jeder Iteration und geben Rückmeldung; in Scrum legt der Product Owner die Prioritäten dessen fest, was gebaut wird |
| Fortschrittskontrolle | Gemessen an abgeschlossenen Phasen und Ergebnissen; gut mit einem Projektstrukturplan (PSP) und Gantt-Diagrammen zu steuern | In jeder Iteration gemessen an fertigen, lauffähigen Funktionen |
| Passende Projekte | Klare, stabile Anforderungen; Spezifikationen, die früh zusammen mit Hardware feststehen müssen; Verträge, die Umfang und Kosten im Voraus festlegen müssen | Anforderungen, die sich leicht ändern, oder neue Dienste, bei denen man die Reaktion der Nutzer schon während der Entwicklung prüfen will |
Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.