WikiDer > Iterative Anwendungsentwicklung

Iterative application development

Iterative Anwendungsentwicklung (IAD) ist ein Softwareentwicklungsmethode die Nutzer und Designer als gleichberechtigte Partner sieht. Das Ich steht für das Entwickeln in Wiederholungen (iterativ), zusammen mit dem Benutzer (interaktiv) und sukzessive zu einer höheren Benutzerfreundlichkeit (inkrementell).

IAD

In der Vergangenheit wurden mehrere Entwicklungsmethoden entwickelt und in der Praxis erprobt. Methoden müssen sicherstellen, dass die Entwicklung eines Systems reibungslos abläuft.

IAD beschreibt eine Methode, bei der ein Projekt in relativ kleine Schritte unterteilt wird. Diese Teile werden unabhängig voneinander entwickelt, die Entwicklungszeit hängt von der Größe des Teils ab, nach der Entwicklung ist es möglich, dass das Teil sofort verwendbar ist. Jedes Teil ist ein sogenanntes Pilot. Durch die Anwendung dieser Methode wird es unter anderem möglich, ein großes Projekt mit einem großen Personenkreis durchzuführen. Teams können parallel einen Piloten entwickeln, während der „Einführungsphase“ werden die Piloten zu einem nutzbaren Produkt zusammengeführt.

Der Entwicklungszyklus (a Wiederholung) besteht aus drei Phasen, die wiederholt durchgeführt werden: Definitionsstudie, Pilotentwicklung und Implementierung. Jeder Zyklus erzeugt einen Piloten. Die Tatsache, dass ein Pilot ein kleiner Teil ist, bedeutet, dass er nur einen Teil der gesamten (und möglicherweise noch unbekannten) Systemanforderungen abdeckt. Alle Systemvoraussetzungen werden erst im letzten Piloten erfüllt. Am Ende jedes Zyklus wird ein nützliches Ergebnis bereitgestellt. Es wird häufig mit den Anwendern und dem Auftraggeber kommuniziert, ob diese noch zufrieden sind, ob neue Anforderungen vorliegen oder ob Probleme erkennbar sind. Dies bietet einen wichtigen Vorteil: Anpassungen können jederzeit an die Bedürfnisse des Kunden angepasst werden. Auf diese Weise versuchen wir ein optimales Ergebnis für den Kunden zu erzielen.

Es gibt vier verschiedene Varianten der Entwicklung. Welche Variante geeignet ist, hängt von der Organisation und dem Endprodukt ab. Dies hängt von der Komplexität des Systems, der Stabilität der Systemanforderungen und davon ab, ob die Notwendigkeit einer schnellen Lieferung vorliegt oder nicht.

Die verschiedenen Varianten sind: evolutionäre Entwicklung, inkrementelle Bereitstellung, inkrementelle Entwicklung und Big-Bang-Implementierung.

Bei der evolutionären Entwicklung werden alle drei Phasen iterativ durchlaufen. Das System wird Schritt für Schritt zum gewünschten Endergebnis entwickelt. Was das Ergebnis sein wird, ist am Anfang oft noch nicht im Detail bekannt, aber bei dieser Variante entwickelt sich die Einsicht mit.

Bei der inkrementellen Lieferung ist beabsichtigt, dass zunächst alle Anforderungen vollständig beschrieben werden. Das System wird dann in iterativen Phasen entwickelt. Die erste Phasendefinitionsstudie wird daher einmalig durchgeführt. Dies steht im Gegensatz zur evolutionären Entwicklung, bei der diese Phase genauso oft durchgeführt wird wie die Pilotentwicklungs- und Implementierungsphase.

In der inkrementellen Entwicklung (Schnelle Anwendungsentwicklung) wird davon ausgegangen, dass die Systemvoraussetzungen und das Systemkonzept vorab beschrieben wurden. Danach wird das System in mehreren Iterationen weiterentwickelt, wonach das Ergebnis in einem Rutsch eingetragen wird.

Beim Big-Bang-Einstieg wird das System wie bei der evolutionären Entwicklung iterativ weiterentwickelt. Die Einführung wird jedoch erst nach Abschluss des letzten Piloten erfolgen, etwa bei der inkrementellen Entwicklung. Die ersten beiden Phasen, eine Definitionsstudie und die Entwicklung von Pilotprojekten, werden iterativ durchgeführt. Die letzte Phase der Einführung wird einmal abgeschlossen.

Leistungen

Durch die Verwendung von IAD können eine Reihe von Vorteilen erreicht werden. Dafür gibt es natürlich Bedingungen. IAD ist beispielsweise stark auf eine gute Beteiligung und Kommunikation zwischen Entwicklern und Benutzern angewiesen.

  • Es gibt eine große (er) Beteiligung von Benutzern und Kunden. So können Missverständnisse aufgrund von Meinungsverschiedenheiten zwischen Entwicklern und Anwendern schnell ausgeräumt werden. Da es schneller zu einem "greifbaren" Ergebnis kommt, können Benutzer auch leichter spezifische (mehr) Anforderungen stellen.
  • Durch das schnelle Sehen von "greifbaren" Ergebnissen gewinnen Benutzer und Kunde mehr Vertrauen in ein gutes Endergebnis.
  • Da ein Teil des Systems nach jedem Zyklus von den Anwendern und Kunden sofort genutzt werden kann, werden sie explizit in den Entwicklungsprozess eingebunden und gewöhnen sich während der Entwicklung an das System.
  • Risiken können besser durch die Entwicklung kleinerer Teile gesteuert werden. Engpässe kommen so schnell ans Licht.
  • Komplexe Systeme werden übersichtlicher und einfacher zu implementieren, weil wir Schritt für Schritt an einem Gesamtergebnis arbeiten, ohne erst ein komplettes Design zu erstellen.
  • Am Ende jeder Iteration steht ein brauchbares Produkt, auch wenn die Weiterentwicklung eingestellt wird. Mit einer linearen Methode wäre oft nichts Brauchbares entstanden.
  • Veränderungen in der Organisation können schneller in den Entwicklungsprozess einfließen.

