Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan:
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Analyse & Design Ziele m Technisches Konzept zur Realisierung neuer Funktionalität m Vorgabe für die Implementierung m Zielgruppe Entwickler m Beschreibung auf Modellebene m Beispielszenarien (Story Boards, Sequenzdiagramme, …) m Klassendiagramm
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University
Beispiel Agentensimulation: Übersicht GUIsimulator agentX loadAgents("c:/factory1.sim) create() loadPlan() exec()
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Beispiel Agentensimulation: Story Board simulator : AgentSim agentX : Agent > agentX > s1 : Step name = "drilling" > s2 : Step name = "carving" > s3 : Step name = "polish" > s3 : Step name = "paint"
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Beispiel Agentensimulation: Architektur AgentSimStep name :String Agent next
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Kostenschätzung m Wieviel Stunden brauchen Sie, um ein Programm für die Berechnung der Varianz zu schreiben / zu testen? m Wie sicher ist Ihre Schätzung? 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 höchstens 10% Ungenauigkeit beantworten können
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Ziele der Prozessmodellierung m Standardisierte Vorgehensweisen m Standardisierte (Teil-) Ergebnisdokumente Vergleichbarkeit von verschiedenen Projekten m Messungen von Prozessgrößen werden möglich / vergleichbar / bewertbar m Basis für Schätzungen m Basis für Planungen m Basis für Verbesserungen
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Aufwandsmaße Vergleichsbasiertes Schätzen: m neues Projekt 20% "größer" 20% mehr Zeit/Aufwand m Zeitmessung bleibt schwierig: l manuell: manipulierbar l Controller: ja, aber … l automatisch: ungenau/gescheitert m Größenmessung: l leicht automatisierbar l reproduzierbar l...
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Messung der Programm/Problemgröße m gängige 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: Größe sollte leicht / automatisch messbar sein m Zeitschätzungen sind erfahrungsgemäß viel schwerer als Größenschätzungen m Watts Humphrey: l leicht messbar l intuitiv schätzbar l statistische Korrelation zu Zeitaufwand beschreibt Güte
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Lines of Code Messen der LOC: + Intuitiv + leicht messbar + korrelieren in gleichbleibendem Umfeld erstaunlich gut zum Zeitaufwand - unterschiedliche Einrückungen - Programmiererabhängig - Erfahrungsabhängig => zeitlich veränderlich - Programmiersprachenabhängig - komplexitätsabhängig: 1 Zeile Betriebsystemscheduler entspricht 100 Zeilen GUI-Code - Copy-Paste Programmierung bringt mehr Zeilen als Refactoring in Methoden -...
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Reparaturmaßnahmen m einheitliche Indentierung z.B. mit JIndent m jeder Entwickler sammelt Daten über seine persönliche Produktivität (LOC/Hour) m Trendanalysen der Statistiken erfassen Erfahrungs-Speed-Up m programmiersprachenspezifische Daten sammeln (Sprachen werden nicht so oft gewechselt) m Korrekturfaktoren für die Komplexität einzelner Methoden statistisch ermitteln l Komplexität: leicht, mittel, schwer, komplex l Größe: kurz, mittel, groß, riesig m Weitere Korrekturfaktoren für die nichtfunktionalen Anforderungen COCOMO Kostenschätzungsverfahren m Varianz der statistischen Daten gibt exakte Auskunft über die Güte des verwendeten Maßes m Größe und Qualität der statistischen Datenbasis erlauben Aussage über Qualität der Schätzung
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Lines of Code m LOC sieht eigentlich untauglich aus / man hat dabei ein mulmiges Gefühl m Humphrey sagt: l frag die Statistik ob dein Maß taugt l bei geringer Varianz hast du ein gutes Maß
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Function Points m Alternativen zu LOC: Function Point Methode m Zählen der "syntaktischen Konstrukte" l # Methoden l # Parameter l # if und while Statements l...
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Umrechnung von Function Points in LOC
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Umrechnung von Function Points in Personenmonate
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Bewertung des Function-Point-Maßes + automatisch messbar + relativ verbreitet + Programmiersprachen unabhängig - nicht sehr intuitiv - Programmiersprachen unabhängig - keine individuellen Einflussfaktoren m letztlich Pro und Contra wie bei LOC nur eine gute statistische Datenbasis erlaubt Aussagen über die Güte eines Größenmaßes !
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Beispiel einer Zeit / LOC Statistik
Fachgebiet Software Engineering Übersicht © Albert Zündorf, 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
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Der Korrelationskoeffizent m Basis für Anwendung der linearen Regression m x i, y i wie vorher
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Interpretation des Korrelationskoeffizenten m r nahe bei 1: hohe positive lineare Abhängigkeit m r nahe bei -1: hohe negative lineare Abhängigkeit m r nahe bei 0: wenig (keine) lineare Abhängigkeit m r2 > = 0.9: hohe Wahrscheinlichkeit für lineare Abhängigkeit 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 möglich m Vorsicht: sinnvolle Überprüfung nur bei genügend Stichproben (> 10?) m Eventuell: statistische Signifikanz ermitteln, siehe [Humprey95]