Vorgehen bei der Aufwandschätzung von Softwareprojekten

Wie bei allen technischen Entwicklungen müssen auch bei der Softwareentwicklung die Fragen «Wann steht das Produkt zur Verfügung?» und «Was kostet das Produkt?» beantwortet werden. Da es für die Ermittlung dieser Angaben keine Berechnungsverfahren gibt, muss man sie schätzen. Dieser Tipp zeigt die Vorgehensweise dabei.

Autor/in Dipl.-Ing. Klaus Jantzen
Datum 21.06.2013
Lesezeit 8 Minuten

Wie bei allen technischen Entwicklungen müssen auch bei der Softwareentwicklung die Fragen «Wann steht das Produkt zur Verfügung?» und «Wie viel kostet das Produkt?» beantwortet werden. Da es für die Ermittlung dieser Angaben keine Berechnungsverfahren gibt, muss man sie schätzen. Eine zuverlässige Schätzung ist allerdings schwierig, denn es existieren keine einheitlichen Konzepte oder Standardverfahren.

Selbst wenn es nicht wichtig erscheint, die zu erwartenden Kosten zu kennen, weil das Projekt z.B. eine interne Entwicklung ist, die sowieso benötigt wird, sollte man mindestens wissen, wann das Produkt zur Verfügung stehen wird.

Dass die Aufwandschätzung wichtig ist und hohe Ansprüche daran gestellt werden, zeigt sich darin, dass es im PMBOK® Guide Version 5 innerhalb des Project Cost Management den Prozess «Estimate Costs» gibt und für eine Entwicklung nach CMMI (Capability Maturity Model Integration) bereits für Phase 2 (gemanagt) die nachvollziehbare Aufwandschätzung gefordert wird. In beiden Richtlinien wird jedoch nicht vorgegeben, wie eine Schätzung durchgeführt werden soll bzw. was unter einer nachvollziehbaren Schätzung zu verstehen ist.

Unterschiedliche Arten von Schätzverfahren

Es gibt im Wesentlichen zwei Arten von Schätzverfahren: heuristische und parametrische. Beim Einsatz von heuristischen Schätzverfahren, den älteren Verfahren, betrachtet man das Systemmodell in unterschiedlicher Verfeinerung und ermittelt aufgrund von Erfahrungen aus früheren Projekten die gewünschten Werte. Aufgrund des ausgeprägten «subjektiven» Einflusses werden heuristische Schätzverfahren, wenn sie auf ganze Projekte angewandt werden, heute nicht mehr als nachvollziehbar betrachtet. Daher sollte und kann man sie nur zur Schätzung auf dem «atomaren» Niveau anwenden, also z.B. zur Schätzung einer Funktion oder einer Routine oder zur Ermittlungen von Kennzahlen zur Bewertung von Elementen des Systemmodells.

Bei den parametrischen Schätzverfahren werden Faktoren und Kennzahlen genutzt, um mit Hilfe von Formeln die gesuchten Werte zu berechnen. Dadurch bekommen sie den Nimbus von «Genauigkeit».

Diese Schätzverfahren können dann als nachvollziehbar betrachtet werden, wenn die Entstehung der Faktoren und Kennzahlen sowie die benutzten Formeln verständlich sind.

Vorgehen bei der Aufwandschätzung von Softwareprojekten

Ziel sollte sein, zuerst zu ermitteln, was in eine Schätzung eingeht bzw. eingehen sollte und wie die Schätzergebnisse ermittelt werden.

Ausgehend von den Produktanforderungen wird bei der Softwareentwicklung der Projektstrukturplan erstellt. Dieser enthält u.a. das Systemmodell, das die Grundlage bildet für die Aufwandschätzung. Die Bewertung der funktionalen Komplexität der Elemente des Systemmodells führt zusammen mit entsprechenden Kennzahlen zur Ermittlung des Softwareaufwands, der wiederum für die Erstellung des funktionierenden Codes benötigt wird.

Zudem enthält der Projektstrukturplan auch eine Liste der unterstützenden Tätigkeiten. Diese erzeugen zwar keinen Code, sind aber für das Projekt wichtig: das Projektmanagement, die Erstellung von Testfällen, Fehlerbehandlung, Schulungen usw. Das Problem beim Schätzen ist, dass diese Tätigkeiten, die teilweise sehr aufwändig sind, gerne «vergessen» werden, weil man oft keine Vorstellung des erforderlichen Aufwands hat und daher meint, man könne sie so «nebenher» erledigen.

ASS-Tipp

Der Softwareaufwand und der Aufwand für die unterstützenden Tätigkeiten ergeben den Projektaufwand, der für die Erstellung des Produkts erforderlich ist – falls keine Probleme auftreten.