Nachteile

Es gibt natürlich auch Nachteile. Einige Nachteile:

  • Da Anforderungen während des Entwicklungsprozesses angepasst und verfeinert werden, kann der ursprüngliche Zweck verschwimmen. Dann kann es passieren, dass es weiter angepasst wird und nie fertig wird. Das ist sog Umfangskriechen.
  • Projektmanager, die an eine lineare Entwicklung gewöhnt sind, können von der großen Dynamik verwirrt werden.
  • Eine schnelle Entwicklung hat aufgrund der großen Dynamik das Potenzial, die Organisation und ihre Ressourcen zu belasten.
  • Unerfahrenheit mit der Arbeitsweise kann zu Enttäuschungen und Missverständnissen führen.

Entwicklung

Wie bereits beschrieben, werden im IAD eine Reihe von Aktivitäten durchgeführt, wobei das Arbeiten nach einer iterativen Methode eine Reihe von Vorteilen bietet.

Die Komplexität des zu lösenden Problems sinkt, da immer nur ein Teil des Problems angegangen wird.

Konkretere Ergebnisse werden schnell geliefert. Dies erleichtert es, Feedback einzuholen oder dringende Engpässe durch Diskussion zu lösen.

Da nach jedem Zirkel Ziele, Anforderungen, Lösungen und die verfolgte Strategie besprochen und gegebenenfalls angepasst werden können, wird die Flexibilität in einem sich schnell ändernden Projektumfeld geschaffen.

Durch die Aufteilung des zu entwickelnden Systems in Teile, die iterativ nacheinander entwickelt werden, kann die maximale Rendite aus dem eingesetzten Aufwand erzielt werden.

Risiken können besser gemanagt werden, indem die Produkte nach jeder Iteration bewertet werden.

Phasen und Aktivitäten

Ladmodel.svg

Die Entwicklung eines Systems besteht aus drei Phasen; Definitionsphase, Pilotentwicklung und Implementierung. Diese Phasen werden nacheinander für jeden Piloten abgeschlossen, der Teil des Systems wird. Später werden alle Teile zu einem System zusammengeführt.

Definitionsstudie

In der ersten Phase werden die Ziele des zu gestaltenden Systems untersucht und beschrieben. Es listet auch die Einschränkungen und Voraussetzungen auf. Wenn ein Pilot bereits abgeschlossen wurde, wird der Pilot in dieser Phase evaluiert. In dieser Phase stellt die Anpassung und Weiterentwicklung des endgültigen Systems einen wichtigen Beitrag dar. Mit jedem Zyklus der Entwicklung des Systems wird der endgültige Plan weiter ausgearbeitet und detailliert. Damit wird der Wunsch, wie das System aussehen soll, immer deutlicher.

Pilotentwicklung

Nachdem klar ist, wie ein Pilot aussehen soll, wird mit der Pilotentwicklung begonnen. Ein Pilot oder wenn mehrere Piloten parallel behandelt werden, können mehrere Piloten gleichzeitig ausgeführt werden. In dieser Phase findet die Entwicklung der Pilotentwicklung statt und es werden Pilotdesignworkshops durchgeführt.

Während des Pilotdesigns Werkstätten die globalen funktionalen Spezifikationen des im Bau befindlichen Piloten werden untersucht. Aus dem endgültigen System wird ein Prototyp hergestellt, Teile des Piloten oder der Piloten werden dann von einem oder mehreren Entwicklungsteams, sogenannten A-Teams, gebaut. Während dieser Arbeiten sind Budget und Zeitplan straff geplant und können nicht verändert werden. Um sicherzustellen, dass Piloten in anderen Piloten wiederverwendet werden können, bedarf es einer durchdachten Softwarestruktur. Wenn dies realisiert ist, können qualitativ hochwertige und aufeinander abgestimmte Produkte schnell geliefert werden.A-Teams sind kleine Gruppen gut zusammenarbeitender Profis mit jeweils eigener Spezialisierung und können in allen Phasen der Entwicklungszyklen arbeiten. Umgekehrt arbeiten an der Entwicklung beteiligte Benutzer in U-Teams.

Einführung

Nachdem der Pilot in der vorherigen Phase entwickelt wurde, wird er in der Implementierungsphase operativ gemacht und in die Organisation eingeführt. Um sicherzustellen, dass die Erfahrungen aus dem Pilotprojekt in nachfolgende Pilotprojekte einfließen, muss sichergestellt werden, dass Informationen effektiv gesammelt und gespeichert werden können.