Vergiss Agile eine Minute, denke darüber nach, was mit "Wasserfall" gemeint ist.
Es gibt eine Anforderungsphase, in der jeder versucht, herauszufinden, welche Probleme das Endprodukt lösen muss. Die Leute streiten sich eine Weile darüber und dann unterschreiben sie alle eine Reihe von Anforderungen. Zu diesem Zeitpunkt ist Ihr Geltungsbereich definiert, Verträge werden unterzeichnet, und der Kunde kann abwarten, bis Sie ein Produkt gefunden haben, das diese definierten Anforderungen erfüllt.
Als nächstes gibt es eine (oder vielleicht zwei) Entwurfsphasen. Die Designer (die möglicherweise Entwickler sind oder nicht) streiten sich darüber, wie das System zusammenarbeiten muss, um die Anforderungen für die Freigabe zu erfüllen. Probleme können auftreten, wenn sie eine Anforderung nicht genau verstehen, was bedeuten kann, dass sie zum Kunden zurückkehren müssen, möglicherweise die Anforderungsphase erneut eröffnen (und eine weitere Runde von Abmeldungen erhalten) oder zumindest das Änderungsmanagement in die Tat umsetzen müssen . Oft geben die Designer einfach ihre besten Schätzungen ab. Möglicherweise haben sie ein logisches Datenmodell und viele UML-Dateien, die ein neues System beschreiben und beschreiben, wie es funktionieren soll. Dann melden sie sich ab.
Jetzt können die Entwickler auf der Grundlage des abgemeldeten Designs mit dem eigentlichen Codieren beginnen. Probleme können auftreten, wenn sie das Design nicht ganz verstehen, was bedeuten kann, dass sie zum Designer zurückkehren müssen, möglicherweise die Designphase erneut eröffnen (und eine weitere Runde von Abmeldungen erhalten) oder zumindest das Änderungsmanagement in die Tat umsetzen müssen . Die Designer können wiederum erkennen, dass die Verwirrung tatsächlich auf die Anforderungen zurückgeht, was bedeutet, dass sie Anforderungsdiskussionen, Abmeldungen und weiteres Änderungsmanagement erneut eröffnen müssen. Häufig geben die Programmierer (die eine absehbare Deadline haben) einfach ihre bestmögliche Vermutung ab. Sie tun, was sie können, um Funktionscode zu erstellen. Dann geben sie es zum Testen frei.
Jetzt beginnt die Phase der Systemtests. Die Tester testen auf der Grundlage ihres Verständnisses der Anforderungen und des Designs und registrieren das, was sie als Fehler wahrnehmen, in einem System zur Fehlerverfolgung / Änderungsverwaltung ein Designfehler, der es an das Design zurückschickt, etc ... Eventuell bestehen die Systemtests und werden am abgemeldet.
Schließlich kommt der Kunde zurück und führt Benutzerakzeptanztests am neuen System durch. Hier entscheiden sie, ob die von den Testern getestete, von den Entwicklern entwickelte und von den Designern entworfene Lösung tatsächlich ihren Wünschen entspricht. Ist dies nicht der Fall, müssen Sie möglicherweise zur Entwurfsphase zurückkehren oder die Anforderungen erneut prüfen.
Die Idee hinter dem Wasserfall ist, dass es schwierig (und sehr unerwünscht) ist, zurückzukehren, wenn eine Phase abgeschlossen ist. Verschiedene Personen sind in der Regel in verschiedene Phasen involviert, daher gibt es mehrere Übergaben, von denen jede ein hohes Risiko für Fehlinterpretationen und Informationsverlust mit sich bringt. Es gibt auch eine signifikante Lücke zwischen der Aussage der Kunden und dem Zeitpunkt, zu dem sie sehen, was gebaut wurde, und dem Zeitpunkt, zu dem sich die tatsächlichen Anforderungen möglicherweise geändert haben.
Agile Methoden konzentrieren sich auf eine starke Kommunikation und Zusammenarbeit zwischen allen interessierten Parteien. Das Prinzip "Zusammenarbeit der Kunden über Vertragsverhandlungen" bedeutet, dass Sie nicht eine Reihe von Ab- und Übergaben durchführen müssen, sondern einfach mit dem Kunden zusammenarbeiten müssen, wobei jede Iteration die Anforderungen für ein Puzzleteil bestimmt und sofort Tests, ein Design und einen Arbeitscode zu erstellen - wobei alle Akteure so direkt wie möglich miteinander kommunizieren (Vermeidung von Übergabekosten und -risiken). Der Arbeitscode kann vom Kunden schnell getestet werden, wodurch Verzögerungsrisiken vermieden werden. Alle Aktivitäten finden in einem kollaborativen Strudel statt, nicht in einem Abwärtsfluss.
Um einen hervorragenden Überblick über die Vorgehensweise agiler Methoden zu erhalten, kann ich Allistair Cockburns Agile Software Development: The Cooperative Game wärmstens empfehlen .