Ein Projekt mit iterativer Entwicklung hat einen Lebenszyklus, der aus mehreren Iterationen besteht. Eine Iteration ist
eine lose Folge von Aufgaben (Geschäftsmodellierung, Anforderungen, Analyse und Design, Implementierung, Deployment)
unterschiedlichen Umfangs, je nachdem, an welcher Stelle im Entwicklungszyklus die Iteration stattfindet. Während der
Konzeptions- und Ausarbeitungsphasen beziehen sich Iterationen verstärkt auf Management, Anforderungen und
Designaktivitäten, während der Konstruktionsphase beziehen sie sich auf Design, Implementierung und Test. Während der
Übergangsphase schließlich beziehen sich Iterationen auf Test und Deployment. Iterationen sollten einem festen Zeitrahmen haben; das heißt, der Zeitplan für die Iteration
sollte vordefiniert sein. Der Umfang des Iterationsinhalts wird dann aktiv so verwaltet, dass der Zeitplan eingehalten
werden kann.
Das anfängliche Design ist vermutlich noch nicht perfekt auf die Anforderungen ausgerichtet. Je später Probleme erkannt
werden, desto höher sind die für die Beseitigung anfallenden Kosten; manchmal müssen sogar komplette Projekte storniert
werden.
Es bestehen bei allen Projekten Risiken. Wenn allerdings bereits in einem frühen Stadium des Lebenszyklus geprüft
werden kann, ob Risiken vermieden werden, kann wesentlich genauer geplant werden. Viele Risiken werden oft erst dann
entdeckt, wenn das System integriert werden soll. Auch wenn das Entwicklerteam äußerst erfahren ist, ist es nie
möglich, alle Risiken vorherzusagen.
In einem Lebenszyklus mit Wasserfallprinzip können Sie erst spät im Zyklus prüfen, ob ein Risiko vermieden wurde.
Während eines iterativen Lebenszyklus wählen Sie das Inkrement für die Entwicklung innerhalb einer Iteration auf der
Basis von Schlüsselrisiken aus. Weil die Iteration eine getestete ausführbare Funktion erzeugt, können Sie feststellen,
ob immanente Risiken verringert wurden oder nicht.
Eine iterative Vorgehensweise ist im Allgemeinen leistungsfähiger als die Wasserfallmethode; dies hat verschiedene
Gründe.
-
Die Risiken werden in einem frühen Stadium erkannt und reduziert, weil Elemente progressiv integriert werden.
-
Änderungen bei Anforderungen und Taktik können berücksichtigt werden.
-
Weil es leichter ist, das Produkt zu verbessern und zu verfeinern, erhält man ein stabileres Produkt.
-
Die Organisationen lernen aus diesem Vorgehen und verbessern ihren Prozess.
-
Die Wiederverwendbarkeit erhöht sich.
Ein Kunde sagte einmal: "Bei der Wasserfallmethode sieht alles phantastisch aus - bis fast zum Ende des Projekts und
manchmal auch noch bis zum Integrationsprozesses. Und dann tut es einen Schlag. Bei der iterativen Methode bleibt die
Wahrheit nicht lange verborgen."
Projektleiter mögen häufig die iterative Methode nicht, weil sie sie als endloses Hacken sehen. In Rational Unified
Process läuft die interaktive Methode sehr kontrolliert ab. Anzahl, Dauer und Ziel der Iterationen werden genau
geplant. Die Aufgaben und Zuständigkeiten der einzelnen Teilnehmer sind klar definiert. Objektive Bewertungen des
Fortschritts werden erfasst. Zwischen den einzelnen Iterationen findet zwar Nacharbeit statt, aber sie wird ebenfalls
streng kontrolliert.
Die iterative Methode erlaubt es Ihnen, Risiken früher zu erkennen und zu entschärfen, die sonst erst im Verlauf der
Integration erkannt werden würden. Während der Iteration werden in einem frühen Stadium alle Disziplinen überarbeitet
und viele Aspekte des Projekts behandelt: Tools, gebrauchsfertige Software, Erfahrungen etc. Erkannte Risiken sind
vielleicht gar keine mehr, aber es werden vielleicht neue Risiken aufgedeckt.
Integration ist nicht der "Big Bang" am Ende. Alle Elemente werden progressiv eingearbeitet. Eigentlich handelt es sich
bei der iterativen Methode fast um eine fortlaufende Integration. Was bisher eine lange, ungewisse und schwierige Zeit
war, bis zu 40 % des Arbeitsaufwands am Ende eines Projekts einnahm und nicht geplant werden konnte, ist jetzt in sechs
bis neun kleinere Integrationsschritte aufgeteilt. Das heißt, am Anfang werden immer nur wenige Elemente integriert.
Die iterative Methode erlaubt es Ihnen, die Änderungen einzuplanen, die im Verlauf eines Projekts immer
auftreten.
Änderungen und der Stand von Anforderungen sind primäre Problemquellen für ein Projekt und können zu verspäteter
Auslieferung, nicht eingehaltenen Zeitplänen, unzufriedenen Kunden und frustrierten Entwicklern führen. Vor 25 Jahren
schrieb Fred Brooks: "Planen Sie, etwas wegzuwerfen. Sie werden es ohnehin tun." Benutzer ändern ihre Meinung. Das ist
die menschliche Natur. Es wäre falsch, Benutzer zu zwingen, das System so zu akzeptieren, wie sie es anfänglich haben
wollten. Man ändert sein Meinung, weil sich die Umstände ändern. Die Benutzer lernen mehr über die Umgebung und die
Technologie und sie sehen eine vorläufige Demonstration des Produkts im Verlauf seiner Entwicklung.
Während eines iterativen Lebenszyklus ist es möglich, am Produkt taktische Änderungen vorzunehmen. Um mit anderen
Produkten auf dem Markt zu konkurrieren, entscheiden Sie sich vielleicht, Ihr Produkt mit weniger Funktionen auf den
Markt zu bringen, oder Sie beziehen eine bestimmte Technologie jetzt von einem anderen Anbieter.
Auch technische Änderungen können bei Iterationen integriert werden. Wenn sich Technologie verändert oder ein neuer
Standard eingeführt wird, können diese Elemente in das Projekt aufgenommen werden. Dies ist besonders dann der Fall,
wenn sich Plattform oder untergeordnete Infrastrukturen ändern.
Die iterative Methode sorgt für eine stabilere Architektur, weil Fehler über mehrere Iterationen korrigiert werden
können. Unstimmigkeiten werden bereits früh erkannt. Leistungsengpässe können vermieden werden und werden nicht erst in
der Nacht vor der Produktauslieferung ersichtlich.
Beim iterativen Entwickeln wird, anders als bei der einmaligen Ausführung von Tests bei Projektende, das Produkt
wesentlich intensiver getestet. Kritische Funktionen werden in verschiedenen Iterationen getestet; so können auch die
Tests selbst und die Testsoftware weiter entwickelt werden.
Entwickler bilden sich im Verlauf des Projekts weiter und die verschiedenen Kompetenzen und Kenntnisse können während
des Produktlebenszyklus effektiver genutzt werden.
Statt lange auf Pläne zu warten und ihre Kenntnisse zu vertiefen, fangen die Tester in einem frühen Stadium des
Projekts mit dem Testen an; auch die Dokumentation wird früh erstellt. Es ist frühzeitig während der
Iterationsauswertung erkennbar, ob zusätzliches Training oder externe Mitarbeiter erforderlich werden könnten.
Der Prozess selbst kann während seiner Entwicklung verbessert werden. Die Auswertung am Ende jeder Iteration prüft
nicht nur den Projektstatus von einer Zeitplanperspektive, sondern analysiert auch, was in Organisation und Prozess
verändert werden muss, damit die nächste Iteration besser läuft.
Iterative Lebenszyklen erleichtern die Wiederverwendung von Komponenten. Es ist einfacher, allgemeine Komponenten zu
identifizieren, wenn sie teilweise entworfen oder implementiert sind. als alle Gemeinsamkeiten zu Beginn des Projekts
festzulegen.
Das Identifizieren und Entwickeln wiederverwendbarer Komponenten ist schwierig. Anhand von Designprüfungen in frühen
Iterationen können Softwarearchitekten unerwartete Fälle möglicher Wiederverwendbarkeit identifizieren und bei späteren
Iterationen diesen Code weiter entwickeln.
Die iterative Methode erleichtert auch die Integration von gebrauchsfertigen, kommerziellen Produkten. Sie können in
mehreren Iterationen ausgewählt, integriert, geprüft und angepasst werden.
|