Schlagwort-Archiv: Aufwandsschätzung

Aufwandsschätzung als Kernaufgabe des IT-Managements

Der starke Fokus auf Kosten/Nutzen erfordert eine genauere Planung zukünftiger und post mortem Analyse vergangener Projekte. Das Multiprojektmanagement hat die Aufgabe anstehende Projekte einer einheitlichen Bewertung zu unterziehen. Vor dem Hintergrund knapper Investitionsbudgets stellt sich vor dem Anfang der Projekte die Frage nach strategischer Relevanz und Wirtschaftlichkeit. Die Ertragsmessung von IT-Projekten gilt bis heute zu den größten Herausforderungen. Die Probleme der monetären Quantifizierung von IT-Systemen liegen vor allem in der Darstellung dieser Erträge in Nutzengrößen.[1] Eine weitere Herausforderung besteht darin die Aufwände für diese Projekte im Vorfeld genauer zu schätzen um zugeteilte Ressourcen optimiert auszulasten.  Ein Schätzverfahren für Projekte im MPM muss somit den Anforderungen, Projekte im Vorfeld nach deren Kosten/Nutzen zu bewerten und dem Wunsch nach exakten Informationen, gerecht werden. Valide Schätzungen der zu erwarteten Entwicklungsaufwände sind für IT-Projekte der erste und wichtigste Erfolgsfaktor. Die Genehmigung des Projektes durch das MPM hängt grundlegend von der Wirtschaftlichkeit des geplanten Projektes ab. Der Nutzen muss höher sein als die Kosten, sonst gelangt das Projekt nicht über den Projektantrag hinaus. Die Dringlichkeit einer aufwändigen Schätzung für IT-Projekte wird von den meisten Unternehmen unterschätzt. Der qualitative und kommerzielle Projekterfolg hängt maßgeblich von einer genauen Schätzung ab, mit der Voraussetzung, dass das geplante Produkt möglichst ausführlich spezifiziert ist. Doch gerade in der agilen Entwicklung ist eine möglichst exakte Produktspezifikation, wie sie im Wasserfallmodell zu finden ist, nicht möglich. Statt zu Projektstart auf der Basis eines detaillierten Pflichtenheftes einen fixen Projektplan für die Projektlaufzeit zu erstellen, wird in einem agilen Vorgehen wie SCRUM[2] das Projekt im Release Plan nur grob in Sprints[3] gesplittet, in denen, vom Entwicklerteam, definierte Funktionsumfänge bereitgestellt werden.[4] Fehler in der Schätzung haben in der Regel weitreichende und fatale Auswirkungen auf die Durchführung eines Projektes. Großzügige Schätzungen oder hohe Unsicherheitsgrade die den Blick auf die wesentlichen Aufgaben und Risiken vermeiden, werden für Entwicklungsprojekte schon mit dem Start zu einer hohen Bürde. Das nächsten Abschnitte stellen die gängigsten Schätzmethoden vor.

Übersicht bekannter Schätzmethoden

Die vermeintliche Genauigkeit algorithmischer Verfahren wird hoch gepriesen. In der Projektpraxis vieler Unternehmen werden diese Verfahren aber kaum genutzt. Die nächste Abbildung gibt einen Überblick und eine grobe Klassifizierung der bekanntesten Schätzmethoden.

Klassifizierung

Klassifizierung der Schätzmethoden (in Anlehnung zu [5])

Empirische Schätzmethoden nutzen Erfahrungen und Referenzinformationen aus vergangenen Projekten deren Qualität stark von der Ähnlichkeit und Vergleichbarkeit abgeschlossener Projekte abhängt. Algorithmische Verfahren errechnen den Aufwand für ein Softwareprojekt mit Hilfe mathematischer Formeln und dem Durchlaufen einer Reihe von Schritten.

Analogiemethode

