Im Iterativen Modell beginnt der iterative Prozess mit einer einfachen Implementierung eines kleinen Satzes der Softwareanforderungen und verbessert iterativ die sich entwickelnden Versionen, bis das komplette System implementiert und bereit für den Einsatz ist.
In einem iterativen Lebenszyklusmodell wird nicht versucht, mit einer vollständigen Spezifikation der Anforderungen zu beginnen. Stattdessen beginnt die Entwicklung mit der Spezifikation und Implementierung eines Teils der Software, die dann überprüft wird, um weitere Anforderungen zu ermitteln. Dieser Prozess wird dann wiederholt, wobei am Ende jeder Iteration des Modells eine neue Version der Software entsteht.
Iteratives Modell – Design
Der iterative Prozess beginnt mit einer einfachen Implementierung einer Teilmenge der Softwareanforderungen und verbessert iterativ die entstehenden Versionen, bis das vollständige System implementiert ist. Bei jeder Iteration werden Änderungen am Design vorgenommen und neue funktionale Fähigkeiten hinzugefügt. Der Grundgedanke dieser Methode besteht darin, ein System durch wiederholte Zyklen (iterativ) und in kleineren Teilen zu einem bestimmten Zeitpunkt (inkrementell) zu entwickeln.
Die folgende Abbildung ist eine Darstellung des iterativen und inkrementellen Modells –
Iterative und inkrementelle Entwicklung ist eine Kombination aus iterativem Design oder iterativer Methode und inkrementellem Entwicklungsmodell. „Bei der Softwareentwicklung können mehrere Iterationen des Softwareentwicklungszyklus gleichzeitig ablaufen.“ Dieser Prozess kann als „evolutionärer Erwerb“ oder „inkrementeller Build“-Ansatz beschrieben werden.“
In diesem inkrementellen Modell wird die gesamte Anforderung in verschiedene Builds aufgeteilt. Während jeder Iteration durchläuft das Entwicklungsmodul die Phasen Anforderungen, Design, Implementierung und Test. Jede nachfolgende Version des Moduls fügt der vorherigen Version Funktionen hinzu. Der Prozess wird so lange fortgesetzt, bis das komplette System gemäß den Anforderungen fertig ist.
Der Schlüssel zum erfolgreichen Einsatz eines iterativen Softwareentwicklungszyklus ist die rigorose Validierung der Anforderungen und die Verifizierung & der einzelnen Softwareversionen anhand dieser Anforderungen in jedem Zyklus des Modells. Während sich die Software in aufeinanderfolgenden Zyklen weiterentwickelt, müssen die Tests wiederholt und erweitert werden, um jede Version der Software zu verifizieren.
Iteratives Modell – Anwendung
Wie andere SDLC-Modelle hat auch die iterative und inkrementelle Entwicklung einige spezifische Anwendungen in der Softwareindustrie. Dieses Modell wird am häufigsten in den folgenden Szenarien verwendet –
-
Die Anforderungen an das Gesamtsystem sind klar definiert und verstanden.
-
Die Hauptanforderungen müssen definiert werden; einige Funktionalitäten oder gewünschte Erweiterungen können sich jedoch mit der Zeit entwickeln.
-
Es besteht eine zeitliche Beschränkung auf den Markt.
-
Eine neue Technologie wird verwendet und vom Entwicklungsteam während der Arbeit am Projekt erlernt.
-
Ressourcen mit den erforderlichen Fähigkeiten sind nicht verfügbar und sollen auf Vertragsbasis für bestimmte Iterationen eingesetzt werden.
-
Es gibt einige risikoreiche Funktionen und Ziele, die sich in Zukunft ändern können.
Iteratives Modell – Vor- und Nachteile
Der Vorteil dieses Modells besteht darin, dass bereits in einem sehr frühen Stadium der Entwicklung ein funktionierendes Modell des Systems vorliegt, was die Suche nach Funktions- oder Designfehlern erleichtert. Das Auffinden von Problemen in einem frühen Entwicklungsstadium ermöglicht es, mit einem begrenzten Budget Korrekturmaßnahmen zu ergreifen.
Der Nachteil dieses SDLC-Modells ist, dass es nur für große und umfangreiche Softwareentwicklungsprojekte geeignet ist. Das liegt daran, dass es schwierig ist, ein kleines Softwaresystem in weitere kleine, brauchbare Inkremente/Module zu zerlegen.
Die Vorteile des iterativen und inkrementellen SDLC-Modells sind folgende –
-
Ein Teil der Arbeitsfunktionalität kann schnell und früh im Lebenszyklus entwickelt werden.
-
Ergebnisse werden früh und regelmäßig erzielt.
-
Parallele Entwicklung kann geplant werden.
-
Fortschritte können gemessen werden.
-
Es ist weniger kostspielig, den Umfang/die Anforderungen zu ändern.
-
Testen und Fehlersuche während kleinerer Iterationen ist einfach.
-
Risiken werden während der Iteration identifiziert und behoben; und jede Iteration ist ein einfach zu verwaltender Meilenstein.
-
Einfacheres Risikomanagement – der Teil mit dem höchsten Risiko wird zuerst erledigt.
-
Mit jedem Inkrement wird ein einsatzfähiges Produkt geliefert.
-
Probleme, Herausforderungen und Risiken, die bei jedem Inkrement identifiziert werden, können für das nächste Inkrement genutzt/angewendet werden.
-
Risikoanalyse ist besser.
-
Sie unterstützt sich ändernde Anforderungen.
-
Anfangs ist die Betriebszeit geringer.
-
Besser geeignet für große und unternehmenskritische Projekte.
-
Während des Lebenszyklus wird die Software früh produziert, was die Bewertung und das Feedback des Kunden erleichtert.
Die Nachteile des iterativen und inkrementellen SDLC-Modells sind folgende:
-
Es können mehr Ressourcen erforderlich sein.
-
Obwohl die Kosten für Änderungen geringer sind, eignet es sich nicht sehr gut für sich ändernde Anforderungen.
-
Es ist mehr Management-Aufmerksamkeit erforderlich.
-
Es können Probleme mit der Systemarchitektur oder dem Design auftreten, da nicht alle Anforderungen zu Beginn des gesamten Lebenszyklus erfasst werden.
-
Die Definition von Inkrementen kann die Definition des gesamten Systems erfordern.
-
Nicht für kleinere Projekte geeignet.
-
Der Managementaufwand ist höher.
-
Das Ende des Projekts ist möglicherweise nicht bekannt, was ein Risiko darstellt.
-
Hochqualifizierte Ressourcen sind für die Risikoanalyse erforderlich.
-
Der Projektfortschritt ist in hohem Maße von der Risikoanalysephase abhängig.