CoCoMo II - Inhalt
•
Einführung
– Geschichte von CoCoMo
– Konzept hinter CoCoMo II
•
CoCoMo 2.0 anhand eines Beispieles
– Szenario
– Erstellung einer Aufwandsanalyse mit CoCoMo II
•
•
Weiterführendes
Fazit
CoCoMo II - Inhalt
Angenommen...
Man erhält die Aufgabe, den Aufwand eines Softwareprojektes im Vorfeld
abzuschätzen.
Dann wäre es sehr hilfreich, auf die Erfahrung von hunderten anderer Projekte
anderer Unternehmen sowie eigene, bereits abgeschlossene Projekte des eigenen
Unternehmens zugreifen zu können.
Der Erfinder von CoCoMo 81, Barry W. Boehm, hatte 1981 diese Idee und
entwickelte ein Vorgehensmodell in das die Analyse von über 100 Projekten einfloss.
Unter sunset.usc.edu (University Of Southern California) wird CoCoMo als offenes
Modell verwaltet.
CoCoMo II - Einführung
Abschätzung der Systemgröße
(KLOC oder KDSI)
Produkt-, Prozess-, Plattformund Personal-Attribute
Wiederverwertbarkeits- und
Wartbarkeitsparameter
Daten bereits abgeschlossener
Projekte
CoCoMo 81
oder
CoCoMo II
Abschätzung für Entwicklungsund Wartungskosten
für verschiedene
Entwicklungsphasen
Iterative Aktualisierung
Kalibrierung auf eigene
Organisation
CoCoMo II - Merkmale
Merkmale:
CoCoMo ist ein Modell zur Kosten- & Aufwandsschätzung von Software, die mit
einer Basisformel agiert, welche mit Parametern aus vergangenen und aktuellen
Projekten und deren Charakteristiken festgelegt wird.
Die Parameter werden anhand von Kosten- und Skalenfaktoren bestimmt:
„Bei der Schätzung der Projektkosten gilt es die wichtigsten Kostenfaktoren (cost
drivers) besonders zu betrachten. Zu diesen zählen die Variablen, die, die Anzahl
der, für das Projekt aufzuwendenden Säcke an Geld, beeinflussen.“
Zentraler Kostenfaktor ist die Größe des Softwareproduktes (Size-Driven Model)
CoCoMo II – Von CoCoMo 81 zu CoCoMo II
CoCoMo 81 wurde zu CoCoMo II weiterentwickelt, da sich auch die Entwicklung
von Software weiterentwickelte:
•
•
•
•
•
•
•
•
•
Einführung neuer Lifecycle-Prozesse
Wiederverwendung von Software-Komponenten
Reengineering
Objektorientierte Programmierung
Benutzung von Standard Middleware
Wasserfall-Modell, das COCOMO 81 zu Grunde liegt, ist veraltet. Neuer ist
z.B. das Iterative- oder das Spiral-Modell
Vierte Generation Sprachen (Sehr komfortabel, teils Visuell)
Mehr und damit differenziertere Kostenfaktoren als CocoMo 81
Process Maturity wird berücksichtigt
CoCoMo II – Submodelle (1)
CoCoMo II besteht aus drei Submodellen, die jeweils verschiedene Faktoren für
verschiedene Phasen der Abschätzung bieten:
1 - Application Composition Model
• Früheste Phase der Abschätzung : Prototypisierung
2 - Early Design Model
• Abschätzung zur Analyse und Prototyping-Phasen
• Vor der Systemarchitektur
• Wenig von der Architektur bekannt, daher sind eingehende Schätzungen grob
• 7 Kostenfaktoren werden berücksichtigt
3 - Post-Architecture Model
• Abschätzung nach Festlegung der Softwarearchitektur, vor und beim Kodieren
• 17 Kostenfaktoren werden berücksichtigt
CoCoMo II – Wie funktioniert CoCoMo II ?
Szenario:
Es soll ein Frontend für eine Kundendatenbank erstellt werden. Das Frontend soll in
C++ für WIN32 geschrieben werden. Das Backend ist eine SQL-Datenbank. Das
Projekt ist eine Übergangslösung, daher nicht wieder zu verwerten.
F10: Erstellen, Ändern und Löschen der Kundendaten
F20: Ausgabe einer Liste aller Namen
Aufgabe:
Aufwandsschätzung nach CoCoMo II – Early Design Model für zwei
Informatikstudenten und zum Vergleich einem professionellen Entwicklerteam von
SUN Microsystems.
CoCoMo II – Wie funktioniert CoCoMo II ?
1.
Function Point Analyse (oder äquivalente Systemgrößen Abschätzung)
-> ergibt Größe (LOC – Lines Of Code)
2.
Ermitteln der Skalenfaktoren
-> Berechnung des nominalen Aufwandes in Personen Monaten (PM)
3.
Ermitteln der Aufwands Faktoren (Cost Drivers)
-> Berechnen des adjustierten Aufwandes in PM
CoCoMo II – Function Point Analyse (1)
Ermitteln der Roh Function Points
Daten Eingaben
Mittel
1x3
F10 – Etwa 10 syntaktisch und semantisch zu
prüfende Eingabefelder
Daten Ausgaben
Mittel
1x5
F20 – Eine Liste mit etwa 3-4 Spalten
Interne Daten
Mittel
1x
10
Daten werden in mehreren Tabellen separat
gespeichert
Externe Schnittstellen
Komplex
1x
10
SQL, liefert bei verschiedenen Abfragen jeweils
verschiedene Datenstrukturen
Externe
Datenabfragen
Komplex
1x6
Die nötigen INSERT, UPDATE und SELECT
Anweisungen gehen über mehrere Tabellen
34
Roh Function Points (RFP)
Summe :
CoCoMo II – Function Point Analyse (2)
Ermitteln des Einflusses der System-Infrastruktur
Kommunikationseinrichtung
3
SQL über Netzwerk
Verteilte Funktionen
3
Clients und Datenbanken
Antwortzeitverhalten
4
Antworten sollten schnell sein
Lastverhalten
2
Wenige Leute nutzen das Programm
Transaktionsrate
3
Online Eingabe
5
Eingaben über das Netzwerk
Usereffizienz
4
Anwendung für User effizient
Online Update
4
Daten werden über Netzwerk aktualisiert
Komplexe Verarbeitung
2
Verarbeitung im Formular ist simpel
Wiederverwertbarkeit
1
Nicht nötig
Portier- & Installierbarkeit
2
Konkret WIN32
Usability
5
Mandantenfähigkeit
3
Änder- und Wartbarkeit
4
Summe:
45
Schnelle Änderungen und unkompliziertes Warten
SI
CoCoMo II – Function Point Analyse (3)
Ermitteln der Function Points
FP = RFP x ( 0,65 + ( 0,01 x SI ) )
FP = 34 x ( 0,65 + 0,01 x 45 ) = 37,4 FP
Ermitteln der Lines Of Code für C++ (LOC)
37,4 FP x 91 LOC / FP = 3403,4 LOC
CoCoMo II – Skalenfaktoren (1)
Mit den Skalenfaktoren werden die Projektrahmenbedingungen in der
Aufwandsberechnung berücksichtigt.
CoCoMo II – Skalenfaktoren (2)
Für jedes Submodell existiert eine eigene Skalenfaktorentabelle, die durch
Erfahrungen vergangener Projekte angepasst werden können.
Beispiel für die Default-Skalenfaktoren für das Early Design Model
CoCoMo II – Skalenfaktoren (3)
Mit den Skalenfaktoren können die nominalen Personen Monate berechnet werden.
Sie beziehen sich auf den Aufwand, der unter durchschnittlichen Bedingungen zu
Stande käme.
PM nominal = A x KLOC ^ B
A
B
C
= COCOMO2 spezifische Konstante, abhängig vom Submodell
= C + 0,01 x Summe der Skalenfaktoren
= COCOMO2 spezifische Konstante, abhängig vom Submodell
CoCoMo II – Faktoren (1)
Ermitteln der Skalenfaktoren für die Studenten
Vorkenntnisse
Nominal
3,7
2
Etwas Erfahrung in C++, viel in SQL
Flexibilität bei
Entwicklung
Very
High
1,0
1
Vorgegebene fixe Datenbank, fixe
Interfaces
Kenntnisse in
Architektur
Nominal
4,2
5
Noch Studenten, aber immerhin
Informatik
Team Zusammenarbeit
Very
High
1,1
0
Zwei Personen, die sich bereits kennen
Prozessreife
Nominal
4,6
8
Etwas Erfahrung durch Praktika an der
FH
Summe:
14,
76
CoCoMo II – Faktoren (2)
Berechnen des nominalen Aufwandes (Personenmonate) für die Studenten
PM nominal = A x KLOC ^ B
A
B
C
= 2,5 (CoCoMo II spezifische Konstante für Early Design Model)
= C + 0,01 x Summe der Skalenfaktoren
= 1,01 + 0,01 x 14,76 = 1,1576
= 1,01 (CoCoMo II spezifische Konstante für Early Design Model)
PM nominal = 2,5 x 3,4034 ^ 1,1576 = 10,32 PM
CoCoMo II – Kostenfaktoren (1)
Nun gibt es aber eine Reihe von verschiedenen Parametern, die sich positiv oder
negativ auf den zu leistenden Aufwand niederschlagen können.
Mit den Kostenfaktoren werden die für das Projekt relevanten Kosten ändernden
Faktoren in der Aufwandsberechnung berücksichtigt
PM adjustiert = PM nominal x Produktsumme der Kostenfaktoren
CoCoMo II – Kostenfaktoren (2)
Für jedes Submodell existiert eine eigene Kostenfaktorentabelle, die durch
Erfahrungen voran gegangener Projekte angepasst werden kann.
Beispiel für die Default-Kostenfaktoren für das Early Design Model
CoCoMo II – Kostenfaktoren (3)
Beispiel für die Default-Kostenfaktoren für das Post-Architecture Model
CoCoMo II – Faktoren (3)
Ermitteln der Kostenfaktoren für die Studenten
Produkt Komplexität
Low
0,8
3
Einfache Software
Wiederverwertbarkeit
Low
0,9
6
Nicht wichtig
Plattform Schwierigkeit
Nomin
al
1,0
0
Wegen C++
Team Fähigkeit
High
0,8
3
Team Erfahrung
Low
1,1
2
Wenig Erfahrung
Betriebsmittel
Very
Low
1,3
0
Kein Büro
Entwicklungs Zeitrahmen
/ -plan
Nomin
al
1,0
0
Abgabetermin stellt nicht zu sehr unter
Druck
CoCoMo II – Faktoren (4)
Berechnen des adjustierten Aufwandes für die Studenten
PM adjustiert = PM nominal x Produktsumme der Kostenfaktoren
= 10,32 PM x 0,83 x 0,96 x 1 x 0,83 x 1,12 x 1,3 x 1
= 9,937 PM
CoCoMo II – Faktoren (1)
Ermitteln der Skalenfaktoren für das SUN Team
Vorkenntnisse
High
2,48
Flexibilität bei Entwicklung
Very High
1,01
Kenntnisse in Architektur
Very High
1,01
Team Zusammenarbeit
High
2,19
Prozessreife
High
3,12
Summe:
9,81
CoCoMo II – Faktoren (2)
Berechnen des nominalen Aufwandes (Personenmonate) für das SUN Team
B = 1,01 + 0,01 x Summe Skalenfaktoren
= 1,01 + 0,01 x 9,81 = 1,1081
PM nominal = A x KLOC ^ B
= 2,5 x 3,4034 ^ 1,1081 = 9,713 PM
CoCoMo II – Faktoren (3)
Ermitteln der Kostenfaktoren für das SUN Team
Produkt Komplexität
Low
0,83
Wiederverwertbarkeit
Low
0,96
Plattform Schwierigkeit
Nominal
1,00
Team Fähigkeit
High
0,83
Team Erfahrung
Very High
0,74
Betriebsmittel
Very High
0,73
Entwicklungs Zeitrahmen / -plan
Nominal
1,00
CoCoMo II – Faktoren (4)
Berechnen des adjustierten Aufwandes für das SUN Team
PM adjustiert
= PM nominal x Produktsumme der Kostenfaktoren
= 9,713 PM x 0,83 x 0,96 x 1 x 0,83 x 0,74 x 0,73 x 1
= 3,47 PM
CoCoMo II –Vergleichsfazit
Besonders die Kostenfaktoren fallen ins Gewicht
Während bei der Analyse durch die Skalenfaktoren das Resultat noch recht ähnlich
ausfällt (10,32 PM zu 9,713 PM) ändert sich das Ergebnis nach der Betrachtung der
Kostenfaktoren rapide (9,937 PM zu 3,47 PM).
Hier schlägt vor allem der bessere Prozessreifegrad des Unternehmens SUN aus.
CoCoMo II – Weitere Funktionen (1)
Weiterhin kann mit CoCoMo II anhand der adjustierten Personenmonate folgendes
berechnet werden:
Entwicklungszeit - Time To Develop (TDEV)
Die TDEV Formeln beziehen weitere Skaleneffekte mit ein, die neben
softwaretechnischen Faktoren auch aus betriebswirtschaftlichen Faktoren entstehen
können, wie z.B. Mitarbeiterfluktuation oder erhöhtes Qualitätsmanagement bei
größerem Arbeitsaufwand
Effektivste Anzahl an Personal - Full Time Equivalen Software Personnel (FSP)
Mit der FSP Formel kann die effektivste Anzahl der für das Projekt benötigten
Fachkräfte ermittelt werden.
CoCoMo II – Weitere Funktionen (2)
Anpassen und Wiederverwerten von Code
In der nominal Personenmonateformel wird vorausgesetzt, dass der gesamte Code
selbst entwickelt werden muss.
Mit entsprechenden Faktoren kann auch die Benutzung und Anpassung bereits
vorhandenen Codes berücksichtigt werden.
Verteilung des Aufwandes auf die einzelnen Phasen des Projektes
Hierbei kann anhand von Faktoren der Gesamtaufwand auf die folgenden Projektphasen
aufgeteilt werden
•
Analyse
•
Entwurf
•
Feinentwurf
•
Implementierung & Modultest
•
Integration & Test
CoCoMo II – Vorteile
Vorteile
•
Einfaches Verfahren
•
CoCoMo ist ein Industriestandard
•
CoCoMo ist ein offener Standard
•
Sehr fundierte Informationen sind einfach verfügbar
•
Wissen auswärtiger Experten ist verfügbar
•
Rückwärtskompatibilität
•
Verschiedene Erweiterungen für fast jeden Zweck
•
Frei wählbarer Detailgrad
•
Softwaretool Support
•
Bessere Abschätzungen, je länger Projektdatenbanken gepflegt werden
CoCoMo II – Nachteile
Nachteile
•
CoCoMo II basiert noch größtenteils auf dem Wasserfallmodell
•
Viele der Erweiterungen sind experimentell und noch nicht ausreichend
Kalibriert
•
Zeitabschätzung ist für kleine Projekte ungeeignet
•
Erfahrung ist nötig für das wählen der richtigen Faktorbewertungen
•
Bewertungen bedürfen einer tiefgehenden Kenntnis des Projektumfeldes und
der Rahmenbedingungen
CoCoMo II – Software
Es gibt professionelle Software, welche die Analyse erleichtert
CoCoMo II
CoStar
CostXpert
Effort Estimator
http://www.spc.ca
http://www.softstarsystems.com
http://www.costxpert.com
http://qb0x.net/projects/EffortEstimator/
CoCoMo Estimate Software für PDAs
http://my.raex.com/FC/B1/phess/coco/
Online Formulare (Java oder Javascript)
http://ch.twi.tudelft.nl/~arthur/cocomo/
http://www.engin.umd.umich.edu/CIS/tinytools/cocomo.html
http://tiefighter.et.tudelft.nl/~arthur/cocomo/
http://www.siegfried-seibert.de/cocomo.htm
CoCoMo II – Derivate
Es gibt Modelle, die von CoCoMo abgeleitet wurden:
•
•
•
•
•
•
COPSEMO
CORADMO
COQUALMO
COPROMO
ExpertCOCOMO
COSYSMO
– Constructive Phase Schedule & Effort Model
– Constructive Rapid Aplication Development Model
– Constructive Quality Model
- Constructive Productivity Improvement Model
- Constructive Systems Engineering Cost Model
CoCoMo II – Ausblick
•
•
Die Kalibrierung von CoCoMo soll verbessert werden
Jährliche Kalibrierung soll erstellt und publiziert werden
CoCoMo II – Quellen
•
•
•
•
http://sunset.usc.edu - Universität von Southern California
COCOMO Seminararbeit – von Klaus Werdenich
COCOMO II Model Definition Manual - sunset.usc.edu
COCOMO Seminararbeit von Nancy Merlo – Schett
Herunterladen

Powerpoint-Präsentation über CoCoMo2