In der Analogiemethode werden Daten aus bereits abgeschlossenen Projekten als Grundlage für das zu schätzende Projekt herangezogen. Die vorherigen Projekte müssen vergleichbar mit dem geplanten Projekt sein. Der Aufwand der in der Vergangenheit angefallen ist, ist für Unterschiede in Aufgabenstellung und Realisierungsbedingungen entsprechend anzupassen. Das umzusetzende Projekt muss hohe Ähnlichkeiten zu bereits durchgeführten Entwicklungen aufweisen. Datenquellen können entweder eine eigene Erfahrungsdatenbank, empirische Untersuchungen oder Benchmarks sein. Die Verwendung der Analogiemethode wird mit einer Abfolge von 3 Schritten beschrieben.[6]

  • Für das zu schätzende Projekt wird die aus der Aufgabenstellung, Umfang und Schwierigkeitsgrad ein Leistungsprofil erstellt.
  • In zweiten Schritt werden die Unterschiede zwischen dem geplanten und dem abgeschlossenen Projekt ermittelt
  • Im letzten Schritt wird das Delta zwischen abgeschlossenem und neuem Projekt bestimmt und bewertet.

Die Vorteile der Analogiemethodik sind die frühe Verfügbarkeit der Ergebnisse und der geringe Aufwand. Trotzdem lassen sich die Zahlen nicht optimal vergleichen weil eine hohe Voraussetzung bezüglich der Qualität der Daten besteht. Diese Methode ist somit für Prototypprojekte ungeeignet da vergleichbare Projekte meistens nicht vorhanden sind.[7]

Agile COCOMO II

Es gibt sehr viele Kostenschätzmodelle die auf Basis des COCOMO Modells entwickelt wurden. Agile COCOMO II ist eine solche Schätzmethode welches vom Center for Software Engineering der Univeristy of Southern California entwickelt wurde. Sie enthält das vollständig parametrische COCOMO Model und ist eine analogiebasierte Schätzung. Die webbasierte Anwendungen ist über die Seite der University of Southern California[8] zu erreichen. Noch gibt es zu dieser Methode zu wenige empirische Untersuchungen die einen Einsatz in der Praxis empfehlen.

Function Point Analyse (FPA)

Die Function Point Analyse (auch –Analyse oder –Methode) wurde in den 1970er und 1980er Jahren von Allan J. Albrecht für das Unternehmen IBM entwickelt. Die FPA misst die Größe einer Anwendung objektiv und unabhängig von technischen Randbedingungen.[9] Alan J. Albrecht hat die Problematik der Codemessung erkannt und führte das Function-Point-Maß ein, welches zur damaligen Funktionsmodellierung mit Funktionsbäumen (HIPO-Diagramm) passte. In einem weiteren Beitrag wurde die Zählmethode näher erläutert[10]. Ziel der FPA war die Eliminierung der Einflüsse, die sich aus der Verwendung unterschiedlicher Programmiersprachen ergeben und eine Schätzung zu einem früheren Zeitpunkt. Ausgangspunkt der Schätzungen sind Funktionen, die die Geschäftsvorfälle aus Sicht der Anwender abdecken sollen. Vorteile durch Function Points:

  • Klar definierte Vorgehensweise
  • Gute Vergleichsmöglichkeit
  • Nicht Lines of Code sondern die Anforderungen stehen im Vordergrund

Nachteile:

  • Anforderungen nicht immer einer Kategorie zuordenbar
  • Großer Aufwand für große Projekte
  • Kategorienaufgliederung veraltet und somit nach objektorientierten Kriterien nicht nachvollziehbar
  • Baukastenprinzip vernachlässigt Abhängigkeiten und Synergien zwischen Programmteilen

Die FPA wurde noch einmal von Barry W. Boehm erweitert indem er den Fokus von der Umsetzungsdauer hin zur Komplexität eines Features verschoben hat. Warum trotzdem das Schätzen der Komplexität, wie man es aus dem Planning Poker in Scrum kennt, nicht weiter verfolgt werden sollte, wird im Blogbeitrag „Schätzmethoden in der Praxis“ unter „Warum Schätzen in abstrakten Maßen nicht ausreicht“ erläutert.

