Spiralmodell


Das Spiralmodell (engl.: spiral model) ist ein Vorgehensmodell in der Softwareentwicklung, das als Antwort auf die Nachteile des Wasserfallmodells betrachtet werden kann. Das Spiralmodell beschreibt den Lebenszyklus einer Software anhand von Spiralen, die immer wieder durchlaufen werden, bis das fertige Produkt ausgeliefert werden kann. Das Spiralmodell wird auch als inkrementelles Modell bezeichnet: Es wird kontinuierlich an dem Produkt gearbeitet und Verbesserungen finden häufig in sehr kleinen Schritten statt.

Ein Hauptaugenmerk des Spiralmodells ist die Minimierung von Risiken bei der Softwareentwicklung, die zu steigenden Gesamtkosten, Mehraufwand und einem verspäteten Release führen können. Diesen Risiken wird durch die inkrementelle Vorgehensweise begegnet, indem zunächst Prototypen angefertigt werden, die dann die Spiralen oder Zyklen der Softwareentwicklung mindestens ein Mal durchlaufen. Das Spiralmodell ist zudem generisch und kann mit anderen klassischen und agilen Entwicklungsmethoden kombiniert werden, weshalb es auch als Modell zweiter Ordnung bezeichnet wird.[1]

Allgemeine Informationen zum Thema

Im Jahr 1986 wurde das Spiralmodell von Barry W. Boehm in seinem Aufsatz "A Spiral Model of Software Development and Enhancement" vorgeschlagen. Zu diesem Zeitpunkt wurde das vorherrschende Wasserfallmodell und die damit verbundenen Nachteile häufig diskutiert. Im Gegensatz zu anderen Modellen wie "Code and Fix" oder dem "waterfall model" sei es risiko-getrieben: Die Identifizierung und Lösung von Risiken spielt in unterschiedlichen Projektzyklen eine wichtige Rolle, nachdem die Ziele und Bedingungen festgelegt wurden. Der Fokus liegt auf möglichen Faktoren, die Unsicherheiten für die Software oder das gesamte Projekt bedeuten können. Wenn die Risiken kontrolliert und kostengünstig reduziert werden können, steht dem erfolgreichen Abschluss des Projektes nichts im Wege – so die Annahme. Ansätze, um diese Risiken zu minimieren, sind beispielsweise Prototypen, Simulationen, Benchmarktests oder Interviews mit Anwendern. Bei bestimmten Risikotypen kann das gesamte Vorgehen sogar revidiert und anders strukturiert werden – Eingriffe des Managements sind in jedem Projektzyklus möglich und andere Entwicklungsansätze können adaptiert werden.

Funktionsweise

Das Spiralmodell ist dadurch gekennzeichnet, dass folgende Zyklen (auch Quadranten) mehrmals durchlaufen werden:[2]

  • Ziel- und Alternativenbestimmung: Die Ziele werden gemeinsam mit dem Kunden festgelegt. Zugleich werden mögliche Alternativen besprochen und die Rahmenbedingungen (zum Beispiel Betriebssysteme, Umgebungen, Programmiersprachen) präzisiert.
  • Risikoanalyse- und Evaluierung: Mögliche Risiken werden identifiziert und bewertet. Die in Frage kommenden Alternativen werden ebenfalls evaluiert. Mittels Prototypen, Simulationen und Analysesoftware werden die Risiken erfasst, bewertet und dann reduziert. Schon in diesem Zyklus existieren mitunter mehrere Prototypen als Designvorlagen oder funktionale Komponenten.
  • Entwicklung und Testen: Die Prototypen werden weiter ausgebaut und um Funktionalitäten ergänzt, die das Endprodukt aufgrund der Zielbestimmungen aufweisen sollen. Mehrmals wird der eigentliche Code geschrieben, getestet und auf eine Test Umgebung migriert, bis die Software auf einer Produktivumgebung implementiert werden kann.
  • Planung des nächsten Zyklus: Am Schluss eines jeden Zyklus wird der darauffolgende Zyklus geplant. Falls Fehler auftreten, wird zum Beispiel nach Lösungen gesucht und falls eine Alternative eine bessere Lösung darstellt, wird diese beim nächsten Zyklus bevorzugt.

