Poor Man's Estimation Toolbox - 4flow

07.11.2005 - Poor Man's Estimation Toolbox. Aufwandsabschätzung mit Humphrey's PROBE und Monte-. Carlo Simulationen. Dr. Matthias Vitt m.vitt@4flow.
769KB Größe 3 Downloads 300 Ansichten
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