Iterative Entwicklung

Itera-was? Eine Iteration ist das mehrfache Wiederholen gleicher oder ähnlicher Handlungen, um sich einem Ziel bzw. einer Lösung schrittweise anzunähern. In der Softwareentwicklung versteht man unter Iteration einen einzelnen Entwicklungszyklus, um Teilaufgaben umfangreicher und anspruchsvoller Projekte zu lösen.

Viele Entwicklungsprojekte sind sehr komplex – das macht es schwierig, Anforderungen und Lösungsansätze im Vorfeld und in vollem Umfang zu definieren. Die Komplexität und die damit verbundenen Unklarheiten lassen sich jedoch reduzieren, indem man das große Ganze in kleinere und weniger komplexe Teilaufgaben zerlegt und damit Zwischenergebnisse schafft. Mit diesen Zwischenergebnissen findet man eher zu den fehlenden Anforderungen und Lösungstechniken als durch abstrakte (und oft langwierige) Klärungsphasen vor dem eigentlichen Start der Entwicklung.

Im Gegensatz z. B. zum linearen Wasserfallmodell werden bei der iterativen Entwicklung die einzelnen Phasen im Entwicklungsprozess – Anforderungen / Lastenheft, Systementwurf / Softwarearchitektur, Implementation, Überprüfung / Test – nicht einmal, sondern mehrmals durchlaufen. Somit werden auch die einzelnen Softwarekomponenten iterativ, also schrittweise, verfeinert.

Grundsätzlich ist das am besten geeignete Software-Entwicklungsmodell abhängig vom Kunden und seinen Anforderungen sowie vom Projektumfang.
Da jedoch wie erwähnt insbesondere bei komplexen Projekten zu Projektbeginn noch nicht alle Anforderungen vollständig bekannt sind (beim klassischen V-Modell ist das oftmals einer der Hauptgründe für Verzögerungen bereits in frühen Phasen), empfiehlt sich in vielen Fällen ein iteratives Vorgehen.

Das iterative Entwicklungsmodell bietet mehr Flexibilität und ist zugleich in der Lage, komplexe Aufgabenstellungen in überschaubare Entwicklungsschritte und Arbeitspakete einzuteilen. Das schafft Transparenz und Kostenkontrolle.

Warum entwickelt L&R iterativ?

Zu Beginn vieler Projekte sind die vollständigen Anforderungen an die zu erstellende Software und deren Schnittstellen meistens noch nicht im Detail festgelegt. – Müssen sie aus iterativer Sicht auch nicht zwingend. Mit der schrittweisen Entwicklung kann man flexibel auf neue Anforderungen reagieren und anfangs ggf. nicht bedachte Spezifikationen
leicht(er) integrieren.

Das bedeutet auch: Die Anforderungen entsprechen eher dem tatsächlichen Bedarf.
Vor dem Start der Implementierung werden die Anforderungen dann in einer Konzeptphase verfeinert und im Laufe des Projektes sukzessive angepasst und bei Bedarf erweitert.

Insbesondere komplexe Projekte bergen zudem die Herausforderung, vielfältige Randbedingungen und enge Zeitpläne miteinander zu vereinbaren.
Gerade dann führt gemeinsames, schrittweises Vorgehen in überschaubaren Meilensteinen effektiver zum Ziel.

Wie funktioniert iterative Entwicklung?
  • Die Entwicklung der Software bzw. von Funktionalitäten wird in überschaubare Meilensteine (Iterationsschritte) zerlegt.
  • Die Inhalte der einzelnen Iterationen werden gemeinsam definiert.
  • Jeder Iterationsschritt dauert ca. 4 Wochen und gliedert sich in die Iterationsphasen Festlegung der Anforderungen, Systementwurf, Implementierung und Test.
  • Ca. eine Woche vor dem Ende der laufenden Iteration werden die Anforderungen für den nächsten Meilenstein definiert.
  • Jede Iterationsphase endet mit einem Test.
    Das bedeutet: Mit dem Erreichen eines Meilensteines am Ende einer Iteration ist ein (in Teilen) lauffähiger Stand der Software implementiert.
  • Am Ende jeder Iteration kann der tatsächlich benötigte Aufwand bis zum Projektabschluss neu bewertet werden.

Der Gesamtablauf iterativer Entwicklung sieht also wie folgt aus:

Abbildung Gesamtablauf iterative Entwicklung
Vorteile der iterativen Entwicklung
  • Das iterative (schrittweise) Vorgehen ermöglicht eine möglichst unterbrechungsfreie Entwicklung.
  • Neue Anforderungen lassen sich einfacher in die Entwicklung einbinden.
    Die Software lässt sich also auch noch während der Entwicklung an den tatsächlichen Bedarf anpassen.
  • Auf veränderte Prioriäten kann besser eingegangen werden.
  • Engere Zusammenarbeit zwischen Kunde und L&R durch regelmäßige Feedback-Schleifen.
  • Transparenz durch regelmäßig neu definierte Arbeitspakete.
  • Fortschritte und mögliche Hindernisse eines Projektes werden regelmäßig festgehalten und offensichtlich.
  • Kostenkontrolle durch regelmäßige Neubewertung des noch benötigten Aufwands bis zur Fertigstellung.