In diesem Artikel geht es um das Thema Vorgehensmodelle im Software-Engineering. Falls dir das gar nichts sagt, so kannst du dir mal den Beitrag „Was ist Software-Engineering?“ durchlesen.
Jede Software durchläuft 6 Phasen der Softwareentwicklung:
- Planung
- Design
- Entwicklung
- Test
- Bereitstellung
- Wartung
Wenn ein Unternehmen also eine Software herstellen lassen möchte, muss zusammen mit dem Kunden eine Anforderungsanalyse gemacht werden. Was möchte er genau? Was soll die Software können? Bevor man dann mit der Programmierung startet, muss die Software zuerst entworfen werden. Und zwar so, dass den Entwurf jeder Programmierer lesen und verstehen kann. Nach der Implementierung einer Software muss sie gründlich auf Fehler und Funktionen getestet werden. Bei all diesen Phasen müssen die Zwischenergebnisse dokumentiert werden. Das lässt sich am besten durch Vorgehensmodelle realisieren.
Wozu benötigt man konkret ein Vorgehensmodell?
Wie schon oben erwähnt benötigt man ein Vorgehensmodell für eine gute Planung und Organisation bei der Erstellung einer Software. Ein Vorgehensmodell sollte 3 grundlegende Aspekte festlegen:
Die Aktivitäten:
- Welche Aktivitäten sind durchzuführen?
- Die Reihenfolge der Arbeitsabläufe
- Was sind die Richtlinien, Methoden, Werkzeuge und Standards?
Produkte & Ziele:
- Definition der Teilprodukte
- Fertigstellungskritieren
- Qualitätsvorgaben
Rollen:
- Notwendige Qualifikationen für Mitarbeiter
- Welcher Mitarbeiter hat welche Kompetenzen?
- Welcher Mitarbeiter ist für was verantwortlich?
Welche Vorgehensmodelle gibt es?
Es gibt eine ganze Menge Vorgehensmodelle. Hier sind ein paar Beispiele:
- Wasserfallmodell
- Spiralmodell
- Unified Process
- V-Modell
- Prototyping
- Scrum
- Extreme Programming
- und viele mehr
In diesem Artikel werden allerdings nur das Wasserfallmodell, V-Modell, Code & Fix und Scrum behandelt.
Code & Fix
Das Code & Fix Vorgehensmodell ist ein sequentielles Modell und ist eigentlich so das naheliegendste Modell. Versehentlich und ohne nachzudenken, hat praktisch jeder Programmierer schon danach gearbeitet.
Es hat zwei Schritte bzw. Tätigkeiten:
- Code erstellen
- Fehler fixen
Diese Schritte werden einfach nacheinander solange wiederholt, bis die Software fertig ist. Dieses Vorgehen ist natürlich für kleine 1 Personen Programme bestens geeignet. Wer möchte schon für die Programmierung eines simplen Schulpraktika 4 Stunden Zeit in Dokumentation und Planung stecken, wenn die Programmierung selbst nur 4 Stunden in Anspruch nimmt.
Die Vorteile hierbei liegen klar auf der Hand. Wir haben wenig bis gar keine Verwaltung.
Nachteile gibt es hier eine Menge mehr als Vorteile, vor allem bei größeren Projekten:
- Nach jedem Bugfix verändert sich das Programm immer mehr und entspricht vielleicht irgendwann nicht mehr dem, was wir zu Beginn vorhatten
- Die Wartbarkeit des Programms wird immer schwerer und teurer
- Durch mangelnde Anforderungserhebung haben wir eine geringere Endbenutzerakzeptanz. Einfach gesagt: Der Kunde findet es schlecht.
- Wir haben eine sehr geringe „Truck Number“ durch die fehlende Dokumentation. Bedeutet, dass wenn jemand krankheitsbedingt ausfällt, scheitert vielleicht schon das ganze Projekt oder wird extrem verzögert.
Wasserfallmodell
Das Wasserfallmodell ist ein Dokumenten-getriebenes & sequentielles Modell (dazu weiter unten mehr die Erklärung). Erstmalig beschrieben wurde das Modell 1956. Zudem wie wir es heute kennen wurde es von Winston W. Royce weiterentwickelt.
Bei diesem Modell gibt es eine Reihe Aktivitäten, die alle in der richtigen Reihenfolge durchzuführen sind. Erst, wenn eine Aktivität beendet ist, kann die nächste folgen. Nach jeder abgeschlossenen Aktivität wird ein fertiges Dokument erstellt. Der Kunde, der die Software in Auftrag gibt, wird nur in der Definitionsphase beteiligt. Die Definitionsphase sind die zwei ersten Schritte (Anforderungen & Analyse).
Vorteile des Wasserfallmodells
Die Vorteile des Wasserfallmodells sind natürlich die einfache Planung und Kontrolle des Projekts. Ein weiterer Vorteil sind die voneinander eindeutig abgegrenzten Phasen.
Nachteile
- Es kann durchaus nicht bei jedem Vorhaben sinnvoll sein, alle Schritte zu durchlaufen bzw. sie strickt nach einander zu durchlaufen. Es gibt auch Projekte, die es erlauben, an mehreren Bereichen gleichzeitig zu arbeiten.
- Der Kunde sieht sehr lange nichts von seiner Software, da es nichts zu präsentieren gibt, bis das Projekt fertig ist.
- Fehler in der Software werden erst zu einer späten Phase entdeckt.
- Das Modell ist gegenüber Änderungen des Kunden nicht wirklich flexibel.
- Da jeder Schritt dokumentiert wird, besteht die „Gefahr“, dass irgendwann die Dokumentation wichtiger erscheint als das eigentliche System
V-Modell
Das V-Modell hat seinen Ursprung 1988 im Militär. Es ist ein iteratives Modell mit integrierter Qualitätssicherung.
Vorteile
Der Vorteil des V-Modells ist, dass die Systemerstellung, Qualitätssicherung, das Konfigurationsmanagement und Projektmanagement in der Darstellung integriert ist. Außerdem erstellt man Testfälle in frühen Phasen des Projekts für die spätere Nutzung. Das V-Modell ist gut geeignet für eingebettete Systeme und das Tailoring erlaubt das Streichen und Anpassen von Projektschritten an das aktuelle Projekt.
Nachteile des V-Modells
- Ohne geeignete CASE Unterstützung ist es nicht handhabbar
- Für kleinere und mittlere Projekte bringt das V-Modell viel Bürokratie mit sich
- Im V-Modell gibt es 25 verschiedene Rollen, was nur für große Projekte geeignet ist
- In der sequentiellen Variante ist das V-Modell wenig flexibel gegenüber Änderungswünschen des Kunden
Scrum
Scrum ist ein agiles Vorgehensmodell mit einer iterativen Vorgehensweise, bei dem nicht das Gesamtprodukt, sondern Teilziele geplant werden. Bei Scrum steht das Team im Zentrum.
Vorteile von Scrum
- Hohe Flexibilität gegenüber Änderungswünschen des Kunden
- Eine ständige Überwachung der Qualität
- Sehr effektives Modell für kleinere und mittelgroße Projekte
- Geringe Kopfmonopole
- Der Fokus liegt auf der Einfachheit der Prozesse
Nachteile von Scrum
- Der Kunde ist oft gar nicht so oft verfügbar, wie es für das Projekt notwendig wäre.
- Scrum benötigt ein hohes Teamniveau und Selbstständigkeit.
- Es ist nicht so einfach, Teilzeitkräfte ins Team zu integrieren.
- Es erlaubt keine großen Teams, weil es auf maximal 10 Personen begrenzt ist.
- Wenn das Projekt keine Iteration erlaubt, wird es problematisch.
- Die Selbstorganisation kann durch dominante Teammitglieder gestört werden.
Du liest den Beitrag: 4 Vorgehensmodelle im Software-Engineering