Wasserfallmodell

Das Wasserfallmodell (engl.: waterfall model) ist ein Vorgehensmodell in der Softwareentwicklung, das eine lineare und sequentielle Entwicklungsmethode beschreibt. Es besteht aus fünf bis sieben Projektphasen, die die Entwicklung einer Software, Applikation oder Webanwendung strukturieren.

Sobald eine Phase abgeschlossen ist, folgt der nächste Entwicklungsschritt und die Resultate der vorherigen Phase fließen in die nächste Phase mit ein. Jede Phase ist dabei durch unterschiedliche Aufgaben und Ziele definiert, wobei die Gesamtheit der Phasen den Lebenszyklus der Software bis hin zur Auslieferung beschreibt.

Hintergrund

Das Wasserfallmodell war die erste Methode, die weitläufig in der Software-Industrie verwendet wurde. Als traditionelles Vorgehensmodell ist es im Gegensatz zu agilen Modellen mit einzelnen Sprints nicht iterativ, kann aber durch Feedback-Schleifen und Loopbacks ergänzt werden. Es wird noch heute in verschiedenen Varianten eingesetzt, wenn die Anforderungen und Merkmale einer Software in der Konzeptionsphase klar umrissen werden können.

Allgemeine Informationen zum Thema

Die erste Erwähnung eines in Phasen strukturierten Modells ist auf Winston Royce zurückzuführen. In seinem Aufsatz „Managing the Development of Large Software Systems“ beschrieb er schon 1970 eine Entwicklungsmethode für große Softwareprojekte, die in Phasen unterteilt ist. Er kritisierte dieses Vorgehen jedoch auch und schlug eine Alternative vor, die eher dem Prototyping ähnelt. Royce nahm Bezug zu dem „Nine Phase Stage-Wise Model“ von Herbert Benington, das dieser bereits 1956 publizierte. Während Benington neun Phasen vorsah, reduzierte Royce diese auf sieben Phasen. Den Begriff Wasserfallmodel benutzte keiner von ihnen – Der Sprachgebrauch geht auf eine Abhandlung von 1976 zurück, die sich vor allem mit den Anforderungen an eine Software beschäftigt.[1]

Funktionsweise

Das ursprüngliche Wasserfallmodell besteht aus sieben aufeinanderfolgenden Phasen:[2]

  • Systemanforderungen: Die erste Phase befasst sich mit Anforderungen, die nicht das digitale Produkt selbst betreffen, sondern geschäftsrelevante Aspekte wie den Preis und die Verfügbarkeit. Auch eine Dokumentation sowie Sicherheitsaspekte werden hier näher bestimmt. Generell wird hier von nicht-funktionalen Anforderungen gesprochen.
  • Softwareanforderungen: In der zweiten Phase werden die funktionalen Anforderungen an die Software definiert. Die Frage, was die Software können muss, wird hier beantwortet und in einem sogenannten Lastenheft präzisiert, das auch die Ergebnisse der ersten Phase umfasst.
  • Anforderungsanalyse: In der Phase der Anforderungsanalyse werden die Funktionen der Software zergliedert und strukturiert, sodass einzelne Funktionselemente und Funktionseinheiten voneinander getrennt werden können. Die Anforderungsanalyse soll die Funktionen auf ihre Machbarkeit und Wichtigkeit hin untersuchen. Das Resultat dieser Phase ist ein Pflichtenheft, das die Anforderungen enthält, die entwickelt werden müssen.
  • Programmdesign: Anhand des Lasten – und Pflichtenheftes wird nun das technische Design umgesetzt. Bestandteile dieser Phase sind ebenfalls Entscheidungen über die Informationsarchitektur und die eingesetzten Technologien wie Programmiersprachen, Klassenbibliotheken und Programmabläufe. Das Ergebnis des Programmdesigns wird meist in Diagrammen festgehalten, die das theoretische Verhalten der Software beschreiben.
  • Implementierung: Bei der Implementierung werden die Strukturen und Abläufe unter Berücksichtigung der systemischen Rahmenbedingungen und Ziele realisiert. Der Softwareentwurf wird zu einem Programm, das einen direkten Bezug zu einem Betriebssystem, einer oder mehrere Programmiersprachen sowie der Infrastruktur aufweist. Das Resultat ist meist eine lauffähige Software, die zum Beispiel in einer Betaversion vorliegt.
  • Testing: Auf die Phase der Implementierung folgt das Testen aller Softwarekomponenten, Module und des gesamten Systems. Auch die Integration auf bestimmte Betriebssysteme wird überprüft. Falls Fehler und Konflikte auftreten, müssen diese umgehend behoben werden. Dies kann zu steigenden Gesamtkosten führen, da eventuelle Fehler auf unterschiedliche Phasen zurückgeführt werden können und nicht immer in der vorhergehenden Phase begründet sind.
  • Einführung: Die Einführung der Software erfolgt nach der Abnahme durch den Auftraggeber. Unter Umständen sind Updates und Wartungsarbeiten notwendig, bevor das Produkt in den Handel gelangt oder an den Kunden ausgeliefert wird.

