Start arrow Iteration X
Iteration X

Iteration - Vorgehensmodell

In dieser Grafik ist der Ablauf einer beliebigen Iteration x im Entwicklungsprozess abgebildet. Dabei ist der geplante Workflow mit einem schwarzen Pfeil gekennzeichnet. Rückkopplungen aus den verschiedenen Phasen der Iteration sind mit grauen Pfeilen gekennzeichnet.

Zu Beginn wird der Task für diese Iteration in einer Analysephase genauer durch das Team oder den Entwickler analysiert, wobei es für die Individuen in der Rolle des Entwicklers jederzeit möglich sein muss Rückfragen an den Kunden zu stellen. Bei kleinen Entwicklungsprojekten können diese Rückfragen mit persönlichen Gesprächen gelöst werden. Bei großen Projekten müssen jedoch andere Kommunikationskanäle vom einzelnen Entwickler in einem Teilteam zum Kunden gewählt werden. Das gleiche Problem tritt bei großen Projekten im Zusammenhang mit dem Feedback vom Kunden an die Entwickler auf.

Die Rolle des Team- Leaders ist für diese Art von Projekten vorgesehen. Diese Rolle soll dabei als Schnittstelle zwischen einem Teilteam und dem Kunden dienen, wobei Anfragen der Entwickler an den Kunden sowie das Feedback vom Kunden an die Entwickler weitergeleitet werden müssen.

Wenn die Aufgaben des Tasks und daher die einzelnen zu bearbeitenden Anforderungen an das System durch das Entwicklerteam erfasst und weiter ausspezifiziert wurden, kann mit dem Design der zu realisierenden Aufgaben begonnen werden. In dieser Phase wird ein Konzept geformt wie der Task als Feature in das System integriert werden soll, wobei die Vorgaben der Architektur des Gesamtsystems berücksichtigt werden müssen. Daher wird in dieser Phase beispielsweise der Algorithmus ausgewählt, der zur Lösung einer konkreten Aufgabe verwendet werden soll.

Sobald das Design der Softwarekomponente abgeschlossen wurde kann mit der Implementierung, daher mit dem Schreiben von Sourcecode begonnen werden. Wenn während der Implementierung Fehler im Konzept der Softwarekomponente oder nicht spezifizierte Anforderungen identifiziert werden, erfolgt eine Rückkopplung in die Analyse-Phase, in welcher das Problem oder die Anforderung genauer analysiert wird.

Bei Rückkopplungen wie dieser, wird der Workflow ab dieser Phase wieder entsprechend dem weiteren Verlauf fortgesetzt. Daher würde in diesem Beispiel die Design- Phase als nächste Phase im Entwicklungsprozess durchgeführt werden. Nben dieser Rückkopplung in die Analysephase kann aus der Implementierungsphase jederzeit in das Refactoring gewechselt werden, wenn dies als sinnvoll erachtet wird.

Da der Refactoring- Prozess Auswirkungen auf das gesamte Design der Softwarekomponente haben kann, muss aus dieser Phase auch eine Rückkopplung auf die Design- Phase möglich sein. Sollte diese Rückkopplung nicht erforderlich sein, wird nach dem Refactoring Prozess wieder die Implementierungsphase erreicht, in welchem die Fertigstellung der Softwarekomponente forciert wird. Nach dem Abschluss der Implementierungsarbeiten muss die entwickelte Softwarekomponente auf deren Funktionalität hin in einer Testphase verifiziert werden. Wenn im Testkonzept, welches in der Projektdesign- Phase des Vorgehensmodells definiert wurde, Komponententests für die Entwicklung festgelegt wurden, kann das Feature auf der Basis dieser automatisierte Tests verifiziert werden. Wurden keine Komponententests im Testkonzept des Projektes vorgesehen, muss die entwickelte Softwarekomponente auf einem anderen Weg, wie beispielsweise manuell durch den praktischen Einsatz der entwickelten Features, auf Fehler überprüft werden.

Wenn diese Tests einen Fehler in der entwickelten Softwarekomponente identifizieren, dann müssen diese durch eine Rückkopplung auf die Implementierungsphase eliminiert werden. Sollte es sich dabei um konzeptionelle Fehler handeln, daher um eine Fehlinterpretation der Anforderungen, kann auch eine Rückkopplung auf die Analysephase erfolgen. Wenn der Bug auf eine fehlerhafte oder ungünstige Implementierung der Anforderungen zurückgeführt wird, kann auch von der Testphase direkt in die Refactoring- Phase gewechselt werden.

Die Integrationsphase ist die letzte der Phasen innerhalb einer Iteration im Entwicklungsprozess und wird mit dem Abschluss der Testphase erreicht. In dieser Phase werden die in der Iteration entwickelten Features in das Gesamtsystem integriert, wobei diese Integrationsphase, ähnlich wie im Extreme Programming, erst dann als abgeschlossen angesehen wird, wenn alle Features des Gesamtsystems nach der Integration weiterhin fehlerfrei funktionieren. Diese Überprüfung des Gesamtsystems kann auf der Grundlage von Komponententests relativ schnell und kostengünstig durchgeführt werden.

Wenn keine Komponententests im Testkonzept des Projektes vorgesehen wurden, bietet sich die Verwendung von Referenztestfällen für die Überprüfung der Funktionalität der Hauptfeatures des Gesamtsystems als Lösung an.

Sollten bei der Integration der Features konzeptionelle Fehler in den entwickelten Softwarekomponenten identifiziert werden, kann aus der Integrationsphase dieser Iteration wieder in die Analyse- Phase gewechselt werden, in welcher die Fehler weiter analysiert werden.

Wenn die Integration erfolgreich durchgeführt wurde, ist die aktuelle Iteration abgeschlossen und das Team oder der Entwickler steht wieder für die Zuteilung zu einer anderen Iteration zur Verfügung.

Mit dem Abschluss einer Iteration, kann ein neues Release gebildet werden, auf dessen Grundlage weiter Anforderungen erhoben werden können. Dies ist jedoch nur sinnvoll wenn diese Iteration für den Kunden nachvollziehbare Änderungen am Gesamtsystem realisiert.

Auf der Basis dieser Anforderungen kann ein weiterer Durchlauf in diesem Zyklus des Vorgehensmodells begonnen werden. Dieser Zyklus wird so lange fortgesetzt, bis alle geplanten Iterationen und damit alle geplanten Tasks in das Gesamtsystem integriert wurden und der Kunde keine weiteren Anforderungen an das System mehr besitzt. Sollte dieser Punkt innerhalb der Projektimplementierungsphase erreicht werden, kann in die nächste Projekt- Phase, die Projektnachbearbeitungsphase, gewechselt werden.