fit 2002 > Softwareentwicklungsmodelle > Wasserfallmodell > Konzepte und Techniken
 

Überblick



Im ersten Punkt wird das Wasserfallmodell in Groben Zügen vorgestellt.
Der zweite Punkt gibt eine detaillierte Beschreibung der einzelnen Phasen und es wird genauer erläutert welche Aufgaben zu bewältigen sind und welche Ergebnisse am Ende der Phase vorliegen müssen.
Im letzten Kapitel werden die Vor- und Nachteile des einfachen Wasserfallmodells gegenübergestellt.


Das Wasserfallmodell


Das Wasserfallmodell ist ein Vorgehensmodell, welches den direkten Weg Software zu entwickeln beschreibt. Ganz nach dem Motto: "Wir fangen vorne an und gehen linear weiter bis zum Schluss!". Aus diesem Grundsatz heraus entstand dabei die charakteristische Unterteilung des Entwicklungsprozess in einzelne Phasen. Für jede Phase ist genau definiert was in ihr zu tun ist. Jede Phase produziert genau definierte Ergebnisse. Hierbei ist es wichtig das jede Phase vollständig abgeschlossen ist bevor die nächste beginnt. Dies ist deshalb so essentiell weil das Ergebnis einer Phase der Input für die nächste Phase ist. Die Ergebnisse einer Phase des Entwicklungsprozesses fließen in die nächste Phase ein. Die folgende Abbildung zeigt das Wasserformmodell in seiner ursprünglichen Form, wie es 1970 von Royce entwickelt wurde.


Abbildung: Das einfache Wasserfallmodell

In kurzen Worten beschrieben kann man sagen, daß die Phase der Machbarkeitsstudie dem WARUM entspricht, die Spezifikation dem WAS und die folgenden Phasen außer der Wartung dem WIE.
Das Gedankenmodell entspricht einer "Software Factory" (Fließbandfertigung für Softwareprodukte), wie sie in folgender Abbildung abstrakt dargestellt ist.


Abbildung: Die Software Factory als Fließbandfabrik
Quelle: [John-Harry Wieken, 1990] "Software-Produktion"


Die einzelnen Phasen


1.Phase: Machbarkeitsstudie

Wie der Name schon verrät ist es der Zweck dieser Phase das Abschätzen des Gesamtprojekts bezüglich Kosten, Ertrag und Realisierung. Dazu ist es notwendig das Problem informell und abstrahiert zu beschreiben und aufbauend darauf mögliche Lösungsansätze zu erarbeiten. Dann muss man noch versuchen die Kosten des Softwareentwicklungsprozesses abzuschätzen und ein Angebot (für den Auftraggeber) erstellen.

