Das Wasserfallmodell

Wie entsteht eigentlich Software? Sicher ist meist nur: es gibt einen Auftraggeber mit bestimmten Wünschen, es gibt ein Team von Programmierern (denn größere Softwareprojekte werden kaum mehr von einzelnen Programmierern angegangen), und irgendwann gibt es dann eine mehr oder weniger lauffähige Software.

Es gibt verschiedene Wege, nach denen ein Team bei der Softwareentwicklung vorgehen kann. Der wohl bekannteste ist das Wasserfallmodell (Wikipedia). Es ist vielleicht schon ein bisschen altbacken, es gibt Kritikpunkte, es gibt Alternativen – aber für die Schule reicht es vorläufig. (Längere Fußnote dazu unten.)

Je nach Ausformung besteht das Wasserfallmodell aus 5-7 Stufen (je nach genauer Ausformung des Modells), entlang derer die Entwicklungsarbeit läuft. Am Ende jeder Stufe steht ein greifbares Dokument oder Produkt, von dem aus es dann weiter zur nächsten Stufe geht. Stellt sich heraus, dass für die aktuelle Stufe keine befriedigende Lösung gefunden werden kann, geht man beim erweiterten Wasserfallmodell zur letzten Stufe zurück und versucht es da noch einmal – und notfalls kaskadenartig noch weiter zurück:


(Maciej Jaros; GFDL ver. 1.2 or CC-by-sa ver. 2.5, 2.0, and 1.0; Wikipedia)

Etwas ausführlicher:

Konkret sähe das so aus:

  1. Planungsphase
    Der Lehrer als Kunde erteilt einen Auftrag. Er hätte gerne ein Programm zur Verwaltung von Schülern. Oder ein Spiel. Seine genauen Wünsche werden in einem Lastenheft festgehalten. Darin steht, was das Programm können soll. Wie das umzusetzen ist, ist erst mal nicht sein Problem.
  2. Definitionsphase
    Die Schüler übersetzen die Kundenwünsche in eigene Teilaufgaben. Was muss erledigt werden, wer kümmert sich um welchen Teil? Das wird im Pflichtenheft festgehalten. Wenn sich jetzt schon abzeichnet, das etwas so nicht geleistet werden kann, muss man zurück in die Planungsphase.
  3. Entwurfsphase
    Die Schüler entwerfen ein Modell des Projekts. Mit entsprechenden Tools oder mit Bleistift und Papier. Für solche Entwürfe gibt es verbreitete Normen, etwa die UML-Notation (Unified Modeling Language). Der Entwurf ist etwa ein Datenbankentwurf in Form eines Entity-Relationship-Diagramms oder ein Klassendiagramm.
  4. Implementierungsphase
    Anhand des Entwurfs wird jetzt programmiert. Wenn der Entwurf gut ist, geht das zügig. Oft wird man aber zurück zum Entwurf müssen und da etwas ändern, weil sich beim Programmieren herausstellt, das bestimmte Aspekte so nicht gehen. Am Schluss stehen die fertigen Programme.
  5. Testen und Einführen
    Die Teilprogramme werden zusammengebaut und getestet.
  6. Übergabe und Wartung
    Der Lehrer kriegt das Programm und das Handbuch (mit dem man wohl schon in früheren Phasen begonnen hat) ausgeliefert. Er kriegt eine Einführung in den Umgang mit dem Programm, außerdem steht das Team für Anpassungen und Wartung zur Verfügung.

Ich könnte mir schon vorstellen, so auch in der Schule vorzugehen. Allerdings wüsste ich auch gerne Alternativen zur Projektplanung an Schulen. Denn so richtig passt das Wasserfallmodell nicht auf die Lernsituation. Der Lehrer sieht vielleicht schon Fehler auf der ersten oder zweiten und vor allem dritten Ebene, auf die die Schüler dann erst in der vierten Phase stoßen und wieder zurück zum Reißbrett müssen. Das ist frustrierend und zeitraubend – mehr Zeit, als eine funktionierende Softwarefirma hat und mehr Zeit als man in der Schule hat. (Dabei ist es schon wichtig, dass Schüler Zeit haben, Fehler zu machen und sie zu verbessern. Das haben Sie fast nie. Trotzdem musss man sie nicht jeden Fehler machen lassen.)

