Fertig wird eine Software sicher nie (außer am Ende des Lifecycle - dann ist eben Schluss). Kaum ist ein Release geplant, kommen schon neue Anforderungen, die zum Teil dann auf ein späteres Release verschoben werden müssen. Aber wann ist dann ein Release fertig? Wann ist eine Funktion fertig? Wann ist ein Basiskomponente fertig?
Das nachfolgende Schaubild enthält die sechs Schritte, die eine Komponente durchläuft, bevor sie fertig ist. Das kleine Modell (aus der Praxis entstanden) ist nicht als Vorgehensmodell (wie z. B. Wasserfall) zu verstehen, sondern im Sinne des Projektmanagements. Damit kann dies auf jede Aktivität angewendet werden.
six steps to completion |
Sicher nicht, wenn der Programmierer den ersten, aus seiner Sicht fertigen, Stand des Codes übergibt (vielleicht 40%). Sicher nicht, wenn die QS ein paar Smoke-Tests durchgeführt hat und befindet "Das sieht ganz gut aus" (ca. 55%). Und sicher auch nicht, wenn irgendjemand sagt: "Jetzt ist es fertig", weil ein bestimmter Termin erreicht ist (x% fertig).
Da die Softwareentwicklung ja kein linearer Prozess ist, muss auf geänderte Anforderungen reagiert werden. Müssen Fehler nachgebessert werden (deshalb der Schritt Fertigstellung). Integrationsmaßnahmen durchgeführt werden (u. a. der Schritt Freigabe). Und und ...
Die kleine Methode six steps to completion, aus dem Baukasten Six Sigma für Software, bietet damit einen Rahmen für die notwendigen Schritte. Der Aufwand je Schritt kann in der Praxis natürlich variieren. Die Schritte haben im ein oder anderen Projekt vielleicht andere Bezeichnungen. Aber die Aufwände bleiben...
Und wann ist das Release dann nun fertig? Wenn alle geplanten Anforderungen umgesetzt wurden, und nach den QS-Maßnahmen festgestellt wird, das sie allen funktionalen und nicht funktionalen Vorgaben entsprechen. Wenn die Qualität wirklich passt. Dann ist es fertig. Oder?