Das Kaskadenmodell ist ein klassischer Ansatz in der Softwareentwicklung, der eine lineare und sequentielle Entwicklungsmethode beschreibt. Es besteht aus fünf bis sieben Phasen, wobei jede Phase durch unterschiedliche Aufgaben und Ziele definiert ist, sodass alle Phasen den Lebenszyklus der Software bis zu ihrer Auslieferung beschreiben. Sobald eine Phase abgeschlossen ist, wird der nächste Entwicklungsschritt fortgesetzt und die Ergebnisse der vorherigen Phase werden in die nächste Phase verschoben.
Hintergrund
Das Kaskadenmodell (oder Wasserfallmodell auf Englisch) war die erste in der Softwareindustrie weit verbreitete Methode. Als traditioneller Ansatz wiederholt er sich nicht im Gegensatz zu agilen Modellen mit einfachen Sprints, sondern kann durch Rückkopplungsschleifen und Loopbacks ergänzt werden. Es wird heute noch in verschiedenen Versionen verwendet, wenn die Anforderungen und Eigenschaften einer Software in der Konzeptionsphase klar definiert werden können.
Allgemeine Information
Die erste Erwähnung eines Phasenmodells geht auf Winston Royce zurück. In seinem Aufsatz "Management der Entwicklung großer Softwaresysteme" beschrieb er eine Entwicklungsmethode für große Softwareprojekte, die bereits 1970 in Phasen unterteilt ist. Er kritisierte diesen Ansatz weiter und schlug eine Alternative vor, die dem Prototyping ähnelt. Royce bezog sich auf Herbert Beningtons "Nine Phase Stage-Wise Model", das 1956 veröffentlicht wurde. Während Benington neun Phasen vorsah, reduzierte Royce sie auf sieben. Der Begriff Kaskadenmodell es wurde von keinem von ihnen benutzt. Seine Verwendung basiert auf einem Buch von 1976, das sich hauptsächlich mit Anforderungen an Software befasst[1]
Wie funktioniert es
Das ursprüngliche Kaskadenmodell besteht aus sieben aufeinander folgenden Phasen:[2]
- System Anforderungen: Die erste Phase befasst sich mit den Anforderungen, die sich nicht auf das digitale Produkt selbst beziehen, sondern auf relevante Aspekte für das Unternehmen wie Preis und Verfügbarkeit. Hier werden auch die Dokumentations- und Sicherheitsaspekte spezifiziert. Im Allgemeinen werden hier nichtfunktionale Anforderungen erwähnt.
- Software Anforderungen: Die funktionalen Anforderungen der Software werden in der zweiten Stufe definiert. Die Frage, was die Software leisten soll, wird hier beantwortet und in "Spezifikationen" geklärt, die auch die Ergebnisse der ersten Stufe enthalten.
- Analyse der Anforderungen: In der Anforderungsanalyse werden die Softwarefunktionen so zerlegt und strukturiert, dass einzelne Funktionselemente und Funktionseinheiten voneinander getrennt werden können. Die Bedarfsanalyse soll die Machbarkeit und Bedeutung der Funktionen bewerten. Das Ergebnis dieser Phase sind die Spezifikationen, die die Anforderungen enthalten, die entwickelt werden müssen.
- Programmdesign: Das technische Design wird nun mit Hilfe dieser Anforderungsspezifikationen implementiert. Zu den Komponenten dieser Phase gehören auch Entscheidungen über Informationsarchitektur und angewandte Technologien wie Programmiersprachen, Klassenbibliotheken und Programmsequenzen. Das Ergebnis des Programmdesigns wird im Allgemeinen in Diagrammen aufgezeichnet, die das theoretische Verhalten der Software beschreiben.
- Implementierung: Während der Implementierung werden Strukturen und Workflows unter Berücksichtigung der Rahmenbedingungen und systemischen Ziele implementiert. Das Software-Design wird zu einem Programm, das in direktem Zusammenhang mit einem Betriebssystem, einer oder mehreren Programmiersprachen und einer Infrastruktur steht. Das Ergebnis ist normalerweise betriebliche Software, oft in der Beta.
- Testen: Auf die Implementierungsphase werden alle Softwarekomponenten, Module und das gesamte System getestet. Darüber hinaus wird die Einbindung in bestimmte Betriebssysteme überprüft. Wenn Fehler und Konflikte auftreten, müssen diese sofort behoben werden. Dies könnte zu einem Anstieg der Gesamtkosten führen, da mögliche Fehler auf verschiedene Phasen zurückzuführen sind und nicht immer in der vorherigen Phase auftreten.
- Starten: Die Software wird nach Abnahme durch den Kunden implementiert. Aktualisierungen und Wartungsarbeiten können erforderlich sein, bevor das Produkt in ein Geschäft gelangt oder an den Kunden geliefert wird.
Verschiedene Teams und Experten arbeiten diese Phasen durch. Auftragnehmer, Projektmanagement und leitende Entwickler sind häufig bis zur Implementierungsphase involviert. Nach der Bereitstellung erledigen die Entwickler die Arbeit, sodass Softwaretests in der Regel separat durchgeführt werden, z. B. von unabhängigen Testlabors. Marketing- und Serviceexperten beteiligen sich teilweise an der Einführung. In großen Unternehmen und Konzernen wird die modifizierte und präzis strukturierte SDLC-Methode (System Development Life Cycle) verwendet, die auf dem basiert Kaskadenmodell.[3]. Es gibt auch andere Versionen dieses Modells, die beispielsweise sich wiederholende Elemente in Form von Schleifen einführen, um Fehler und Ausfälle in früheren Phasen zu erkennen und zu korrigieren.
Vor- / Nachteile
Einige Vor- und Nachteile von Kaskadenmodell:[4][5][6]
Vorteil
- Aufgrund der logischen Struktur des Modells können Missverständnisse häufig vermieden werden.
- Das Modell führt zu einer umfangreichen technischen Dokumentation, die für neue Programmierer und Entwickler eine Erleichterung darstellt und auch in der Testphase nützlich ist.
- Der Projektfortschritt kann anhand von Zielen überwacht werden.
- Die Gesamtkosten können relativ genau geschätzt werden, wenn keine Konflikte vorliegen.
Nachteile
- Konflikte, Fehler und Programmierfehler führen manchmal zu erhöhten Kosten und viel Zeit. Gleiches gilt, wenn die Kunden nicht zufrieden sind.
- Die Spezifikationen, die anfänglich erstellt werden, sind für Kunden oft schwer zu verstehen, da sie abstrakter sind als das, was die Software tun soll. Insbesondere bei ausgelagerten Projekten kann dies ein entscheidender Nachteil sein, da der Starttermin verschoben werden muss und sich der Markt in dieser Zeit möglicherweise geändert hat.
- Die Softwarebereitstellung dauert länger, da die Abteilungen nicht gleichzeitig arbeiten und jede Phase erst beginnen kann, wenn die vorherige Phase abgeschlossen ist.
Bedeutung für die Programmierung
Das Kaskadenmodell Es ist eines der bekanntesten Verfahrensmodelle in der Softwareentwicklung. Es wird seit Jahrzehnten erfolgreich eingesetzt, wird aber nur noch für kleinere Projekte eingesetzt, bei denen die Spezifikationen klar sind. Die oben genannten Nachteile veranlassten Analysten und Entwickler jedoch auch, alternative Modelle zu entwerfen, die als agile Softwareentwicklung bezeichnet werden.[7]. Das Hauptproblem von Kaskadenmodell ist, dass die Änderungen und Überarbeitungen nicht unbedingt durch die logischen Abläufe vorgesehen sind. Das Feedback von Kunden, Testern oder Testern und Ingenieuren während der gesamten Entwicklung fehlt teilweise, und die Integration der Software in ein vorhandenes System erfolgt mit einem Knall. Diese Unannehmlichkeiten können vermieden werden, indem die Phasen des Projekts geändert werden, wie dies beim Spiralmodell der Fall ist. Seit einigen Jahren sind agile Methoden, die andere strukturelle Elemente verwenden, jedoch weitaus beliebter (z. B. Rollen und Sprints mit Scrum oder extreme Programmierprinzipien). Sie sind in der Regel billiger, führen zu schnelleren Ergebnissen und sind für Kunden transparenter.
Web-Links
- Kaskadenmodell definieren
- Was ist das Cascade-Modell beim Testen von Software und welche Vor- und Nachteile hat das Cascade-Modell?