Vielleicht passt ja ein andere Entwicklungsmodell besser auf die Situation in der Schule.

(Weitere Gedanken zu Softwareentwicklung in der Schule in diesem Blogeintrag.)

Tagged: Tags

12 Thoughts to “Das Wasserfallmodell

  1. Hallo Thomas, bittebittebitte nicht Wasserfallmodell! Damit bringst Du Deinen Schülern etwas bei, was sich seit rund 10 Jahren als völlig ungeeignet gilt. Neben den negativen Punkten, die Du schon genannt hattest, kommen noch eine Reihe weiterer. Die wichtigsten sind: das Wasserfallmodell wird in der Softwareindustrie ernsthaft nicht mehr angewendet und der Aspekt der Qualitätssicherung kommt extrem zu kurz (eine kurze Phase am Ende des Projektes)
    Vorschlag für den Unterricht: V-Modell. http://de.wikipedia.org/wiki/V-Modell
    Es handelt sich um eine sinnvolle Erweiterung des Wasserfallmodells (zu jeder Phase gehört eine Testphase, die quasi parallel bearbeitet wird). Damit läßt sich auch Dein Problem mit den Fehlern der Schüler gut in den Griff bekommen, denn sie müssen jede Phase nachweislich mit einem Test abschließen, bzw. parallel Testfälle entwickeln. Das V-Modell wird so in der täglichen Arbeit benutzt (mehr oder weniger modifiziert …)
    Ein ganz anderer Ansatz wäre es, agil vorzugehen. Großer Vorteil bei agilen Vorgehensmodellen (scrum, XP usw.) ist, dass zu jedem Zeitpunkt des Prozesses ein sinnvoller und funktionierender Artefakt vorliegen muss. Damit ist die Frustrationsgefahr (4 Wochen an etwas gearbeitet, was dann nicht funktioniert) gering. Darüber hinaus bieten agile Methoden viele gute Ansätze für begleitende Themen (Kommunikation, Sozialkompetenz, Selbstorganisation usw.)

    Wenn Du Fragen dazu hast, dann mail mal …

  2. Ich wollte gerade auch was ähnliches wie Bernhard sagen. Es gibt ein moderneres System als Wasserfall, dessen name mir gerade leider nicht einfällt (aber nicht V-Modell). Da fängt man mit einem kleinsten sofort lauffähigen Programmkern, zu dem man alle Wünsche/Bedarf einarbeitet, Ziel ist ein ständig lauffähiges Program zu haben während es größer wird und sich weiter entwickelt….

  3. Vielen Dank, genau solche Tipps habe ich gebraucht. In den Schulbüchern gibt’s immer nur das Wasserfallmodell. vielleicht aus ähnlichen Gründen, aus denen man Algorithmen gerne mit Bubblesort beginnt. (Einfach, historisch, aber unpraktisch.) Ich schaue mir mal das V-Modell an und hangle mich durch und melde mich dann bei dir, Bernhard, wenn ich Fragen habe.

    (Hande, Wikipedia, Hort allen Wissens, bietet verschiedene Vorgehensmodelle an. Extreme Programming klingt lustig. Ach, so eine richtige Informatikerausbildung täte mir sicher gut. Wenn ich jetzt nochmal Unterrichstfächer wählen müsste… Informatik wäre dabei. )

  4. Schau doch auch mal unter Pairprogramming (einer schreibt einer korrigiert) und Testfirst-Methoden. Letzteres dürfte unter agile Methoden fallen: man schreibt immer 1. einen Unittest den man dann befriedigt. Das laesst sich prima mit Paiprogramming kombinieren (einer schreibt Tests der andere Funktionen) dabei dauert jede Phase nur wenige minuten 2-5, die Tests sind wirklich minimal. Wenn das Programm sich falsch verhaelt, wird auch immer erst ein Test geschrieben der den Fehler findet und erst dann ein bugfix. So schreibe ich immer meine Prototypen, das schoene daran, wenn man nun der Meinung ist man will ein Modul neu schreiben, dann muss das natuerlich alle Tests die ueber die Zeit angesammelt sind erfuellen.

  5. Das Wasserfallmodell ist nun mal sehr einfach, andere komplexere Vorgehensweisen sind für die Schule wohl nicht wirklich geeignet.

    Und am Rande: Das ist ja eine alte Weisheit, dass Schule und Lehrer Dinge bevorzugen, die die Schüler kapieren können – ungeachtet ihrer Relevanz für die Lebensrealität.

  6. Poschi ich weiss was du meinst, aber mal nen zynischer Kommentar dazu: Die Schöpfungslehre ist auch einfacher zu erklaeren ….

  7. So ganz unrecht hat Poschi nicht… es geht ja bei diesen Modellen nicht um falsch oder richtig, sondern um praktisch oder unpraktisch. Und die Schüler sollen ja auch nicht vorbereitet werden auf die Arbeit als Programmierer – sondern sie sollen lernen, *dass* es solche Modelle gibt und dass man dabei Vereinbarungen trifft und sich an die hält. Das ist die Hauptsache.

    Gestern war ich mit einem Programmierer ein Bier trinken, der hat mir erzählt, wie das dort läuft, wo er arbeitet, und mich wieder auf neue Ideen gebracht. Er hat mir noch ein paar Details per Mail versprochen.

  8. Da hat der Herr Rau natürlich Recht. Wenn das aber das Ziel ist, dann wäre es doch eine schöne Unterrichtseinheit, mehrere Modelle mal vergleichend nebeneinander zu stellen (vielleicht arbeitsteilig) und am Ende auszuwerten.
    Wenn Du aber einfach nur programmieren möchtest und nun ein entsprechendes Vorgehensmodell suchst, dann bitte nicht Wasserfall. Aus eigener Erfahrung kann ich sagen, dass es ungemein schwierig ist, die damit verbundenen (falschen) Arbeitsweisen wieder aus den Köpfen raus zu kriegen. Beispiel: Das Wasserfall-Modell legt nahe, dass es *am Ende* der Entwicklung einen Test gibt. Daraus folgt eine strikte Teilung von Entwicklung und Test, auch auf personeller Ebene. Das wiederrum führt dazu, dass man mit Einstellungen zu kämpfen hat wie, „mit Test habe ich nichts zu tun, ich bin Entwickler“, „das machen die anderen“, „Wie: Fehler gefunden? Willst du mir an den Karren pinkeln, oder was!!?“ und und und
    Diese Einstellungen (die alle vom Wasserfall Modell impliziert werden) u.a. führen zu den bekannten Problemen der Softwareentwicklung.
    Wenn es nur darum geht *dass* es Modelle gibt, an die man sich zu halten hat, dann kann man in der Biologie ja auch die Schöpfungsgeschichte der Bibel lehren. Ist sicherlich das einfachste Modell, aber leider falsch. (Uuuups, bischen groß, die Keule … ;-) )
    Andere Idee: Warum nicht die Schüler fragen, wie sie vorgehen wollen? Wenn man ein paar Grundsätze beachtet, wie ein daraus resultierendes Modell aussehen kann, könnte das funktionieren. Und man ist die leidige Diskussion um das *richtige* Modell los. (Wenn man von Wasserfall mal absieht, gibt es das nämlich nicht …)

  9. Ja, ich denke, ich werde den Schülern vorher mehrere Modelle präsentieren. Ein paar Stunden sind selbst laut Lehrplan für die Theorie der Softwareentwicklung vorgesehen. Und ich werde auf die Rolle des Testens hinweisen. (Immerhin: mitten im Buch 3 Seiten „Methodenseite: Programme testen“ mit Ratschlägen dazu, wie man das macht.) Deshalb noch einmal vielen Dank für die nützlichen Hinweise.

    Ich weiß sowieso noch nicht so recht, wie das mit dem Softwareentwicklungs-Projekt laufen wird, rein zeitlich. Viel Zeit für Hausaufgaben und Arbeit nach der Schule haben nämlich nur einige der Elftklässler.

    — Und ja, die Schöpfungskeule ist zu groß. Ich streite gerne mit Evolutionsgegnern, und die irren sich eben in noch viel größerem Ausmaß als Freunde des Wasserfallmodells.

  10. Halo! Ich binn daa! untr ihrer wonung! Jezt!
    Ich denke das deutsch seien sehr gut heute. sind sie auf deutschen boden geboren?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.