Kalkulieren statt schätzen

16.02.2006
Von Robert Hürten

In der Praxis zeigt sich immer häufiger, dass Anwender terminliche Anforderungen an die Softwareentwicklung stellen, die bei den heutigen komplexen und integrierten Systemen nicht erfüllt werden können. Kleine Änderungen verlangen in der Regel den gleichen Testaufwand wie merklich größere, sofern man nicht Gefahr laufen will, dass ein Fehler in irgendeinem fernen Programmteil auftritt.

Die Kosten und Termine werden noch immer nicht auf der Grundlage einer zuverlässigen Kalkulation ermittelt. Vielmehr geben die Verantwortlichen Schätzungen ab, mit denen den Wünschen der Auftraggeber entsprochen werden soll. Das erste und folgenschwerste Ergebnis eines solchen Entgegenkommens ist, dass man sich nicht die Zeit nimmt, eine detaillierte, vollständige und verbindliche Aufgabenstellung zu verlangen beziehungsweise zu erstellen. Um eine gute funktionale Anforderung zu bekommen, sollte man einen Aufwand von zirka 20 bis 25 Prozent des späteren Gesamtaufwands einkalkulieren. Es ist der falsche Weg, diese 20 Prozent einsparen und auf ein verbindliches Pflichtenheft verzichten zu wollen.

Wer so vorgeht, berücksichtigt nicht, dass jede Funktion, die nachträglich in eine laufende Entwicklung eingebracht wird, wesentlich mehr Zeit benötigt und teurer ist, als wenn sie von Anfang an eingeplant wurde. Untersuchungen haben gezeigt, dass der Aufwand in solchen Fällen um das Sechsfache und mehr steigen kann. Auch führen die nachträglichen Änderungen zu unsauberen Programmstrukturen, die wiederum höhere Wartungskosten nach sich ziehen. Im Hinblick auf die funktionalen Anforderungen muss die Regel gelten: Die Zeit, die in das Ermitteln der Anforderungen investiert wird, spart ein Vielfaches im Gesamtprojekt.

Kalkulieren statt Schätzen

Damit die Softwareentwickler endlich von dem unsicheren Schätzen des Aufwandes zu einer zuverlässigen Kalkulation kommen, müssen sie ihre Arbeitsweise ändern. Besser wäre noch, dies anderen zu übertragen, die industrielle Produkte bereits effektiv kalkuliert haben. Entsprechend Erfahrungen aus dem Ingenieurswesen sollte folgendermaßen vorgegangen werden:

  • Funktionale Anforderungen detailliert, vollständig und verbindlich definieren und nach einer einheitlichen Norm erstellen;

  • den funktionalen Inhalt der Pflichtenhefte mit einem einheitlichen Maß messen;

  • für jedes abgeschlossene Projekt eine Nachkalkulation erstellen, die neben dem Aufwand auch die effektiv realisierte Funktionalität nachweist;

  • aus den historischen Nachkalkulationen Produktivitätskurven ableiten, die Rückschlüsse auf den zu erwartenden Aufwand erlauben;

  • ein Kalkulationsbüro außerhalb der eigentlichen Softwareentwicklung einrichten, das die zentrale Verantwortung für die Kalkulation hat und sich nach den Erfahrungen der industriellen Fertigung richtet.