Folien
Transcrição
Folien
Aufwandsschätzung von Softwareprojekten Florian Pilz [email protected] - Florian Pilz - Methoden zur Aufwandsschätzung von Softwareprojekten und deren Zuverlässigkeit Übersicht 1. Motivation 2. Planning Poker 3. Zuverlässigkeit 4.Evidence Based Scheduling 5. Fazit - kurzen Überblick wozu Schätzmethoden nötig Planning Poker und EBS Schätzmethoden Zuverlässigkeit: was, Limit, Verbesserung wichtigste Punkte nennen & zusammenfassendes Beispiel Motivation Motivation • Schneesturm-Simulator • Winter 2012 • realisierbar? commons.wikimedia.org (gemeinfrei) - Firma Schneeflocke möchte Simulator zur Gefahrenvorhersage entwickeln (Lawine, Glatteis, ...) muss rechtzeitig fertig sein (sonst Ruin wegen fehlenden Umsatz) ermitteln ob realistisch durch Schätzmethoden Realisierbarkeit • ermitteln durch Schätzmethoden • mögliche Maßnahmen: ‣ Umfang verringern ‣ mehr Entwickler ‣ Sandsturm-Simulator kaufen - gibt Methoden zur Aufwandsschätzung Aufwand = Kosten, Personal, Entwicklungsdauer im Vortrag: Aufwand = Zeit Maßnahmen, falls so nicht realisierbar Funktionsumfang (Scope): nur Schneelawinen, nur Gebirgsstraßen Logan Ingalls „11g poker chips“, CC BY 2.0 Planning Poker Planning Poker (Grenning, 2002) • für agile Teams • schnelles, grobes Abschätzen • jeder ist beteiligt • verhindert Beeinflussung Jason Jacobs „Poker Chips“, CC BY-NC 2.0 (beschnitten) - agil = feingranulare Aufgaben (User Stories) => kleine Aufgaben nicht ganzes Projekt Ziele sind ... damit Kunde / Visionär entscheiden kann, was er will („Oh, so teuer? Dann lieber B statt A.“) im Gegensatz zur Gruppendiskussion nicht nur der lauteste & „einflussreichste“ Planning Poker commons.wikimedia.org (gemeinfrei) - jeder Entwickler hält folgende Karten - Zahl bedeutet Aufwand in Stunden - As = „splitten“ oder mehr Info => back to customer Planning Poker commons.wikimedia.org (gemeinfrei) - Schätzmethode läuft wie folgt ab User Story in Tischmitte, kurze Erklärung, Verständnisfragen User Story = textuelle Beschreibung eines Features jeder Entwickler wählt individuell Karte alle decken gleichzeitig auf (jeder, unabhängig) Planning Poker commons.wikimedia.org (gemeinfrei) - hier: 1, 3, 3, 7 d.h. uneinig Uneinigkeit = unterschiedliche Annahmen, z.B. textuelle oder graphische Darstellung niedrigste (1) und höchste (7) Schätzung erklären neu schätzen Planning Poker commons.wikimedia.org (gemeinfrei) - ähnliche Schätzung => Einigung auf 5h - sonst Schätzung verschieben und Aufgabe weiter aufspalten oder mehr Informationen einholen - Schneeflocke wendet Planning Poker für Schneesturm-Simulator an - Ergebnis: mit 4 Entwicklern in 9 Monaten - würde reichen, aber muss angezweifelt werden - Zuverlässigkeit überleiten Zuverlässigkeit Definition • Wahrscheinlichkeit, dass Schätzungen „nahe“ des tatsächlichen Aufwandes • empirisch ermittelt • für jede Schätzmethode einzeln - Schätzungen sind nie exakt - Beispiel: Planning Poker in Stunden => Release Mo 10:25 - genauer Termin unwichtig, 1 Tag Verzögerung nicht so schlimm, 1-2 Monate schon - nachfolgend steht Zuverlässigkeit daher für ... - maximale Abweichung erlauben => „nah“ - empirisch: Schneeflocke hat bereits 10x mit diesem Team & Planning Poker geschätzt - üblicherweise je Schätzmethode ermittelt, aber auch andere Kriterien möglich (Team, Domäne) - nachfolgend Limitierungen & Verbesserungen Limitierungen vgl. (Boehm, 1984) Integrationstests Systemtests Aufwand Auslieferung tatsächlicher Aufwand Implementation Entwurf Anforderungsanalyse Zeit, Informationen - verfügbare Informationen - Kegel der Unsicherheit - am Beispiel vom Wasserfall-Modell Limitierungen Zuverlässigkeit vgl. (Boehm & Sullivan, 2000) interaktive Verarbeitung erste höhere Programmiersprache Objektorientierung Zeit, technische Innovationen - technische Innovationen - ablösen von Assembler durch Programmiersprache usw. - am Beispiel von Planning Poker: Entwickler haben noch keine Erfahrungen mit neuer Technologie - lernen mit der Zeit dazu => Zuverlässigkeit wird besser - anschließend Verbesserungsmöglichkeiten Verbesserungsmöglichkeiten • Projekt mehrmals abschätzen ‣ wegen verfügbaren Informationen Integrationstests Systemtests Aufwand Auslieferung tatsächlicher Aufwand Implementation Entwurf Anforderungsanalyse Zeit, Informationen - bei Gewinn wichtiger Informationen neu schätzen - z.B. nach fertigem Entwurf, sobald Kunde Änderungswünsche einreicht usw. - Firma Schneeflocke kann so frühzeitig die Schätzung überprüfen => neue Schätzung mit tieferem Verständnis => bisheriger Fortschritt und Schätzungen der Features gegenüberstellen Verbesserungsmöglichkeiten • Datensammlung verwenden ‣ Feedback ‣ weitere Schätzmethoden - Datensammlung = abgeschlossene Projekte / Aufgaben mit Aufwand, Schätzung, Probleme, Komplexität, ... - Qualität der Schätzmethode mit Datensammlung erhöhen - Feedback: Entwickler lernen nur bei Gegenüberstellung von Schätzung und tat. Aufwand => hilft Firma nicht sofort für das aktuelle Projekt, aber auf lange Sicht - weitere Methoden: wird im nächsten Kapitel eine vorgestellt Verbesserungsmöglichkeiten (Jørgensen, 2007) • Verwenden mehrerer Schätzungsmethoden Planning Poker 9 Monate COCOMO 24 Monate 15.4 Monate Analogie 13 Monate Delphi-Methode 16 Monate Expertensystem 15 Monate - mehrere Schätzmethoden = mehrere Schätzungen für dasselbe Projekt - z.B. (informelle) Analogie: ein Entwickler hat schonmal Simulator entwickelt, schätzt aus Erfahrung ab (Ähnlichkeit) - Aussage (hier am Mittelwert): Schätzungen gehen weit auseinander => keine hohe Zuverlässigkeit, wahrscheinlich zu lang => genannte Maßnahmen + neu schätzen - am besten geeignete Kombination verschiedener Methoden => ergänzen sich => günstig mehrere Schätzungen Evidence Based Scheduling Voraussetzungen (Spolsky, 2008) • Projekt in kleine Aufgaben zerlegen • Aufgaben unter Entwicklern verteilen • jeder schätzt individuell • rein intuitiv, kein formaler Prozess - EBS wurde von Joel Spolsky erfunden und ist ein algorithmisches Modell - d.h. läuft automatisch nach festem Algorithmus ab => setzt voraus, dass ... - jeder Entwickler verantwortlich für bestimmte Aufgaben hier: Projekteigenschaften = Schätzung + zuständiger Entwickler Schätzungen speichern => Datensammlung Bauchgefühl Geschwindigkeit • nach Fertigstellung einer Aufgabe • Geschwindigkeit = geschätzt / tatsächlich Jane Doe A B C D E F 2 4 4 16 2 3 tatsächliche Dauer 4 8 2 1 6 geschätzte Dauer Geschwindigkeit - 32 0.5 0.5 2 0.5 2 0.5 nach Fertigstellung die tatsächliche Zeit notieren => Datensammlung Datensammlung enthält nun Schätzung + tatsächlichen Aufwand Geschwindigkeit pro abgeschlossene Aufgabe bestimmen geschätzte Dauer / tatsächliche Dauer Beispiel ... Aufgaben A, B, C, D, E, F mit Schätzung & abgeschlossen, verschiedenen Geschwindigkeiten 1/3 => 2 und 2/3 => 0.5 Zukunft vorhersagen • offene Aufgabe wählen • durch zufällige Geschwindigkeit teilen • für jede Aufgabe & Entwickler wiederholen • 100 solcher Zukünfte berechnen - EBS wird versuchen die Zukunft vorherzusagen Monte Carlo Simulation (Zufallsexperimente) Geschwindigkeit desselben Entwicklers wählen, z.B. Jane <-> Jane Bsp: Aufgabe 10h geschätzt, Geschwindigkeit 2 wegen doppelt so schnell fertig => 5h aufsummieren der Zeiten Urlaub, Arbeitszeiten & Abhängigkeiten beachten ersten 3 Punkte ergeben eine mögliche Zukunft 100 Zukünfte = jede Zukunft hat 1% Wahrscheinlichkeit ungewisse Zukunft mit freundlicher Genehmigung von Fog Creek Software - 100 Zukünfte sortiert, d.h. kürzeste ist 1%, zweitkürzeste 2%, ..., längste 100% weil 2% auch 1% einschließt (Abschätzung nach oben) lange Lücken = Wochenende kurze Lücken = Feierabend ungewiss, da lang gestreckt (hier: keine 100 Zukünfte) gewisse Zukunft mit freundlicher Genehmigung von Fog Creek Software - gewiss, da ziemlich sicher an einem Tag - wegen Wochenende Verschiebung möglich - noch schlimmer wenn Urlaub ab nächster Woche Zeitpunkt der Fertigstellung Entwicklung der Zukunft 03.01.13 03.12.12 02.11.12 02.10.12 95% 50% 5% 01.09.12 01.08.12 01.07.12 31.05.12 01.12.11 01.01.12 01.02.12 01.03.12 01.04.12 01.05.12 Zeitpunkt der Berechnung vgl. (Spolsky, 2008) - EBS algorithmisch => automatisch => Zukunft täglich neu berechnen - Linien des 5%, 50% und 95%igen Enddatums über die Zeit der Berechnung - je näher zusammen, desto gewisser die Zukunft (wenig Varianz) - sollten über Zeit daher konvergieren - bei Anstieg aller Linien = Projekt verzögert sich (mehr Aufgaben oder Verschlechterung der Schätzung) Vorteile • Geschwindigkeit einbeziehen • Risiken frühzeitig erkennen • hohe Zuverlässigkeit durch: ‣ automatische Aktualisierung ‣ Feedback durch Datensammlung ‣ Kombination von Schätzmethoden - Geschwindigkeit: Jane Doe braucht immer doppelt so lang wie geschätzt * wenn man es nicht weiß => sehr unzuverlässig * Geschwindigkeit mit einbeziehen => sehr zuverlässig - Risiken = stetig steigende Feature-Anzahl, fehlende Konversion der Zukunfts-Linien, zu später Release - Graph wird täglich aktualisiert (neue Features, niedrige Geschwindigkeit etc. wird einbezogen) - Feedback verbessert Schätzfähigkeiten der Entwickler - weitere Schätzung mit wenig Aufwand Nika Trie B & Poppy Yunita „The Programmer“, some rights reserved Zeitpunkt der Fertigstellung Vorteile 03.01.13 03.12.12 02.11.12 02.10.12 95% 50% 5% 01.09.12 01.08.12 01.07.12 31.05.12 01.12.11 01.01.12 01.02.12 01.03.12 01.04.12 01.05.12 Zeitpunkt der Berechnung * Firme zerlegt Projekt in Aufgaben * Aufgaben Entwickler zuordnen und schätzen intuitiv * Entwickler erledigen Aufgaben => Datensammlung => Feedback => ermöglicht EBS * EBS berechnet weitere Schätzung (automatisch) * neue Aufgaben werden verteilt und geschätzt, alte wenn nötig neu geschätzt => EBS berechnet täglich neu => Entwicklung der Zukunft warnt vor Scope Creep ===> Firme Schneeflocke kann von Terminproblemen frühzeitig erkennen (und dagegen handeln) Fazit Fazit • für Projektmanagement • limitiert durch Information & Innovation • hohe Zuverlässigkeit durch ‣ mehrmalige Schätzungen ‣ Datensammlung (Feedback, neue Methoden) ‣ Nutzung mehrerer Schätzmethoden - Aufwandsschätzung von Softwareprojekten für ... - Projektmanagement: Funktionsumfang, Personal, Aufwand & Ertrag, Preisverhandlungen, ... - Limitierung: Wissen über Endprodukt je nach Fortschritt, Auswirkung von Innovation auf Produktivität noch unbekannt - Zuverlässigkeit erhöhen durch * mehrmaliges schätzen um Schätzung verfügbaren Infos anzupassen * Datensammlung (Feedback = Entwickler lernen, Faktoren math. Modelle anpassen; neue Methoden wie EBS) * mehrere Schätzmethoden / Kombination, bestmöglich mit verschiedenen Ansätzen und geringe Kombinationskosten Vielen Dank für Ihre Aufmerksamkeit! Quellenangaben • Logan Ingalls „11g poker chips“, CC BY 2.0 • Jason Jacobs „Poker Chips“, CC BY-NC 2.0 (beschnitten) http://www.flickr.com/photos/plutor/1818402449/ http://www.flickr.com/photos/hisc1ay/116988432/ • Nika Trie B & Poppy Yunita „The Programmer“, some rights reserved, • James W. Grenning „Planning Poker or How to avoid analysis paralysis while release planning“, 2002, http://www.renaissancesoftware.net/files/articles/PlanningPoker-v1.1.pdf • Barry W. Boehm „Software Engineering Economics“, IEEE Transaction on Software Engineering, 10(1):4–21, 1984 http://www.petshopboxstudio.com/blog/2010/07/free-vector-character-the-programmer/ Quellenangaben • Barry W. Boehm und Kevin J. Sullivan „Software economics: a roadmap“. In Anthony Finkelstein, Hrsg., The Future of Software Engineering 2000: 22nd International Conference on Software Engineering, Seiten 319–343, New York, USA, 2000 • Magne Jørgensen „Forecasting of Software Development Work Effort: Evidence on Expert Judgement and Formal Models“, International Journal of Forecasting, 23(3):449–462, 2007 • Joel Spolsky „More Joel on Software: Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity“, Apress, Berkeley, USA, 1. Auflage, 2008