Iterative Softwareentwicklung – eine kurze Einführung

Iterative Softwareentwicklung ist kein einzelnes „Ding“, sondern eine Idee oder Theorie, die den Ansatz zur Softwareentwicklung beschreibt. Viele Webseiten und Artikel sprechen über den Unterschied zwischen iterativer und inkrementeller Softwareentwicklung, aber die beiden Konzepte schließen sich nicht unbedingt gegenseitig aus.

Natürlich ist es wichtig zu beachten, dass iterative Softwareentwicklung aus zwei Perspektiven betrachtet werden kann: entweder aus der Sicht des Entwicklers oder aus der Sicht des Teamleiters. Beide bieten einen wesentlichen und legitimen Blickwinkel, doch sie unterscheiden sich und sind einzigartig.

Heutzutage ist es selten, dass nur einer dieser Prozesse verwendet wird. Die meisten Softwareentwickler, einschließlich jener, die sich als Verfechter der iterativen Entwicklung sehen, verwenden wahrscheinlich eine Kombination aus beiden Ansätzen. Iterative Softwareentwicklung konzentriert sich auf Schritte oder Phasen der Softwareentwicklung. Eine Möglichkeit, dies zu beschreiben, ist, dass eine Funktion oder Komponente nicht in einem Durchgang fertiggestellt wird. Anders gesagt: Man codiert, holt sich Feedback, codiert weiter, holt sich erneut Feedback und so weiter.

Eine breitere Beschreibung des Prozesses ist, dass eine Iteration ein kurzer Zeitraum ist, der ein bis zwei Wochen oder sogar drei bis sechs Wochen dauern kann, in dem das Softwareentwicklungsteam eine neue Idee – sei es eine Kundenanforderung oder eine Benutzerstory – umsetzt, also in getestete, laufende Software verwandelt. Während dieses Zeitraums finden viele Dinge statt: Design, Tests, Analysen, Programmierung, Feedback usw. Dies unterscheidet sich leicht von der inkrementellen Entwicklung, und in der Praxis hängt es davon ab, wie das Entwicklungsteam den Prozess für sich selbst sieht. Mit anderen Worten, die Begriffe iterative und inkrementelle Softwareentwicklung schließen sich nicht gegenseitig aus.

Der Vorteil der iterativen Softwareentwicklung, oder zumindest des iterativen Ansatzes, besteht darin, dass sich die Entwicklungsphasen überlappen können. Das bedeutet, dass man während des End-to-End-Tests bereits mit der Vorbereitung neuer Anforderungen beginnen kann. Das bedeutet im Wesentlichen, dass eine Version, sobald sie fertiggestellt ist, getestet und einem Überprüfungsprozess unterzogen werden kann, dessen Ergebnisse dann in eine neue Version (Iteration) der Komponente umgewandelt oder neu aufgebaut werden.

Was sind also die praktischen Vorteile der iterativen Softwareentwicklung? Zum einen ermöglicht es bei korrekter Umsetzung die Messung des Fortschritts und hält die Planung einfach und zuverlässig.

Wie funktioniert das? Indem Programmieraufgaben nicht im Voraus geplant werden, ist das Team oder die Person gezwungen, für jede Iteration (Zeitraum) zu planen, was erledigt wird. Dies hilft zudem, mit den sich ständig ändernden Benutzeranforderungen Schritt zu halten. Zweitens, indem man sich strikt an die Iterationspläne hält, wird sofort ersichtlich, ob eine Aufgabe möglicherweise nicht rechtzeitig abgeschlossen wird. In diesem Fall ist es einfach, eine neue Schätzung vorzunehmen oder Aufgaben zu entfernen oder anzupassen.

Was besonders wichtig ist, ist, den Fokus auf den Abschluss der wesentlichen Aufgaben zu legen – die Aufgaben, die von Ihren Kunden definiert werden – im Gegensatz zu möglicherweise unvollständigen Aufgaben, die von den Entwicklern ausgewählt wurden.

Dies ist in aller Kürze ein Einblick in die Ziele und Zwecke der iterativen Softwareentwicklung.