4 Aufwandsschätzung (CoCoMo) Flashcards
Produktivität in Software-Projekten
- Was ist Produktivität allgemein (Formel)?
- Was ist Arbeitsproduktivität?
- Was ist SW-Produktivität?
- Allgemein: Output / Input
- Arbeitsproduktivität: Output / Zeiteinheit (z.B. Artikel / Stunde)
- Was macht ein „Softwerker“? Kommunizieren, Dokumentieren, Denken, Programmieren, Administrieren, (Sich) informieren. Softwareentwicklung ist Wissensarbeit!
Erfahrungswert: 350 LOC / PM (~ 2,3 LOC / h)
SW-Produktivität = Output / Geleistete Stunden
Wie verhält sich Produktivität unter Druck?
Wichtig: Menschen denken nicht schneller unter Zeitdruck!
Bereich I: Zeitverschwendung wird vermieden, Konzentration auf das wesentliche, Überstunden
Bereich II: Überdruss, gestörte Kommunikation, Krankheit
Krankheit
Bereich III: (Innere) Kündigung, (Externe) Bewerbungen
Produktivität in Abhängigkeit der Projektgröße
Kommunikation braucht Zeit!
Brooks Gesetz: Das Hinzufügen von Arbeitskräften im späteren Projektverlauf verlängert das Projekt nur noch mehr!
Einzelne Entwicklerproduktivität wird wesentlich gemindert durch Teamgröße N und vor allem Vernetztheit γ.
Pmax : Maximale Entwicklerproduktivität
v : Produktivitätsminderung pro Kommunikationspfad
N : Teamgröße
γ : Vernetzungsfaktor (0 γ ≤ 1)
CoCoMo
Constructive Cost Model
- Was ist Basis dieses Schätzmodells?
- Was lässt sich mit dem CoCoMo-Basismodell schätzen?
CoCoMo ist eine Modellbasierte Schätzung.
Basis sind die KDSI (z.B. über FPA und Sprachen-Tabellen)
I. Projektaufwand in Personenmonaten (PM)
PM = 2,4 · (KDSI)1,05
II. Optimale Projektdauer in Kalendermonaten
TDEV = 2,5 · (PM)0,38
III. Entwicklerproduktivität in DSI pro PM
TDEV = Time for DEVelopment
Fettgedruckte sind abhängig von Entwicklungsumfeld.
Problem: Aufwand und Dauer verteilen sich nicht zu gleichen Prozentsätzen auf die Projektphasen!
Grafik: Wichtig -> Verhält sich nicht ganz linear! Daher die Formeln.
CoCoMo
PM = 2,4 · (KDSI)1,05 (Aufwand)
TDEV = 2,5 · (PM)0,38 (Dauer)
Wie kann man die Formeln abhängig
von der Entwicklungsart verfeinern?
Organisch = kleines Team, vertraute Umgebung
Teilintegriert = Zwischenstufe
Eingebettet = enge Rahmenbedingungen (SW, HW, Organisation)
Aufwand in PM Dauer in TDEV Time for Development
Org. 2,4 · (KDSI)1,05 2,5 · (PM)0,38
Teilint. 3,0 · (KDSI)1,12 2,5 · (PM)0,35
Eingeb. 3,6 · (KDSI)1<strong>,20</strong> 2,5 · (PM)0,32
CoCoMo
Gegeben KDSI = 50
Berechne daraus
- Aufwand in PM
- Projektdauer in TDEV (Kalendermonate)
- Durchschnittlicher Personalstand
jeweils für eine organische Entwicklungsart.
Aufwand = 2,4 · 501,05 = 145,9 PM
Projektdauer = 2,5 · 145,90,38 = 16,6 Monate
Soll-Entwicklerproduktivität = 50.000 / <strong>145,9</strong> = 342,7 DSI / PM (Probe!)
Durchschn. Personalstand = Aufwand/Projektdauer
= 145,9 / 16,6 = 8,8 Personen (-> 9 Personen)
Daten aus früheren, ähnlichen Projekten (Prozentsatzmethode!):
– Aufwands-Anteil Anforderungsanalyse: 6%
– Projektzeit-Anteil Anforderungsanalyse: 12%
Aufwand „Anforderungsanalyse“ = 145,9 · 6% = 8,75 PM
Dauer „Anforderungsanalyse“ = 16,6 · 12% = 1,99 Monate
Durchschnittlicher Personalstand „Anforderungsanalyse“
8,75 / 1,99 = 4,4 Personen
#s3gt_translate_tooltip_mini { display: none !important; }
CoCoMo Zwischenmodell
- Womit sollte das CoCoMo-Zwischenmodell erweitert werden?
- Wie lautet die neue Formel?
- Was ist der Grund für andere Koeffizienten?
s3gt_translate_tooltip_mini { display: none !important; }
1.
I. Zusätzliche Parameter für Produkt-, Personal- und Projekt-Merkmal
II. Auf Komponentenebene schätzen und nicht auf das Gesamtprodukt (weil detailierter & strukturierter)
Wichtige Formel: PM = E · ΠEAFi · (KDSI)exp
EAF = Environment Adaption Factors
Π (großes Pi) steht für Produkt der EAFs
E = Aufwandsmultiplikator (Faktor 3,2 ; 3,0 oder 2,8)
- Grund für andere Koeffizienten
Aufwandsmultiplikatoren E sind für teilintegrierte und eingebettete Projekte naturgemäß höher ⇒ Umgebungsfaktoren
Wie kann das CoCoMo-Zwischenmodell eingeordnet werden?
Gute Hilfen zur Schätzung der einzelnen Parameter
Bandbreite der kumulierten Multiplikatoren von 0,0974 bis 72,3791 (!)*
Unterschiedliche Multiplikatoren für verschiedene Komponenten
Sensitivitätsanalysen
Kosten/Nutzen-Analysen für Investitionen in Schulungen, CASE-Tools, …
Schätzung des Wartungsaufwandes
Anpassung der Gleichungen und Multiplikatoren an die individuellen Gegebenheiten
Wesentlich besser als nur das Basismodell.
*riesen Spanne! Die Entscheidung über die EAF ist fast noch wichtiger als die Summation der Function Points
Wie kann das CoCoMo-Zwischenmodul zum CoCoMo-Endmodell erweitert werden?
- Berücksichtigung (weiterer) Parameter nach Hierarchiestufen: Modul, Subsystem, System
- Phasensensitive Aufwandsmultiplikatoren (jenachdem ob man in der Grobspezifikation, Fein- oder ??-Phase ist)
Ist zwar mehr Aufwand aber eine sinnvolle Erweiterung.
– Modul (Qualifikation und Erfahrung der Programmierer)
– Subsystem (Zeit- und Speicherbeschränkungen, …)
– System (Programmiermethoden)
Wie ist CoCoMo insgesamt einzuordnen?
Vorteile
+ Sehr gut ausgearbeitet
+ Durch verschiedene Stufen rollierend einsetzbar
+ Erlaubt diverse Analysen
+ Individuelle Anpassungen möglich
Nachteile
– Basisschätzung der „Lines of Delivered Source Instructions“ problematisch
– Berücksichtigung der Programmiersprache fehlt
– Problematisch im Zusammenhang mit Codegeneratoren
– individuelle Anpassungen erforderlich
Was sind wichtige Fragen vor
der Aufwandsschätzung?
Unternehmens- und Projektorganisation
Beteiligte Personen
Projektgröße
Projektdauer
Technisches Umfeld
Unternehmens- und Projektorganisation
– Kompetenzen klar geregelt?
– Greift das Management häufig ein?
– Verfahren zur Entscheidungsfindung?
– Gremien für Entscheidungen und Kontrolle?
– Projektorganisation klar?
Beteiligte Personen
– Anteil erfahrener Mitarbeiter zu Anteil an “Einsteigern”?
– Arbeitsklima förderlich für die Effektivität?
– Menschen aus verschiedenen Bereichen oder Abteilungen?
– Ausreichend Mitarbeiter verfügbar?
– Motivation im Hinblick auf die Aufgabe?
– Anteil externer (unbekannter?) Mitarbeiter?
Projektgröße
– Aufgabe für die Beteiligten überschaubar?
– Arbeitsgebiete klar gegliedert?
– Viel Kommunikation mit anderen Bereichen und externen Stellen?
– Kennen die Mitarbeiter die Bedeutung ihres Arbeitsbereichs für die Gesamtaufgabe?
Projektdauer
– Wirtschaftliche oder politische Änderungen möglich?
– Änderungen der strategischen Unternehmensziele?
– Personelle Änderungen (z.B. Ruhestand, Beförderungen, Kündigungen) zu erwarten?
– Technische Änderungen möglich?
Technisches Umfeld
– Moderne Entwickler-Arbeitsplätze?
– Komfortable Tools?
– Unterstützung durch Rechenzentrum/IT-Abteilung?
– Stabilität und Performance der Systeme ausreichend?