Poor Man‘s Estimation Toolbox Aufwandsabschätzung mit Humphrey‘s PROBE und MonteCarlo Simulationen
Dr. Matthias Vitt
[email protected] 4flow AG, Berlin
Inhalt ! Das Problem Aufwandsabschätzung ! Watts Humphrey‘s PROBE Verfahren ! Das Monte-Carlo Verfahren ! Die Kombination PROBE & Monte-Carlo ! Ein Praxisbeispiel - die Toolbox ! Wie berücksichtigt man Risiken ! Woher kommen die Daten
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 2
„It‘s okay to be wrong, but not okay to be uncertain“ Tom DeMarco, „Waltzing with Bears“
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 3
Das Problem Aufwandsabschätzung ! first guess is last guess...(und ROI-Grundlage) ! Abschätzung ohne Daten ist der Regelfall – Unsicherheiten werden negiert. ! 30% der Projekte erleben kein Go-Live ! >50% der Projekte haben einen Cost-Overrun von 100% (Standish Group) ! „Code Complete am 22.6.2006“ ist ein absolutes No-No ! Ad-Hoc Abschätzungen berücksichtigen keine Risiken! ! Der geschätzte Aufwand hängt u.a. auch von Risiken ab (DeMarco)
! Risiken können als Verteilung von Werten dargestellt werden ! Verteilungen für bestimmte Risiken sind bekannt Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 4
Watts Humphrey‘s PROBE - 1 ! Teil des Personal Software Process (A discipline for software engineering) ! Ist für eine Person gültig ! Basiert auf so genannten Proxies (Kategorien): ! Substitut für Features, Module ! Starke Korrelation von Kategoriegröße und Aufwand gefordert ! Einfache Indentifizierbarkeit , Zählbarkeit ! Eine Kategorie kann mit einem „Logical File“ in den Function Points verglichen werden. ! Jede Kategorie muss normalverteilt sein. ! Grundlegende Größe sind Lines of Code (LOC) ! Die Produktivität wird aus historischen Daten gewonnen
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 5
Watts Humphrey‘s PROBE - 2 ! Schätzung des Aufwands ! geeignete Wahl des Proxies => linearer Zusammenhang zwischen Größe und Aufwand (Person-Month)
Produktivität ! Linearer Zusammenhang ist akzeptiert für ! sehr kleine bis mittlere Projekte ! Projekte mit weniger als 4 Entwicklern
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 6
Watts Humphrey‘s PROBE - 3 ! Historische Daten LOCs
Aufwand [MM]
98
0,21
110
0,236
123
0,27
142
0,32
PM
LOC
! Unsicherheit hängt u.a. vom geforderten Konfidenzintervall ab
! Beispiel LOC = 120, Konfidenz: 70%: ! Die Produktivität p ist ebenfalls mit einer Unsicherheit behaftet => Verteilung
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 7
PROBE‘s Grenzen ! Kategorien müssen normalverteilt sein ! Abzuschätzende Proxies sollten normalverteilt sein ! PROBE ist für eine einzelne Person entworfen
?
?
! Was macht man, wenn die Verteilungen der Estimated Proxies nicht normalverteilt sind? ! Was macht man, wenn nur der Kategorie-Typ bekannt sind, aber keine Abschätzungen vorliegen? Aufwand hängt von stochastischen Größen ab:
ist damit selbst eine stochastische Größe Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 8
Was man bräuchte ... ! Eine Methode um unterschiedliche stochastische Variablen richtig miteinander zu kombinieren.
Wie? Unsicherheit über LOC Kombinieren Unsicherheit über Aufwand
Unsicherheit über Produktivität
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 9
Dazu ein Beispiel... ! Ein Jogger trainiert regelmässig: ! Länge eines durchschnittlichen deutschen Trimm-Dich-Pfades:
5 7
10
! Wie lange dauert der nächste Lauf auf einem unbekannten Trimm-Dich-Pfad? 2
5
7
Kombination von Werten Unsicherheit über Geschw.
Unsicherheit über Zeit Unsicherheit über Länge
Poor Man‘s Estimation Toolbox
Lösung: Monte-Carlo Simulationen © 4flow AG 2-Dec-05
Seite 10
Das Monte-Carlo Verfahren Zufallsgenerator generiert N Zahlen zwischen 0 ... 1
0,97 0,71 0,37 0
! berücksichtigt die ursprüngliche Form der Input-Verteilungen
p
x
! erzeugt Datenreihen beliebiger Länge ! nutzt die kumulierte Verteilungs-Funktion zur Generierung von Samples
Nach N Versuchen erhält man Die Input-Verteilung Poor Man‘s Estimation Toolbox
x p
x © 4flow AG 2-Dec-05
Seite 11
PROBE & Monte Carlo - 1 ! Gegeben sind N Samples (LOC) einer Kategorie
! Produktivität wurde durch lineare Regression aus historischen Daten bestimmt:
! Berechnung von Aufwands-Samples bzw.
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 12
PROBE & Monte Carlo - 2 p
10000 Simulationsläufe
P 1,00
0,80 0,62 0,50
Aufwand [PM]
0 Aufwand [PM]
1,6
50 / 50 Chance
ca. 2,19 PM
Erwartungswert
ca. 2.64 PM
80%-Chance
< 3,87 PM
Risikoreserve
3,87 - 2,64 = 1,23 PM
Most likely
ca. 1,6 PM !
Poor Man‘s Estimation Toolbox
2,19
2,64
3,87
© 4flow AG 2-Dec-05
Seite 13
Ein Praxisbeispiel - die Toolbox ... ! Input ! Aufwand vs. Loc => x,y -Datensatz ! Verteilung innerhalb der Kategorie: => Samples ! Berechnung der Aufwandsverteilung: java -classpath toolbox.jar -Dproductivity.file=effort_vs_loc.dat -Dcategory.1=3,wizards.dat -Dcategory.2=10,gui.dat -Druns=10000 -Dresult.file=result.dat org.toolbox.Simulator
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 14
Wie berücksichtigt man Risiken? ! Der wahrscheinliche Aufwand hängt von Risiken ab.
! Typische Risiken ! Unterschätzung des Aufwands ! Requirements Creep ! Fluktuation innerhalb des Teams ! Project Crash ! Über- oder Unterperformance ! Berücksichtigung von Risiken mit Hilfe von Monte-CarloSimulationen (DeMarco)
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 15
Woher kommen die Daten? ! Das Tool cvsps liefert aus dem CVS Module
File
Datum
User
From
To
Wizard
Controller.java
23.11.2004
Matthias
1.2.2.1
1.2.2.2
! Iteration über die gesamte Change-History eines jeden Files mit Hilfe der Daten von cvsps Kategorie
File
Datum
Änderung (LOC)
Total
Analysen
Kosten
23.3.2004
56
613
Analysen
Kosten
10.4.2004
11
624
Analysen
Durchsatz
11.2.2004
315
576
! Produktivität / Aufwand durch SQL-Selects aus Zeiten und Änderungen ! Verteilungen der Kategorien ebenfalls durch SQL-Selects ! Verwendung weniger und einfacher Perl-Scripts Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 16
Zusammenfassung ! Humphrey‘s PROBE nutzt Kategorien (Proxies) als Schätzgegenstand ! Restriktionen von PROBE ! Aufwand hängt linear von der Größe ab. ! basiert auf normalverteilten Kategorien ! läßt keine Prognosen zu
! Monte-Carlo löst das Problem „nicht-normal“-verteilter Kategorien ! PROBE & Monte-Carlo erzeugen statistisch zuverlässige, „ManagementProof“ Prognosen für den zu erwartende Aufwand. ! Einfache Integration von Risiken ! Extraktion historischer Daten aus CVS möglich
Vielen Dank für Ihre Aufmerksamkeit
Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 17
Noch Fragen?
...gerne Poor Man‘s Estimation Toolbox
© 4flow AG 2-Dec-05
Seite 18