- Inkrementelles Vorgehensmodell
-
Das inkrementelle Vorgehensmodell beschreibt einen Prozess der kontinuierlichen Verbesserung, welcher häufig in kleinen oder sogar kleinsten Schritten vollzogen wird. Viele freie Projekte und Wikis arbeiten nach diesem Prinzip.
Inhaltsverzeichnis
Besonderheiten
Bei der inkrementellen Verbesserung steht der Endzustand in der Regel nicht fest. Das Projekt wächst organisch.
Inkrementelles Vorgehensmodell in der Softwareentwicklung
Iterative und Inkrementelle Entwicklung ist ein zyklischer Software Entwicklungsprozess, der inzwischen auch in anderen Projektbereichen erfolgreich eingesetzt wird. Der Begriff „iterative Entwicklung“ wird meistens mit Referenz auf den kombinierten Ansatz verwendet.
Definition von Inkrementell und Iterativ
Inkrementelle Entwicklung ist eine Strategie zur Termin- und Ablaufplanung, in der die verschiedenen Teile des Systems zu unterschiedlichen Zeiten und mit verschiedenen Geschwindigkeiten entwickelt und umgehend im Gesamtsystem integriert werden. Das Gegenbild ist eine gleichzeitige, sog. Big-Bang-Integration aller Teilsysteme zum Abschluss des Projekts.
Iterative Entwicklung ist eine Strategie zur Überarbeitungsplanung, die Zeit für laufende Revision und Verbesserung von vorhandenen Teilen des Systems vorsieht. Sie setzt eine inkrementelle Entwicklung nicht voraus, passt aber sehr gut zu ihr. Ein Unterschied ist, dass das Ergebnis eines inkrementellen Arbeitsschritts nicht notwendigerweise Gegenstand weiterer Überarbeitung ist, noch dienen Ergebnisse aus Tests und Benutzerreaktionen als Vorgabe für nachfolgende Arbeitsschritte. Das Ergebnis einer Iteration hingegen wird auf notwendige Änderungen untersucht, vor allem hinsichtlich einer Anpassung der Ziele späterer Iterationen.
Der Grundgedanke hinter iterativer Überarbeitung ist es, ein Softwaresystem dergestalt schrittweise zu entwickeln, dass das Projektteam in die Lage versetzt wird, Erfahrungen aus vorangegangenen Entwicklungsschritten unmittelbar zu nutzen. Erfahrungen werden gezielt sowohl während der Entwicklung als auch aus der Verwendung des bereits abgeschlossenen Teils des Systems gewonnen.
Die wesentlichen Schritte im Prozess sind
- mit einer einfachen und ausbaufähigen Implementierung einer definierten Untermenge der zu diesem Zeitpunkt bekannten Systemanforderungen anzufangen.
- schrittweise mit zunehmender Kenntnis der sinnvollen Systemanforderungen die sich entwickelnden Versionen bis zur vollständigen Implementierung des Systems auszubauen
- bei jeder Iteration den Entwurf anzupassen - wobei hier zwischen Iterationen zur Implementierung neuer Funktionen und Iterationen zur Verbesserung der Systemarchitektur (Refactoring) zu unterscheiden ist
Die Prozedur selbst besteht aus einem Initialisierungsschritt, einem Iterationsschritt, und der Projektkontrollliste.
- Der Initialisierungsschritt schafft eine Basisversion des Systems mit dem Ziel, ein Produkt zu schaffen, auf das der Benutzer reagieren kann. Es sollte eine Stichprobe wesentlicher Gesichtspunkte des Problems abdecken und eine Lösung bieten, die leicht verstanden und umgesetzt werden kann.
- Für die Steuerung des Iterationsprozesses wird eine Projektkontrollliste geführt, in der alle bekannten ausstehenden Aufgaben aufgezeichnet werden. Sie beinhaltet Posten wie z.B. die Implementation neuer Features und den Neuentwurf bestehender Systemteile. Die Kontrollliste wird anhand der Ergebnisse der Analysephasen ständig überarbeitet.
- Jede Iteration beinhaltet die Umsetzung eines Postens oder einer definierten Gruppe von Posten aus der Projektkontrollliste und die Analyse der aktuellen Version des Systems. Bei der Umsetzung jedes Iterationsschritts ist das Ziel Einfachheit, Überschaubarkeit und Modularität, ob unmittelbar oder als Posten auf der Kontrollliste. Die Analyse einer Iteration beruht auf Benutzerfeedback und Programmanalyseverfahren. Sie untersucht die Struktur, Modularität, Benutzbarkeit, Zuverlässigkeit, Wirksamkeit und Zielerreichung. Anhand der Ergebnisse wird die Projektkontrollliste angepasst.
Phasen – Richtlinien für die Zeitplanung
Zum Verständnis des Diagramms ist es sehr wichtig zu berücksichtigen, dass die Phasenaufteilung informell betrachtet werden muss. Teile des Systems werden umgehend im Gesamtsystem integriert (ein Deployment findet in jeder Iteration statt). Die Übergangsphase (Transition) überführt das System Endgültig in den Produktiveinsatz. Der schräge Pfeil stellt die sequentielle Abarbeitung der Schritte dar und verdeutlicht dass Architekten und Analysten im Verhältnis zu den Entwicklern immer einen Schritt voraus arbeiten.
Iterative Entwicklung teilt den Geschäftswert, also die Systemfunktionalität, in Iterationen ein. Bei jeder Iteration wird ein Teilabschnitt der Systemfunktionalität durch interdisziplinäre Arbeit fertig gestellt – beginnend mit dem Entwurf/Anforderungen bis hin zum Testen und der Inbetriebnahme. Der vereinheitlichte Prozess gruppiert die Iterationen in Phasen: Einleitung, Ausarbeitung, Konstruktion, und Übergang. Diese Phasen sind informell anzusehen.
- Die Einleitungsphase ermittelt Projektrahmen, Risikofaktoren und (funktionelle wie nicht-funktionelle) Anforderungen in geringer aber ausreichender Tiefe, um eine grobe Schätzung des Arbeitsaufwandes zu erlauben.
- Die Ausarbeitungsphase liefert eine funktionsfähige Architektur, die die höchsten Risikofaktoren entschärft und die nicht-funktionellen Anforderungen erfüllt.
- Die Konstruktionsphase füllt die Architektur schrittweise mit produktionsreifem Code aus, der durch Analyse, Entwurf, Umsetzung und Prüfung der funktionellen Anforderungen entsteht.
- Die Übergangsphase überführt das System endgültig in den Produktiveinsatz.
Jeder dieser Phasen kann auf eine oder mehrere Iterationen aufgeteilt sein, die meistens eher zeitlich und nicht durch die Umsetzung von Funktionsmerkmalen abgegrenzt sind. Architekten und Analysten arbeiten im Verhältnis zu den Entwicklern immer einen Schritt voraus.
Ein iteratives Vorgehensmodell zur inkrementellen Verbesserung wird durch die Vorgehensweise beim Spiralmodell beschrieben.
Siehe auch
Wikimedia Foundation.