Die wichtigste Triebfeder des Spiralmodells ist die Risikoanalyse- und bewertung:[3] Jedes Risiko, das das Projekt bedroht, soll schon zu Beginn identifiziert worden sein. Der Fortschritt des Projektes ist maßgeblich davon abhängig, wie die Risiken eliminiert werden können. Erst wenn keine Risiken mehr vorhanden sind, gilt das Projekt als erfolgreich. Das Durchlaufen der Zyklen hat dabei den Zweck, ein kontinuierlich besser werdendes Produkt herzustellen – Die Anwendung, Software oder Applikation wird stetig verfeinert. Das Spiralmodell ist zwar inkrementell, aber nicht unbedingt iterativ. Zu Iterationen kommt es nur dann, wenn Risiken, Fehler oder Konflikte das Projekt bedrohen. Dann muss das Produkt einen Zyklus nochmals durchlaufen, was auch als Iteration bezeichnet wird.

Vorteile/Nachteile

  • Zum Einsatz kommt das Spiralmodell häufig bei größeren Projekten, die mit Risiken behaftet sind. Da diese Risiken direkte monetäre Auswirkungen haben, ist eine Kontrolle des Budgets für Auftraggeber und Entwicklerfirmen zentral. Insbesondere in neuen technischen Umgebungen wird das Spiralmodell verwendet, da diese ein Risiko darstellen.[4]
  • Konflikte zwischen den Anforderungen an eine Software und deren Design werden durch den zyklischen Ansatz effektiv vermieden, da die Anforderungen ständig überprüft und gegebenenfalls verändert werden können.[5]
  • Schon in frühen Projektphasen kann Feedback von Anwendern, Entwicklern und Auftraggebern eingeholt werden. Diese Struktur macht allerdings auch ein Management notwendig, das die Zyklen des Produkts im Blick hat und auf Risiken umgehend reagieren kann. Die Steuerung solcher Projekte ist deshalb relativ komplex und erfordert ebenfalls eine gute Dokumentation, damit alle Veränderungen festgehalten werden.[6]
  • Zwar wird in dem Zyklus Entwicklung und Testen die Software unter verschiedenen Gesichtspunkten (Unit-, Acceptance- und Integration-Test) getestet, aber es kommt offenbar häufig vor, dass Prototypen in das Produktivsystem überführt werden. Somit besteht die Gefahr, dass andere Fehler und konzeptionelle Ungereimtheiten in das spätere Endprodukt gelangen.[7]
  • An Stellen, an denen Entscheidungen über folgende Zyklen getroffen werden, besteht das Risiko, dass sich sogenannte Loops (deutsch: Schleifen) bilden und das Projekt länger dauert, wenn falsche Entscheidungen getroffen wurden. Aus diesem Grund sind die Alternativen und deren Evaluierung wichtig.

Bedeutung für Programmierung

Im Gegensatz zu einem sequentiellen Modell (zum Beispiel das Wasserfallmodell), das in aufeinanderfolgenden Phasen angeordnet ist, skizziert das Spiralmodell den Lebenszyklus einer Software anhand von Spiralen, die durchlaufen werden müssen. Somit ähnelt dieser Ansatz dem Prototyping mehr als dies bei klassischen Ansätzen der Fall ist. Das Spiralmodell sollte die Nachteile anderer Modelle vermeiden und die Vorteile betonen. Durch den Fokus auf die Minimierung von Risiken erhält das Modell eine finanzielle Komponente, die gerade für Entscheider eine Rolle spielen kann: Mithilfe von Kundengesprächen, Analysen und Machbarkeitsstudien können auch große Projekte umgesetzt und ihre wirtschaftlichen Auswirkungen beobachtet werden. Inwiefern agile Methoden wie Scrum, Extreme Programming oder DevOps eine bessere Wahl sind, hängt von vielen unterschiedlichen Faktoren wie dem Projektumfang, dem Budget oder dem geforderten Level an Betreuung und Wartung ab. Je mehr Flexibilität notwendig ist, desto eher kommen agile Methoden in Frage.[8]

Einzelnachweise

  1. 1 Vorlesung "Software-Engineering“ sts.tu-harburg.de. Abgerufen am 28.07.2016
  2. A Spiral Model of Software Development and Enhancement csse.usc.edu. Abgerufen am 28.07.2016
  3. Welche Vorgehensmodelle gibt es? archiv.iwi.uni-hannover.de. Abgerufen am 28.07.2016
  4. SDLC - Spiral Model tutorialspoint.com. Abgerufen am 28.07.2016
  5. What is Spiral model- advantages, disadvantages and when to use it? istqbexamcertification.com. Abgerufen am 28.07.2016
  6. Spiralmodell wirtschaftsinformatik-24.de. Abgerufen am 28.07.2016
  7. Kleine Erklärung zum Spiralmodell baldenhofer.eu. Abgerufen am 28.07.2016
  8. Spiral-Modell in der Software-Entwicklung infforum.de. Abgerufen am 28.07.2016

Weblinks