Konzept: Iteration
Dieser Anleitung beschreibt Basiskonzept und Zweck der "Iteration", insbesondere in der Softwareentwicklung.
Beziehungen
Zugehörige Elemente
Hauptbeschreibung

Was ist eine Iteration?

Eine Iteration umfasst die Entwicklungsaktivitäten, die zu einem Produkt-Release führen, einer stabilen, ausführbaren Version des Produkts, sowie alle anderen peripheren Elemente, die für die Verwendung dieses Release erforderlich sind. Eine Entwicklungsiteration ist somit in gewisser Weise ein vollständiger Durchlauf durch alle Disziplinen, mindestens aber ein Durchlauf durch die Disziplinen Anforderungen, Analyse & Design, Implementierung und Test. Sie ist wie in kleines in sich geschlossenes Wasserfallprojekt. Beachten Sie, dass die Bewertungskriterien bei der Planung der Iteration festgelegt werden. Das Release hat eine geplante Funktionalität, die demonstriert werden kann. Die Dauer einer Iteration richtet sich nach der Größe und der Art des Projekts, aber wahrscheinlich werden in jeder Iteration mehrere Builds erstellt. Dies wird im Build-Plan für die Integration jeder Iteration festgelegt. Dass mehrere Builds erstellt werden, ergibt sich aus dem fortlaufenden Integrationsansatz, der in Rational Unified Process (RUP) empfohlen wird: Sobald Komponenten verfügbar werden, die einem Einheitentest unterzogen wurden, werden diese integriert. Anschließend wird ein Build produziert, der dann Integrationstests unterzogen wird. Auf diese Weise nimmt die Funktionalität der integrierten Software mit Fortschreiten der Iteration zu, um schließlich die bei der Planung der Iteration definierten Ziele zu erreichen. Man könnte einwenden, dass jeder Build an sich eine Miniiteration darstellt. Der Unterschied besteht jedoch in der erforderlichen Planung und in der Formalität der durchgeführten Bewertung. In einigen Projekten kann es angemessen und zweckmäßig sein, Builds auf täglicher Basis zu erstellen, aber diese würden gemäß Definition in RUP keine Iterationen darstellen. Die einzige Ausnahme könnten sehr kleine Ein-Man-Projekte bilden. Selbst für kleine Projekte, an denen mehrere Personen beteiligt sind (z. B. fünf Personen, die 10.000 Codezeilen entwickeln), ist es sehr schwierig, eine Iterationsdauer von weniger als einer Woche zu erzielen. Nähere Erläuterungen finden Sie auf der Seite Richtlinie: Softwareentwicklungsplan.

Warum iterieren?

Traditionell werden Projekte so organisiert, dass sie jede Disziplin nacheinander und nur einmal durchlaufen. Dies ergibt den Wasserfalllebenszyklus:

Diagramm, das eine Iteration zeigt, die von der Geschäftsmodellierung zum Deployment führt

Diese Vorgehensweise hat häufig zur Folge, dass sich die Integrationsarbeiten in einem späten Stadium der Implementierung aufhäufen, wenn der erste Build des Produkts erstellt wird und das Testen beginnt. Probleme, die während Analyse, Design und Implementierung verborgen blieben, kommen zum Vorschein, und das Projekt tritt auf der Stelle, weil ein langwieriger Fehlerkorrekturzyklus beginnt.

Eine flexiblere (und weniger riskante) Möglichkeit ist, die verschiedenen Entwicklungsdisziplinen mehrfach zu durchlaufen, ein besseres Verständnis der Anforderungen aufzubauen, eine stabile Architektur zu entwickeln, die Entwicklungsorganisation aufzustocken und letztendlich eine Reihe von Implementierungen bereitzustellen, die nach und nach vollständiger werden. Dies ist ein iterativer Lebenszyklus. Jeder Durchlauf durch die verschiedenen Prozessdisziplinen ist eine Iteration.

Diagramm zeigt drei aufeinander folgende Iterationen, die jeweils von der Geschäftsmodellierung zum Deployment führen

Aus der Entwicklungsperspektive ist der Softwarelebenszyklus eine Abfolge von Iterationen, in denen die Software inkrementell entwickelt wird. Jede Iteration wird mit dem Release eines ausführbaren Produkts abgeschlossen. Dieses Produkt ist möglicherweise nur ein Teil der vollständigen Vision, kann aber aus einer bestimmten Engineering- oder Benutzerperspektive durchaus hilfreich sein. Mit jedem Release gehen unterstützende Arbeitsergebnisse einher: Release-Beschreibung, Benutzerdokumentation, Pläne usw. sowie aktualisierte Modelle des Systems.

Dieser iterative Ansatz hat im Wesentlichen zur Folge, dass die Arbeitsergebnisse, die zuvor beschrieben wurden, mit der Zeit wachsen und reifen. Schauen Sie sich dazu das folgende Diagramm an.

Im Begleittext beschriebenes Diagramm

Weiterentwicklung des Informationssets in den Entwicklungsphasen.

Untergeordneter Meilenstein

Jede Iteration wird mit einem untergeordneten Meilenstein abgeschlossen, an dem das Ergebnis der Iteration in Relation zu den objektiven Erfolgskriterien dieser bestimmten Iteration auswertet wird.