Bewertung der bekanntesten Schätzmethoden

Tendenziell gelten empirische Verfahren als weniger aufwändig, algorithmische Verfahren dafür als genauer und standardisierter.  In der nächsten Tabelle werden die gängigen Bewertungen der wichtigsten Schätzverfahren aufgezeigt. [11]

Methode Komplexität Vorteile Nachteile
Function Points eher hoch Quasistandard, Transparenz Datenbasis nötig, teilw. Subjektiv
COCOMO II mittel bis hoch gut für erste grobe Schätzung, Toolunterstützung Größenbestimmung muss vorliegen
Expertenschätzung gering bis mittel schnell und flexibel Subjektivität, Transparenz
Analogieverfahren gering bis mittel schnell für ähnliche Projekte nicht anwendbar für neuartige Projekte, Datenbasis nötig
Prozentsatzmethode gering früh einsetzbar nach erster Phase Datenbasis nötig, Varianz für neue Projekte

Quellen: [1] Wieczorrek, H. W. & Mertens, P., 2005. Management von IT-Projekten. Berlin Heidelberg: Springe Verlag. , S. 215 – 216)
[2] Scrum (englisch für Gedränge) ist ein Vorgehensmodell der Softwaretechnik. Quelle: Wikipedia
[3] Stellt einen festgelegten Zyklus (Iteration) in der Regel von zwei bis vier Wochen dar, bei dem das Produkt entwickelt wird.
[4]Kesten, R., Müller, A. & Schröder, H., 2012. IT-Controlling. München: Franz Vahlen GmbH.
[5] Plewan, H.-J., 2006. Methodische Aufwandsschätzung aus Sicht eines agilen Projektmanagements. Agiles Projektmanagement, pp. 83-100.
[6] Biethahn, Mucksch & Ruf, 2004. Ganzheitliches Informationsmanagement., S. 208)
[7] Litke, H.-D., 2007. Projektmanagement. München: Hanser.
[8] Agile Cocomo II Sunset.usc.edu
[9] Albrecht, A. J., 1979. Measuring Application Development Productivity, Procedure of Joint SHARE. GUIDE and IBM Symposium, Oktober.
[10] Vgl.  (Albrecht & Gaffney, Software function, source lines of code, and development effort prediction: A software science validation ;, 1983)
[11] Plewan, H.-J., 2006. Methodische Aufwandsschätzung aus Sicht eines agilen Projektmanagements. Agiles Projektmanagement, pp. 83-100.

Schätzmethoden in der agilen Praxis

Gerade für den agilen Projektmanager lohnt sich ein Blick auf einige empirische Studien, wie weit verschiedene Schätzverfahren verbreitet sind. Eine gute Übersicht findet sich in Molokken & Jorgensen, 2003. Auf Basis dieser Daten kann man auf folgende grobe Verbreitung schließen:

 

Abb. 3 Verbreitung der Schätzverfahren[1]

Zwischen 70 % und 80 % der Befragten schätzen die Aufwände mit der Expertenschätzung. In vielen Publikationen werden aber fast umgekehrt proportional die Expertenschätzung nur zu ca. 17 % behandelt.[2] Hier scheint die unternehmerische Praxis weit entfernt von der Theorie zu liegen. Auf die Frage warum die Expertenschätzung so weit verbreitet ist bietet Jorgensen in derselben Studie einige Antworten an. Es gibt danach keinen Beweis dass algorithmische Verfahren genauer als empirische Verfahren bzw. als Expertenschätzungen sind. Die 15 verglichenen Studien zeigen, dass gerade die Expertenschätzung in der Genauigkeit der Schätzungen weit vorne liegt. Fünf Studien sahen die höchste Genauigkeit in der Expertenschätzung, drei in algorithmischen Verfahren und zwei im Analogieverfahren. Die restlichen fünf fielen Unentschieden aus.

