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