An diesen Phasen arbeiten verschiedene Teams und Experten. Bis zur Phase der Implementierung sind meist Auftraggeber, das Projektmanagement und die Senior-Entwickler gefragt. Ab der Implementierung erledigen die Entwickler die Arbeit, wobei das Testen der Software häufig gesondert behandelt wird – auch durch unabhängige Testlabore. An der Einführung sind teilweise auch Marketing- und Serviceexperten beteiligt. In großen Unternehmen und Konzernen kommt die abgewandelte, exakter strukturierte SDLC Methode (engl.: systems development life cycle) zum Einsatz, die auf dem Wasserfallmodell basiert.[3] Daneben existieren andere Varianten des Modells, die beispielsweise iterative Elemente in Form von Schleifen einführen, um Fehler und Bugs in vorgelagerten Phasen zu erkennen und zu beheben.

Vorteile/Nachteile

Einige Vorteile und Nachteile des Wasserfallmodells:[4][5][6]

Vorteile

  • Durch die logische Struktur des Modells können konzeptionelle Fehler häufig vermieden werden.
  • Das Modell führt zu umfangreichen technischen Dokumentationen, die für neue Programmierer und Entwickler eine Erleichterung darstellen und zudem in der Testphase hilfreich sind.
  • Anhand von Meilensteinen kann der Projektfortschritt beobachtet werden.
  • Die Gesamtkosten lassen sich relativ exakt schätzen, falls keine Konflikte auftreten.

Nachteile

  • Konflikte, Bugs und Programmfehler führen mitunter zu steigenden Kosten und deutlichem Mehraufwand. Gleiches gilt, wenn die Auftraggeber nicht zufrieden sind.
  • Die Spezifikationen, die zu Anfang getroffen werden, sind für Auftraggeber oft schwierig zu verstehen, da sie abstrakter sind als das, was die Software eigentlich tun soll. Gerade bei ausgelagerten Projekten kann dies einen entscheidenden Nachteil bedeuten, da der Releasetermin verschoben werden muss und der Markt sich in dieser Zeit vielleicht verändert hat.
  • Die Auslieferung der Software benötigt länger, da die Abteilungen nicht simultan arbeiten und jede Phase erst beginnen kann, wenn die vorherige Phase komplett abgeschlossen ist.

Bedeutung für die Programmierung

Das Wasserfallmodell ist eines der bekanntesten Vorgehensmodelle in der Softwareentwicklung. Seit Jahrzehnten wird es erfolgreich eingesetzt – Mittlerweile nur noch bei kleineren Projekten, bei denen die Spezifikationen klar sind. Die oben genannten Nachteile führten jedoch auch dazu, dass Analysten und Entwickler alternative Modelle entwarfen, die unter der Bezeichnung agile Softwareentwicklung zusammengefasst werden.[7] Das Hauptproblem des Wasserfallmodells besteht darin, dass Veränderungen und Revisionen durch die logischen Abläufe nicht unbedingt vorgesehen sind. Das Feedback von Kunden, Testern und Ingenieuren während der Entwicklung fehlt teilweise und die Integration der Software in ein bestehendes System erfolgt in einem Arbeitsgang (engl.: Big Bang). Diese Nachteile können durch Abwandlungen der Projektphasen – wie es beim Spiralmodell der Fall ist – zwar vermieden werden, aber seit einigen Jahren sind agile Methoden, die andere Strukturelemente verwenden wie Rollen und Sprints bei Scrum oder die Prinzipien beim Extreme Programming deutlich populärer. Sie sind in der Regel wirtschaftlicher, führen schneller zu Ergebnissen und für Kunden transparenter nachvollziehbar.

Einzelnachweise

  1. Software Requirements: Are they really a problem? static.aminer.org. Abgerufen am 28.07.2016
  2. Managing the Development of large Software Systems softwarelifecyclepros.com. Abgerufen am 28.07.2016
  3. Tutorial: The Software Development Life Cycle (SDLC) softwarelifecyclepros.com. Abgerufen am 28.07.2016
  4. The Traditional Waterfall Approach umsl.edu. Abgerufen am 28.07.2016
  5. SDLC - Waterfall Model tutorialspoint.com. Abgerufen am 28.07.2016
  6. What is Waterfall model- advantages, disadvantages and when to use it? istqbexamcertification.com. Abgerufen am 28.07.2016
  7. What is SDLC Waterfall Model? softwaretestinghelp.com. Abgerufen am 28.07.2016

Weblinks

Kategorie