Die Expertenschätzung als Einstiegspunkt für zuverlässige Schätzungen

Die Expertenschätzung ist ein Prognoseverfahren bei dem das Wissen eines ausgewählten Personenkreises genutzt wird.  Die Expertenschätzung ist gleichzeitig die am weitesten verbreitete Schätzmethode. Sie gilt als weniger aufwändig aber dafür ist sie nicht standardisiert weil standardisierte Verfahren auf einem definierten Prozess mit geprüften und einheitlichen Eingangsparametern beruhen.[3]

Der Expertenschätzung sollte zu Beginn zumindest ein einfaches Regelwerk wie sie in Conboy’s Cost Estimation in Agile Software Projects[4] und Jorgensens Practical Guidelines for Expert-Judgement-Based Software Effort Estimation[5] beschrieben, vorgelegt werden.

  • Keine Vermischung von Schätzung, Planung und Angebotserstellung
  • Beteiligung von Entwicklern und Managern
  • Beteiligung von Schätzern mit ähnlichen Projekterfahrungen
  • Schätzergebnisse kombinieren
  • Begründung jeder Schätzung
  • Erst schätzen, wenn die Anforderungen festgelegt sind
  • Dokumentation der Erfahrungen.

Warum Schätzen in abstrakten Maßen nicht ausreicht

Ein wichtiger Unterschied zu klassischen Schätzverfahren liegt zunächst in der Unterscheidung zwischen Komplexität und Aufwand. In vielen Büchern der agilen Softwareentwicklung wird empfohlen die User-Stories in Komplexität zu schätzen weil diese besser zu handhaben sind. In der agilen Projektpraxis wurde aber die Erfahrung gemacht, dass man sich zwar immer auf bestimmte User-Stories bzw. Komplexitäten „committet“ (geeinigt) hat, jedoch war für das Multiprojektmanagement der Nutzen oder der Aufwand eines Komplexitätspunktes nicht greifbar. Deswegen ist die Messung der Team Velocity[6] unumgänglich um später sagen zu können: „ Unser Team schafft 74 Story-Points pro Sprint (10 Tage)“. Der Umfang eines fachlichen Features lässt sich in einem abstrakten Komplexitätsmaß (z.B. Function Points) ausdrücken. Der Aufwand zur Umsetzung leitet sich dann aus weiteren Faktoren ab. Die Umrechnung in Aufwand muss somit auch mit in die Schätzung einfließen.

Planning Poker auf Basis von Story Points

Die Planning Poker Methode ist eine sehr einfache Methode, um Backlog Items oder User Stories zu schätzen und findet im SCRUM seine Anwendung. Sie nimmt verhältnismäßig kurze Zeit in Anspruch und beruht auf der Expertenschätzung. Nach dem die Anforderungen mit Hilfe einer Story Map in User Stories zerlegt worden sind, werden diese in Story Points geschätzt, die relative Schätzungen der Komplexität, des Aufwands oder der Dauer einer Story sind. Die Schätzung muss im Team erfolgen die dann auch verantwortlich für diese Schätzung ist.[7] Planning Poker wird mit Planning-Poker-Karten gespielt.  Dazu bekommt jedes Teammitglied ein Kartenset die mit der unreinen Fibonacci-Reihe nach Cohn (0, 1, 2, 3, 5, 8, 13, 20, 40, 100) nummeriert sind. Eine User Story wird dann ausgewählt und vom Product Owner beschrieben und eventuelle Fragen geklärt. Wenn alle Fragen geklärt sind, wählt jedes Teammitglied eine Karte aus, die den Wert repräsentiert, der diesem Teammitglied als korrekt erscheint. Erst wenn alle Mitglieder sich entschieden haben, werden die Karten gleichzeitig aufgedeckt. Die beiden Teammitglieder mit dem höchsten und dem niedrigsten Schätzwert erläutern wie sie auf die jeweiligen Werte gekommen sind. Durch diese Erläuterungen und dem Informationsaustausch werden Dinge klargestellt die evtl. noch geklärt werden müssen. Die Schätzung wird daraufhin wiederholt. In der Regel sind die Zahlen dann angeglichen. Der Moderator fragt dann, ob man sich auf den am meisten genannten Wert einigen kann. Ist dies der Fall wird die User Story mit den Story Points versehen. Dieses Verfahren gibt gute Schätzwerte ab, jedoch sollte zu Beginn einer solchen Schätzung die einzelnen Werte klar definiert werden. Eine gute Möglichkeit ist es, wenn das Team sich auf eine Beispielhafte User Story mit einem Story Point einigt. Diese „Prototyp Story“ muss auch nach dem Zeitaufwand bewertet werden. Dies erfolgt durch Erfahrungswerte aus früheren Sprints oder der Team Velocity.