Das Ergebniss sollte dann sein:

  • ein Lastenheft (enthält grobe Beschreibung der Anforderungen)
  • Projektplan
  • Projektkalkulation
  • Angebot an den Auftraggeber



  • 2.Phase: Anforderungsdefinition

    In dieser zweiten Phase soll nun genau definiert werden, was die Software machen soll, wobei aber nicht genauer drauf eingegangen wird wie sie was macht. Hierzu wird eine "Ist-Analyse" durchgeführt und ein "Soll-Konzept" bestimmt. Ziel der "Ist-Analyse" ist eine Beschreibung von Abläufen und Begriffen des Problembereichs. Im "Soll-Konzept" wird hingegen festgelegt wie bestimmte Systemeigenschaften definiert sein müssen und die genau Funktionalität des Softwareprodukts sein soll. Weiters werden Punkte wie Leistung, Benutzerschnitstelle und Portierbarkeit genauer beschrieben. Am Schluss werden dann noch geeignete Testfälle erstellt.

    Ergebnisse:

  • Pflichtheft (=Anforderungsdefintionsdokument, Soll-Konzept)
  • Akzeptanztestplan (Testfälle)
  • Benutzerhandbuch (erste Version)



  • 3. Phase: Analyse

    In dieser Phase werden die Anforderungsdefinition einer Analyse unterzogen, die den Zweck hat die Anforderungen zu überprüfen, verfeinern und anschließend zerteilen. Hier wird nach den "divide & conquer" Prinzip vorgegangen. Das bedeutet das die Komplexität des Problems sich vielfach durch Zerlegung in kleinere Teilprobleme verbessern lässt. Danach löst man die Teilprobleme und fügt die Teillösungen zu einer Gesamtlösung zusammen. Es wird also das "Soll-Konzept" der vorhergehenden Phase verfeinert und eine Beschreibung von dem Ablauf und der Struktur des zu erstellenden Systems erstellt.

    Ergebnisse:

  • Analysedokument
  • Benutzerhandbuch (zweite Version)



  • 4. Phase: Entwurf

    Da jetzt alle Anforderungen und Aufgaben ausführlich definiert sind und vorliegen wird nun ein konkreter Entwurf gefertigt. Nun wird genau festgelegt, wie was zu realisieren ist. Das heißt es wird ein Bauplan für die Software und die Softwarearchitektur entwickelt. Weiters werden konkrete Softwarebibliotheken, Frameworks und der gleichen ausgewählt. Die Schnittstellen werden klar definiert und die ersten Algorithmen werden entwickelt bzw. ausgewählt.

    Ergebnisse:

  • Entwurfsdokument mit Softwarebauplan
  • detaillierte Testpläne für Module, Klassen und Komponenten



  • 5. Phase: Implementierung und Test

    Nachdem jetzt der Softwarebauplan vorliegt geht man jetzt in die konkrete Implementierung des Systems in einer gewählten Programmiersprache über. Einzelne Module, Klassen und Komponenten werden entwickelt und schrittweise getestet und in das Gesamtsystem integriert. Am Ende wird dann noch einmal ein Gesamtsystemtest durchgeführt den man als Alpha-Test bezeichnet.
    Ergebnisse:

  • Fertiges System ("Alpha Version")
  • Benutzerhandbuch (endgültige Version)
  • Technische Dokumentation
  • Testprotokolle



  • 6. Phase: Auslieferung und Installation

    Nun kann das fertige Produkt an den Kunden geliefert werden und in die Zielumgebung integriert werden. Wenn notwendig findet eine Auslieferung und Einschulung an alle Benutzer statt. Meistens durchläuft das System aber noch eine sogenannte "Beta Testphase" in der das System an ausgewählte Benutzer geliefert wird und im Betrieb genommen wird um letzte Fehler zu finden.

  • Fertiges System ("Beta Version")
  • Akzeptanztestdokument



  • 7. Phase: Wartung

    Nach erfolgreicher Auslieferung und Integration der Software folgt die Phase der Wartung. Ihre Aufgaben liegen in der Fehlerbehebung und der Anpassung der Software, wenn nötig. Die Software kann auch im Laufe der Zeit verbessert werden. Eine umfassende Wartung macht ungefähr 60% der Softwarekosten aus.

  • Bug Reports (Fehlerbeschreibungen)
  • Softwareveränderungsvorschläge
  • neue Softwareversionen



  • Vorteile und Nachteile


    Vorteile des Wasserfallmodell sind:

  • Modell ist leicht verständlich und anwendbar,
  • klare und einfache Strukturierung des Vorgehens,
  • die Möglichkeit der direkten Abbildbarkeit des Modells auf eine Zeitachse,
  • eine gute Basis für die weitere Definition eines Phasenmodells.

    Nachteile des Wasserfallmodell sind:

  • zu Projektbeginn sind nur ungenaue Kosten- und Ressourcenschätzungen möglich,
  • die Problematik späterer Änderungen wird nicht adressiert.
  • Es fehlt die Möglichkeit, die äußeren Eigenschaften einer Anwendung frühzeitig auszuprobieren, da die Implementierung erst sehr spät erfolgt.
  • In der Entwurfsphase ist eine Interaktion mit Endbenutzer mangels Prototypen sehr schwierig. Das bedeutet, daß der Benutzer erst dann eine wirkliche Vorstellung von dem Produkt bekommt, wenn es fast fertig ist.
  • Ein Pflichtenheft kann nie den Umgang mit dem fertigen System ersetzen. Das heißt das gutes Feedback wird erst sehr spät möglich ist.
  • Das frühe einfrieren der Anforderung kann bei einem notwendigen Wandel aufgrund technischer, politischer oder organisatorischer Gründe zu großen Problemen führen.
  • Änderungswünsche, die über kosmetische Verbesserungen hinausgehen, sind nach der Fertigstellung nur schwer und unter hohen Kosten erfüllbar.


  • Weiterführende Informationen


    [Royce, 1970] "Managing the Development of Large Software Systems"

    [Balzert Helmut, 1996] "Lehrbuch der Software-Technik, Band 1 & 2"

    [Chroust Gerhard, 1992] "Modelle der Software-Entwicklung"

    Verweise auf Arbeiten anderer gruppen


    >Software Factories@Produktionsverhältnisse
    enthält nähre Details zur Entstehung und über das Konzept der Software Factories.

    >Prozedurale Sprachen@Programmmiersprachentypen
    vom Konzept des Programmiersprachentyp dem Konzept des Wasserfallmodells gleichgesinnt.

    >Entstehungskontext | Konzepte und Techniken | Entwicklung und Auswirkungen | Praxis | Bewertung


    Autor: Mario Zittera; Tutor: Stephan Wright