+ All Categories
Home > Documents > Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University...

Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University...

Date post: 05-Apr-2015
Category:
Author: berlin-reichard
View: 108 times
Download: 3 times
Share this document with a friend
Embed Size (px)
of 43 /43
Fachgebiet Software Engineering Übersicht © 22.06.22 Albert Zündorf, Kassel University Kostenschätzung Wieviel Stunden brauchen Sie, um ein Programm für die Berechnung der Varianz zu schreiben / zu testen? Wie sicher ist Ihre Schätzung? Wie lange brauchen Sie, um 1000 LOC zu spezifizieren, zu programmieren, zu testen? Wie viele Fehler machen Sie durchschnittlich pro 100 Zeiten Quelltext? Solche Fragen muss man mit höchstens 10% Ungenauigkeit beantworten können
Transcript
  • Folie 1
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Kostenschtzung m Wieviel Stunden brauchen Sie, um ein Programm fr die Berechnung der Varianz zu schreiben / zu testen? m Wie sicher ist Ihre Schtzung? m Wie lange brauchen Sie, um 1000 LOC zu spezifizieren, zu programmieren, zu testen? m Wie viele Fehler machen Sie durchschnittlich pro 100 Zeiten Quelltext? m Solche Fragen muss man mit hchstens 10% Ungenauigkeit beantworten knnen
  • Folie 2
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Ttigkeiten bei der Softwareentwicklung
  • Folie 3
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Ziele der Prozessmodellierung m Standardisierte Vorgehensweisen m Standardisierte (Teil-) Ergebnisdokumente Vergleichbarkeit von verschiedenen Projekten m Messungen von Prozessgren werden mglich / vergleichbar / bewertbar m Basis fr Schtzungen m Basis fr Planungen m Basis fr Verbesserungen
  • Folie 4
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Aufwandsmae Vergleichsbasiertes Schtzen: m neues Projekt 20% "grer" 20% mehr Zeit/Aufwand m Zeitmessung bleibt schwierig: l manuell: manipulierbar l Controller: ja, aber l automatisch: ungenau/gescheitert m Grenmessung: l leicht automatisierbar l reproduzierbar l...
  • Folie 5
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Messung der Programm/Problemgre m gngige Metriken l Lines Of Code l Function Points l Anzahl GUI-Elemente l Anzahl der HTML-Tags l Anzahl der Datenbanktabellenspalten, Anzahl SQL-Statement- Elemente l... m zur Arbeitsminimierung: Gre sollte leicht / automatisch messbar sein m Zeitschtzungen sind erfahrungsgem viel schwerer als Grenschtzungen m Watts Humphrey: l leicht messbar l intuitiv schtzbar l statistische Korrelation zu Zeitaufwand beschreibt Gte
  • Folie 6
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Lines of Code Messen der LOC: + Intuitiv + leicht messbar + korrelieren in gleichbleibendem Umfeld erstaunlich gut zum Zeitaufwand - unterschiedliche Einrckungen - Programmiererabhngig - Erfahrungsabhngig => zeitlich vernderlich - Programmiersprachenabhngig - komplexittsabhngig: 1 Zeile Betriebsystemscheduler entspricht 100 Zeilen GUI-Code - Copy-Paste Programmierung bringt mehr Zeilen als Refactoring in Methoden -...
  • Folie 7
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Reparaturmanahmen m einheitliche Indentierung z.B. mit JIndent m jeder Entwickler sammelt Daten ber seine persnliche Produktivitt (LOC/Hour) m Trendanalysen der Statistiken erfassen Erfahrungs-Speed-Up m programmiersprachenspezifische Daten sammeln (Sprachen werden nicht so oft gewechselt) m Korrekturfaktoren fr die Komplexitt einzelner Methoden statistisch ermitteln l Komplexitt: leicht, mittel, schwer, komplex l Gre: kurz, mittel, gro, riesig m Weitere Korrekturfaktoren fr die nichtfunktionalen Anforderungen COCOMO Kostenschtzungsverfahren m Varianz der statistischen Daten gibt exakte Auskunft ber die Gte des verwendeten Maes m Gre und Qualitt der statistischen Datenbasis erlauben Aussage ber Qualitt der Schtzung
  • Folie 8
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Lines of Code m LOC sieht eigentlich untauglich aus / man hat dabei ein mulmiges Gefhl m Humphrey sagt: l frag die Statistik ob dein Ma taugt l bei geringer Varianz hast du ein gutes Ma
  • Folie 9
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Function Points m Alternativen zu LOC: Function Point Methode m Zhlen der "syntaktischen Konstrukte" l # Methoden l # Parameter l # if und while Statements l...
  • Folie 10
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Umrechnung von Function Points in LOC
  • Folie 11
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Umrechnung von Function Points in Personenmonate
  • Folie 12
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Bewertung des Function-Point-Maes + automatisch messbar + relativ verbreitet + Programmiersprachen unabhngig - nicht sehr intuitiv - Programmiersprachen unabhngig - keine individuellen Einflussfaktoren m letztlich Pro und Contra wie bei LOC nur eine gute statistische Datenbasis erlaubt Aussagen ber die Gte eines Grenmaes !
  • Folie 13
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Beispiel einer Zeit / LOC Statistik
  • Folie 14
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Bestimmung einer Ausgleichsgeraden mit "linearer Regression" m Zeitaufwand = b 0 + b 1 * LOC (oder allgemeiner: y = b 0 + b 1 * x) m Berechnung der Regressionsparameter b 0 und b 1
  • Folie 15
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Der Korrelationskoeffizent m Basis fr Anwendung der linearen Regression m x i, y i wie vorher
  • Folie 16
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Interpretation des Korrelationskoeffizenten m r nahe bei 1: hohe positive lineare Abhngigkeit m r nahe bei -1: hohe negative lineare Abhngigkeit m r nahe bei 0: wenig (keine) lineare Abhngigkeit m r2 > = 0.9: hohe Wahrscheinlichkeit fr lineare Abhngigkeit m 0.7 < = r2< 0.9: lineare Regression anwendbar m 0.5 < = r2< 0.7: lineare Regression nur mit Vorsicht anwenden m r2 < 0.5: keine lineare Regression mglich m Vorsicht: sinnvolle berprfung nur bei gengend Stichproben (> 10?) m Eventuell: statistische Signifikanz ermitteln, siehe [Humprey95]
  • Folie 17
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Schtzverfahren: Phasenbasierte Vergleichsschtzung m erstelle Statistik ber prozentualen Anteil der Phasen am Gesamtprojekt m Messe Aufwand fr die erste(n) Phase(n) des aktuellen Projekts m Berechne Restaufwand / Gesamtaufwand + wenig Aufwand + frh anwendbar + wird im Projektverlauf immer genauer - Hochrechnung aufgrund weniger Prozent des Gesamtaufwands Schtzfehler multipliziert sich auf
  • Folie 18
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Schtzverfahren: Komponentenbasierte Schtzung m erstelle Grobdesign m schtze die Gre der einzelnen Bausteine / Komponenten / Klassen m Summiere Gesamtgre auf m teile durch die Produktivitt => Aufwand - erfordert ein Grobdesign - grerer Aufwand + hhere Genauigkeit + einzelne Schtzfehler mitteln sich weg (wenn statistisch unabhngig) l 25 unabhngige Gren mit einem Schtzfehler von je 100% Gesamtfehler nur 20%
  • Folie 19
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Schtzverfahren: Lineare Regression zum Ausgleich von systematischen Schtzfehlern
  • Folie 20
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Delphi Methode m lasse mehrere Experten unabhngig voneinander Schtzen (z.B. komponentenbasiert) m dann diskutieren die Experten ihre Schtzungen (insbesondere auffllige Unterschiede) m obige Schritte werden iteriert bis "Stabilitt" erreicht + Diskussion ber Unterschiede deckt bersehene / falsch eingeschtzte Probleme auf + Minimierung von persnlichen Schtzfehlern des einzelnen Experten - je mehr Experten je mehr Aufwand - gruppendynamische Effekte knnen falsche Tendenzen auslsen (2 oder 3 unabhngige Schtzungen und hchstens zwei Durchgnge sind meistens gut)
  • Folie 21
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Fuzzy-basiertes Schtzen m Bewertung der Einflussfaktoren mit "linguistischen Kategorien (schwer-mittel-leicht, complex-schwierig-normal-leicht) m Ableitung von Korrekturfaktoren fr die einzelnen Kategorien m entsprechende Korrektur der Basisschtzung + intuitives Verfahren + projektspezifische Anpassungen werden mglich + Korrekturfaktoren knnen mit historischer Datenbasis abgeglichen / justiert werden - Schwankungsbreite durch Korrekturfaktoren ist dramatisch (bis zu Faktor 10 und mehr)
  • Folie 22
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University
  • Folie 23
  • Allgemeine Kritik an bisherigen Anstzen m mangelnde statistische Absicherung m mangelhafte Genauigkeit (Faktor 2 bis 3 Abweichung sind blich) geschtzte 10 Personenjahre bedeuten zwischen 3 und 30 Jahren tatschlichem Aufwand m zu wenig individuelle / domnenspezifische / firmenspezifische Einflussfaktoren Humpreys PROBE Methode
  • Folie 24
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Fuzzy-Tabelle fr Methodengren m persnliche Tabelle fr Java-Methoden aus statistischen Daten erstellen m Methodengren sollten "normalverteilt" sein (Gausche Glockenkurve) m medium sollte 40% der Flle abdecken, small und large je 20%, der Rest je 10%
  • Folie 25
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Lineare Regression (noch mal) m b 0 und b 1 wie gehabt
  • Folie 26
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Schtzgenauigkeit: Konfidenzintervall
  • Folie 27
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Graphische Veranschaulichung der t-Verteilung
  • Folie 28
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University t-Verteilung: (Tabelle A2, Seite 489)
  • Folie 29
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Konfidenzintervall-Beispiel: Datenbasis (Tabelle A30, Seite 551)
  • Folie 30
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Konfidenzintervall-Beispiel m sig 2 = 313301,3 / 8 = 39162,66 m sig = 197,896 m wir whlen alpha/2 = 90% => t( alpha/2=90, 10 - 2 ) = 1.860 m geschtzte LOC = 705 m nach linearer Regression mit b 0 = -22,54 und b 1 = 1,7279 erwarten wir 1195,63 LOC m mit 90% Sicherheit liegt die Programmgre zwischen 793 LOC und 1598 LOC
  • Folie 31
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Verkleinerung des Konfidenzintervalls m weniger Sicherheit verlangen: t(70%, 8) = 1,108 (anstatt 1,860) m grere Datenbasis: t(70%, 30) = 1,055 m Standardabweichung durch viele Teilschtzung verbessern: l 100 mal so groes Programm mit 100 Komponenten a 705 geschtzte LOC l Gesamtschtzung ergibt 70 500 LOC und nach Regression 119 563 erwartete LOC l beim Konfidenzintervall rechnet man nicht 100 * Range sondern Wir erwarten zwischen 114 000 bis 124 000 LOC mit 90 % Konfidenz (Fehler ist kleiner als 10 %) l Generell ist die Genauigkeitsverbesserung
  • Folie 32
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Zusammenfassung m im wesentlichen lineare Regression ber LOC / Hour Daten m Achtung: die Produktivitt schwankt stark von Person zu Person m Falls Personen noch nicht festgelegt, "Durchschnittsperson" verwenden m nach Personeneinteilung, mit persnlichen Faktoren korrigieren m Ergebnis: l Gesamtstundenanzahl fr das Projekt l Konfidenzinterval
  • Folie 33
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Zeitplanerstellung ACHTUNG: m man arbeitet nicht 52 Wochen a 40 Stunden = 2080 Stunden pro Jahr m Urlaub, Feiertage, Krankheit, Schulungen => 200 Arbeitstage pro Jahr m Besprechungen, Meetings, Mails, Surfen,... => 4 bis 5 Stunden Entwicklungsarbeit pro Tag circa 1000 Stunden pro Personenjahr m mehr ist unproduktiv und nicht lange durchzuhalten m wenns brennt kann man (fr ein paar Wochen) auf 50 Stunden pro Woche hochfahren und Schtzfehler ausbgeln m wenn man das dauernd macht bricht man irgendwann ein
  • Folie 34
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University
  • Folie 35
  • Zeitplanerstellung m Gesamtprojektzeit gem Schtzung m Einteilen in Tasks, z.B. Phasen, Komponenten,... m Schtzen der relativen Taskgre und Ableiten der Taskzeit m bestimmen der typischen Stundenzahl fr Projektarbeit pro Woche m Zeiten fr andere Projekte, Schulungen, Urlaub, Meetings,... im Kalender vermerken m pro Kalenderwochen erwartete Projektstunden im Kalender eintragen m Taskreihenfolge festlegen: l Vorgnger / Nachfolgerbeziehung festlegen => Gantt Chart l topologisch sortieren l kritische Pfade analysieren l Risikoanalyse l... m Tasks im Kalender eintragen (z.B. mit Microsoft Project, ) m Meilensteine festlegen
  • Folie 36
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University
  • Folie 37
  • Folie 38
  • Folie 39
  • Zusammenfassung PSP m solide statistische Absicherung von Projektplnen m LOC als Basisma m individuelle Datenbasis m hohe Schtzgenauigkeit bei wiederholbarem Prozess
  • Folie 40
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Over Commitment m mehr Aufgaben als Zeit m Kalender dabei haben (den mit den Balken drin) m Fr neue Aufgaben: l Zeit finden l Zeitplan / Termin nennen, l Streichposten diskutieren l oder ablehnen m Hier braucht es Rckgrat
  • Folie 41
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Und wenn es trotzdem eng wird? normal: 4 bis 5 Stunden / Tag (22 / Woche) produktive Arbeit (Achtung: persnliche Statistik aufstellen! [PSP]) m Besprechungen auslassen m Emails nicht lesen m berstunden m Wochende m Urlaub m andere Verpflichtungen / Projekte abgeben - Verdopplung der produktiven Stunden erreichbar? - das geht nicht lange (2 bis 4 Wochen) - Produktivitt geht mit der Zeit runter - Danach braucht man eine Erholungsphase (1 bis 2 Wochen)
  • Folie 42
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Und wenn es trotzdem eng wird? m andere Verpflichtungen / Projekte abgeben m weniger Testen m Funktionalitt streichen / zurckstellen (rechtzeitig kommunizieren!) 80 20 Regel: 80% Funktionalitt mit 20% Aufwand BSE
  • Folie 43
  • Fachgebiet Software Engineering bersicht 22.01.2014 Albert Zndorf, Kassel University Alles Gute und bis bald mal: Programmieren Modellieren Groe Projekte - Design Pattern - Interaktive Tools SE2 - Model Driven Engineering - Seminar-, Projekt-, Bachelor-, Master-, Doktorarbeiten,

Recommended