Untersuchungen belegen, dass sich im Laufe eines Jahres 25% der Anforderungen an ein Softwaresystem verändern
(
Dean Leffingwell, Don Widring: "Managing Software Requirements. A Unified Approach", Addison-Wesley 2000).
Die Abwicklung von Projekten im Wasserfall-Modell (Analyse, Design, Realisierung, Test, Inbetriebnahme)
führt dabei fast zwangsläufig zu Termin- und Budgetüberschreitungen.
Iterative, agile Entwicklungsprozesse (z. B.
Rational Unified Process RUP,
eXtreme Programming,
Adaptive Software Development,
Agile Alliance)
bieten Lösungsansätze für die Problemstellungen der heutigen Zeit. In frühen Vorgehensmodellen wurde davon ausgegangen,
dass die Erfüllung oder Einhaltung eines Plans mit der Zufriedenstellung des Kunden gleichzusetzen ist. Der Erfolg eines Projekts
stellt sich einzig und allein durch die gelieferte Software dar. Ein Entwicklungsprozess muss in der Lage sein, auf Änderungen zu reagieren.
Dies gilt nicht nur für veränderte Anforderungen des Kunden, auch der Entwicklungsprozess selbst muss sich den Gegebenheiten anpassen.
Iterative und agile Entwicklungsprozesse zeichnen sich durch folgende Eigenschaften aus:
- kontinuierliche Lieferung von Software mit business value:
das höchste Ziel eines Dienstleisters ist die Zufriedenstellung des Kunden. In der Softwareentwicklung kann dies durch frühzeitige und ständige Lieferung von sinnvoll nutzbarer Software ermöglicht werden. Der Kunde wird frühzeitig in die Lage versetzt, Teile der Software anzuwenden. In kurzen Iterationen (abhängig von Größe und Laufzeit des Projekts) zwischen drei und acht Wochen werden weitere Softwarebausteine in Betrieb genommen. Dieses Vorgehen ermöglicht ein frühes Feedback, Erkenntnisse über weiteres Anwendungspotenzial und es wird der im Wasserfall-Modell übliche Big-Bang vermieden.
- akzeptieren geänderter Anforderungen:
Eine der größten Herausforderungen der heutigen Zeit stellt die Unverhorsagbarkeit der Entwicklung in der "new economy" dar. Änderungen der Technologie und des Business führen zu Turbulenzen, denen man sich verweigern oder sie als Chance betrachten kann. Agile Entwicklungsprozesse haben zur Einsicht geführt, dass es effektiver ist Änderungen anzunehmen, statt sie zu verhindern.
- enge Zusammenarbeit zwischen Kunde und Entwicklungsteam:
Im Wasserfall-Modell wird der Kunde in die Analyse-Phase eingebunden; hier werden die Anforderungen "eingefroren", das Design erstellt, eine Software konstruiert und nach abschließendem Test beim Kunden in Betrieb genommen. Unter Umständen bleibt der Kunden lange Zeit "unbehelligt", bevor dann mit einem Big-Bang eine umfangreiche Software installiert wird. Iterative, agile Entwicklungsprozesse führen zu häufiger Kommunikation zwischen den Beteiligten; dies stärkt das Verantwortungsgefühl des Kunden für das neue System und gibt den Entwicklern zusätzliche Sicherheit in der Umsetzung von Kundenanforderungen.
- funktionierende Software ist das Maß für den tatsächlichen Projektfortschritt:
Mit jeder Iteration wird ein Inkrement, die auszuliefernde Software, erstellt. Das Projekt gelangt frühzeitig zur Erkenntnis, wie sich die weitere Entwicklung des Systems darstellen oder ob das Projekt scheitern wird. Im überholten Wasserfall-Modell gibt es häufig erst kurz vor Auslieferung einer Software ein böses Erwachen.
- gleichmäßige Belastung des Projektteams:
Die IT-Branche ist gekennzeichnet von langen Nächten und Wochenenden, an denen Entwickler versuchen, Fehler, die durch nicht angepasste Planung entstanden sind, zu korrigieren oder in den Griff zu bekommen. Iterative Entwicklung führt zu einer gleichmäßig verteilten Belastung des Teams. Es sollte ein Rhythmus (ca. 40 Stunden/Woche) gefunden werden, der es dem Team ermöglicht eine dauerhaft gute Leistung zu erbringen, denn es sind die Menschen, die ein Projekt zum Erfolg führen.
- regelmäßige Prüfung der Effektivität:
In einem iterativen, agilen Entwicklungsprozess führt das Team regelmäßig Überprüfungen der Effektivität durch. Dabei werden Prozessaktivitäten bewertet und störende Elemente aus dem Prozess herausgenommen oder verändert. Dadurch wird die Zufriedenheit der Mitarbeiter ebenso wie die Effektivität gesteigert.
DEN Entwicklungsprozess für ein Unternehmen kann es nicht geben. Jedes Projekt hat spezielle Eigenschaften, die es einzigartig machen (z. B. Projektteam, Qualitäts- und Performanceanforderungen, Termine, Budget, technologische Herausforderungen, Komplexität der Anwendung, spezielle Risiken etc.). Diese Faktoren spielen bei der Festlegung eines Entwicklungsprozess für ein Projekt eine wichtige Rolle. Abhängig von diesen Faktoren wird der Formalisierungsgrad des Entwicklungsprozesses festgelegt.
applied technologies unterstützt Sie bei der Einführung eines iterativen Entwicklungsprozesses und schneidert Prozessframeworks maßgerecht auf Ihre individuelle Situation zu. Außerdem kann applied technologies das in Ihrem Projekt eingesetzte Verfahren bewerten und Vorschläge zur Risikominimierung unterbreiten.