[1] (Molokken & Jorgensen, 2003)

[2] Vgl.  (Jorgensen, A Review of Studies on Expert Estimation of Software Development Effort, 2004)

[3] (Buglione & Abran, 2007, S. 273)

[4] Vgl.  (Conboy & Keaveney, 2005)

[5] Vgl.  (Jorgensen, 2005)

[6] Team Geschwindigkeit

[7] Vgl. (Cohn, 2010, S. 107)

Ja zu Aufwandsschätzungen – aber wann?

Der richtige Zeitpunkt der Aufwandsschätzung ist ein wichtiger Aspekt für jedes Software-Entwicklungsprojekt. Voraussichtliche Aufwände sollen möglichst früh und möglichst genau geschätzt werden. Die erste Aufwandsschätzung wird von den Projektmanagern meistens sehr früh eingefordert. Meistens sind das aber Schätzwerte die zu ungenau sind. Die Cone of Uncertainty, eine Verlaufsbeschreibung von Unsicherheiten in einem Projekt, besagt, dass eine Schätzung vor der Anforderungsphase im Durchschnitt noch mit einer Unsicherheit von Faktor 4 belastet ist. Die Varianz von 4x bis 0,25 bedeutet, dass ein auf 12 Monate geschätztes Projekt am Ende tatsächlich zwischen 3 und 48 Monate dauern kann.[1]

Cone of Uncertainty[2]

Infolgedessen verweigern die Entwickler Aussagen zu jeglichen Aufwänden um bei einem Scheitern die Konsequenzen einer verbindlichen Schätzung zu umgehen. Eine verbindliche Schätzung wird in der mir bekannten Praxis generell nicht gegeben, trotzdem werden die Entwickler wegen Aussagen wie „Wir werden ungefähr zu diesem Zeitpunkt fertig“ an die Wand genagelt, wenn dieser Zeitpunkt überschritten wird.

Trotzdem ist es wichtig, dass die Entwickler beziehungsweise der Projektleiter eine Schätzung am Anfang eines Projektes abgeben. Diese Angaben sind wichtig für die Projek- und Ressourcenplanung. Agile Teams schätzen Aufwände nur für kurze Sprints, diese reichen aber für eine langfristige Projektplanung nicht aus. Beiden Parteien, dem Programm- oder Multiprojektmanagement und den Entwicklern muss die Unsicherheit einer Schätzung bewusst sein. Mit einer strukturierten Vorprojektphase die konform mit den agilen Prinzipien ist, können zudem die Unsicherheitsfaktoren (auch wenn es nur zu einem geringen Teil ist) gemindert werden. Diese Schätzungen sollten mit jedem Sprint oder Meilenstein nachjustiert werden.



[1] Vgl. (McConnell, 1997)

[2] Quelle Microsoft.com