Unterschied zwischen iterativer und inkrementeller Entwicklung in Agile

Was ist in der agilen Softwareentwicklung der Unterschied zwischen iterativer und inkrementeller Entwicklung? Sind sie dasselbe? Was ist der Unterschied zwischen diesen beiden Wörtern?

Schauen wir uns zunächst einfache Definitionen der beiden Begriffe an:

Inkrementell - Hinzufügen neuer Funktionen in kleinen Stücken


Iterativ - wiederholtes Durchführen, d. h. Hinzufügen einer neuen Funktionalität in sich wiederholender oder zyklischer Weise

Von Wikipedia ::


Die iterative Entwicklung wurde als Reaktion auf Ineffizienzen und Probleme im Wasserfall entwickelt.

Die Grundidee dieser Methode besteht darin, ein System durch wiederholte Zyklen (iterativ) und in kleineren Abschnitten gleichzeitig (inkrementell) zu entwickeln, damit Softwareentwickler die Erkenntnisse aus der Entwicklung früherer Teile oder Versionen des Systems nutzen können. Das Lernen erfolgt sowohl durch die Entwicklung als auch durch die Verwendung des Systems, wobei mögliche Schlüsselschritte im Prozess mit einer einfachen Implementierung einer Teilmenge der Softwareanforderungen beginnen und die sich entwickelnden Versionen iterativ verbessern, bis das gesamte System implementiert ist. Bei jeder Iteration werden Designänderungen vorgenommen und neue Funktionsfunktionen hinzugefügt.

Bei der inkrementellen Entwicklung wird die Systemfunktionalität in Inkremente (Teile) unterteilt, wobei in jedem Inkrement ein Teil der Funktionalität bereitgestellt wird.

Die ganze Idee besteht darin, den Benutzern eine „funktionierende“ Version einer (jedoch minimalen) Funktion zur Verfügung zu stellen, damit wir frühzeitig Feedback erhalten können. Vergleichen Sie dies damit, dass Sie einige Monate lang eine voll funktionsfähige Funktion erstellen müssen, um herauszufinden, dass das, was erstellt wurde, nicht den Anforderungen der Benutzer entspricht.


Iterative und inkrementelle Entwicklung

Sehen wir uns ein Beispiel an, wie iterative und inkrementelle Entwicklung und Bereitstellung in einem agilen Kontext funktionieren.

Angenommen, Sie möchten einer Website eine neue Anmeldefunktion hinzufügen, und Sie möchten diese mithilfe einer agilen Methodik entwickeln, die in zweiwöchigen Bereitstellungszyklen (Iterationen) ausgeführt wird.

Erste Iteration:

Das Minimum Eine funktionierende Version der Anmeldefunktion, die es wert ist, an Benutzer geliefert zu werden, wäre


  • Erstellen Sie eine Webseite, auf der den Benutzern das Anmeldeformular angezeigt wird
  • Fügen Sie ein Anmeldeformular mit nur zwei Feldern (Benutzername und Passwort) und einer Anmeldeschaltfläche hinzu, d. H. Nur ein normales HTML-Formular mit nicht Styling oder Validierung
  • Erstellen Sie eine Begrüßungsseite, damit Benutzer sich anmelden, wenn sie sich anmelden.

Dies ist die erste Version (funktionsfähig, aber in der Funktionalität eingeschränkt) der in Iteration 1 gelieferten Software. Diese grundlegende Anmeldefunktion wurde entworfen, entwickelt und getestet und am Ende der Iteration bereitgestellt.

Zweite Iteration:

In der nächsten Iteration möchten wir die Anmeldefunktionalität der letzten Iteration verbessern. Wir können uns dazu entschließen

  • Erstellen Sie Validierungsregeln für Eingabeparameter
  • Fügen Sie etwas CSS hinzu, damit das Anmeldeformular hübsch aussieht
  • Zeigen Sie eine Nachricht an, wenn der Benutzer versucht, sich mit ungültigen Anmeldeinformationen anzumelden

Jetzt haben wir neue und erweiterte vorhandene Funktionen hinzugefügt. Mit anderen Worten, wir haben erhöht die vorhandene Anmeldefunktion, und wir haben dies in dieser Iteration getan.


Dritte Iteration:

In Iteration drei können wir unsere Anmeldefunktionalität erneut erhöhen, indem wir hinzufügen

  • Passwort vergessen Funktionalität
  • Kontrollkästchen 'Erinnere dich an mich'
  • Umleitungsmechanismus zum Umleiten zu geeigneten Seiten, wenn sich Benutzer anmelden (und nicht nur zu einer Begrüßungsseite, die in der ersten Iteration entwickelt wurde)

Wie Sie sehen, haben wir in jeder Iteration die Anmeldefunktionalität erweitert, indem wir neue nützliche Funktionen für die Benutzer hinzugefügt haben. Auf diese Weise erhalten wir schnelles Feedback von den Benutzern, sodass wir deren Funktionalität hinzufügen oder verbessern können.

Über eine Reihe von Iterationen liefern wir endlich die vollständige Lösung.