Projektrisiken

Mögliche Probleme – und die kann es in jedem Projekt geben – werden bei Aufwandschätzungen üblicherweise global berücksichtigt: Man schätzt den zur Behebung aller unvorhergesehenen Probleme erforderlichen zusätzlichen Aufwand und addiert ihn zum Projektaufwand. Oder man multipliziert den Projektaufwand mit einem Faktor grösser 1. In beiden Fällen wird nicht berücksichtigt, dass nicht alle Risiken immer existieren (Risiken können sich «von selbst» auflösen), nicht alle Risiken eintreten müssen, nicht alle Risiken die gleiche Eintrittswahrscheinlichkeit haben und nicht alle eingetretenen Probleme die gleiche Auswirkung auf das Projekt haben. Grosse Projekte brauchen dementsprechend ein Risikomanagement zur Überwachung der Risiken. Ausserdem müssen die möglichen Risiken detailliert betrachtet werden in Bezug auf Eintrittswahrscheinlichkeit und Auswirkung, d.h. zusätzlichen Aufwand.

Das Projektteam

Die Dauer des Projekts, d.h. der Fertigstellungstermin, hängt vom Projektteam ab. Im Allgemeinen wird zur Berechnung der Dauer der Projektaufwand durch die Anzahl der verfügbaren Mitarbeiter geteilt. Dies ergibt aber nur in Sonderfällen ein zuverlässiges Ergebnis, denn in die Berechnung der Dauer sollten die folgenden Eigenschaften des Projektteams eingehen: die Qualifikation der einzelnen Mitglieder bzw. deren spezielle Fähigkeiten und damit deren Produktivität sowie deren Verfügbarkeit. Ausserdem sollte bedacht werden, dass bei Softwareprojekten die Aufgaben nicht beliebig auf die Mitarbeiter aufgeteilt werden können und mit einer steigenden Anzahl von am Projekt beteiligten Mitarbeitern der Kommunikationsaufwand steigt. Dadurch sinkt die Gesamtproduktivität des Teams.

Projektsteuerung, Kosteneinhaltung und Projektcontrolling

In den vorangehenden Betrachtungen wurde die Aufwandschätzung als wichtiges Hilfsmittel bei der Projektplanung behandelt. Dies ist auch der vorherrschende Einsatz der Aufwandschätzung.

Man sollte eine Aufwandschätzung aber auch in zwei anderen Bereichen des Projektmanagements einsetzen. Der eine Bereich ist die Projektsteuerung. Hier hilft die Aufwandschätzung bei der Bewertung der Auswirkungen von Änderungen: Unter Berücksichtigung dessen, was erledigt ist, und der bei der Durchführung gewonnenen Erfahrungen wird ermittelt, wie viel Zeit für den Rest der Arbeiten benötigt wird. Man schätzt also ab, ob der Fertigstellungstermin eingehalten werden kann. Weiterhin kann festgestellt werden, ob die zu erwartenden Kosten eingehalten werden oder um wie viel sie überschritten werden. Zusätzlich zu den obengenannten Änderungen unterliegt jedes Projekt einer dauernden Änderung des Projektumfelds: Personalfluktuation, Organisationsänderungen beim Auftraggeber, zusätzlich gewünschte Funktionalitäten, nicht mehr benötigte oder geänderte Funktionalitäten usw. Mit laufend wiederholten Schätzungen unter Berücksichtigung der Änderungen kann ermittelt werden, welche Auswirkungen die Änderungen auf das Projekt haben.

Der dritte Bereich, in dem Aufwandschätzung eingesetzt werden sollte, ist das Projektcontrolling. Bei parametrischen Schätzverfahren werden viele Faktoren und Kennzahlen verwendet. Die Aufgabe des Projektcontrollings ist es u.a., durch Nachkalkulation sicherzustellen, dass Faktoren richtig sind und Kennzahlen den aktuellen Erfahrungen der Softwareentwicklung entsprechen. Die Faktoren und Kennzahlen sollten dann unternehmensweit verfügbar gemacht werden.

Schlussbetrachtungen

Für die zuverlässige Aufwandschätzung eines Softwareprojekts müssen eine Reihe wichtiger Projektaspekte betrachtet werden. Daher erfordert die Schätzung selbst einen hohen Aufwand und einige Erfahrung. Wegen der Komplexität der Schätzung werden die heutigen Schätzverfahren durch entsprechende Tools automatisiert, sodass die Übernahme der Information aus dem Systemmodell erleichtert und die Aufwandschätzung sowie deren Wiederholung mit aktuellen Daten vereinfacht wird.


Autor/in

Dipl.-Ing. Klaus Jantzen