COCOMO

COCOMO (COnstructive COst MOdel) ist ein algorithmisches Kostenmodell, das in der Softwareentwicklung zur Kosten- bzw. AufwandsschÀtzung verwendet wird. Mit Hilfe von Mathematischen Funktionen wird ein Zusammenhang zwischen gewissen Softwaremetriken und den Kosten eines Projekts dargestellt.

Es fließen mehrere firmenspezifische Parameter in die Berechnung hinein, die feststellt, wie viele Personenmonate bzw. Personenjahre notwendig sind, um ein Softwareprojekt zu realisieren. Weiterhin kann die Gesamtdauer des Projekts abgeschĂ€tzt werden. COCOMO beruht auf vielfĂ€ltiger Erfahrung, die in der Großindustrie, z. B. bei Boeing, bei der Softwareentwicklung gemacht worden ist. Das Verfahren wurde bereits 1981 durch Barry W. Boehm, Softwareingenieur bei Boeing, entwickelt.

Inhaltsverzeichnis

[Bearbeiten] Verfahren

[Bearbeiten] Definitionen und Annahmen

  • Der primĂ€re Kostenfaktor (Cost Driver) fĂŒr das Modell sind die Delivered Source Instructions (DSI) des Projekts.
  • Die Entwicklungsperiode beginnt mit dem Start des Produktdesigns und endet mit dem Abschluss der Produktintegration und der Akzeptanztests. Die AufwĂ€nde der anderen Phasen werden separat ermittelt.
  • Ein COCOMO-Mannmonat oder auch Staff Month (SM) besteht aus 152 Arbeitsstunden.
  • COCOMO geht von gutem Management von Seiten der Entwickler als auch der Kunden aus und setzt voraus, dass unproduktive Zeiten möglichst gering gehalten werden.
  • COCOMO setzt voraus, dass der Anforderungsspezifikation nach der Anforderungsphase keine grundlegende Änderung widerfĂ€hrt. Eine signifikante Änderung in der Spezifikation zieht auch eine Änderung der AufwandsschĂ€tzung nach sich.


Delivered Source Instructions (DSI)

Als Basis fĂŒr die Berechnung muss die Anzahl von auszuliefernden Codezeilen in KDSI (1000 (K) delivered source instructions [1 KDSI = 1000 Instruktionen]) ermittelt werden. Als Delivered wird nur Software bezeichnet, welche dem Kunden als Teil des Produkts auch ĂŒbergeben wird. Diese Definition schließt Code, der fĂŒr Support-Software oder zum Testen geschrieben wurde, aus. Die AbschĂ€tzung dieser GrĂ¶ĂŸe ist von vielen Faktoren (z. B. Programmiersprache) abhĂ€ngig und wird von COCOMO nicht behandelt. Source Instructions entsprechen den von Entwicklern geschriebenen und ausfĂŒhrbaren Computeranweisungen. Neben den Kommentaren schließt diese Definition also auch noch generierten Code aus. Instructions beruhen grĂ¶ĂŸtenteils noch auf den damals gĂ€ngigen Lochkarten. So definiert Boehm Instructions in seinem Buch[1] als Card Images. Delivered Source Instructions sowie Codezeilen oder Function Points sind Softwaremetriken zur Messung der GrĂ¶ĂŸe der Software.

[Bearbeiten] KomplexitÀt bestimmen

Dann muss man entscheiden, ob man an einem einfachen („organic mode“), mittelschweren („semi-detached“) oder einem komplexen („embedded“) Projekt arbeitet. Diese Projektmodi sind zentrale Punkte in COCOMO 81, welche die Unterschiede im Arbeitsprozess in den verschiedenen ArbeitsdomĂ€nen reprĂ€sentieren. Die Wahl des Projektmodus wirkt sich maßgeblich auf das Ergebnis der Berechnung aus - wobei die Formel der Berechnung gleich bleibt und sich nur die Koeffizienten Ă€ndern.


Organic Mode

Der Organic Mode entspricht kleinen bis mittelgroßen Softwareprojekten. Die meisten am Projekt beteiligten Mitarbeiter haben bereits eingehende Erfahrungen mit Ă€hnlichen Projekten in diesem Unternehmen sowie der verwendeten Soft- und Hardware. Dies gewĂ€hrleistet einen geringen Overhead an Kommunikation, da die Beteiligten schon eine genaue Vorstellung von dem zu erstellenden Produkt, haben. Dokumentation von Spezifikationen und Schnittstellen wird nicht streng gehandhabt, wodurch diesbezĂŒgliche Verhandlungen schneller abgeschlossen werden und der dadurch entstehende Mehraufwand (diseconomies of scale) gering gehalten wird. Weitere Merkmale des Organic Modes sind stabile Entwicklungsumgebungen mit wenig neuen Technologien, minimaler Bedarf an neuen Innovationen und wenig Zeitdruck.


Semidetached Mode

Der Semidetached Mode ist fĂŒr Projekte gedacht, deren GrĂ¶ĂŸe und KomplexitĂ€t zwischen Organic und Embedded Mode anzusiedeln sind. Es handelt sich um mittelgroße Projekte (zwischen 50 und 300 KDSI), deren Beteiligte bereits ein mittleres Maß an Erfahrung in der Entwicklung solcher Systeme haben oder in denen das Team aus erfahrenen sowie unerfahrenen Kollegen besteht oder das Team nur auf einem Teilgebiet Erfahrung besitzt. Projekte, welche diesem Modus entsprechen, sind komplexer, benötigen anspruchsvollere Interaktionsroutinen und flexible Schnittstellen.


Embedded Mode

Der Embedded Mode ist durch seine straffen, unflexiblen Strukturen und Richtlinien gekennzeichnet. Dies stellt auch den grĂ¶ĂŸten Unterschied zu den beiden anderen, eher locker gefĂŒhrten Modi, dar. Es zielt grĂ¶ĂŸtenteils auf sicherheitsrelevante Projekte (z. B. Flugassistenzsysteme, Systeme fĂŒr Banken) ab, welche dadurch sehr unflexibel bezĂŒglich Änderungen in Spezifikationen und Schnittstellen sind. Des Weiteren sind Projekte im Embedded Mode in der Regel Neuentwicklungen mit wenig bis keinen vergleichbaren VorgĂ€ngerprojekten. Aus diesem Grund zeichnen sich diese Projekte auch dadurch aus, dass sie mit einer relativ langen Analyse- und Design-Phase beginnen. Sind diese Phasen abgeschlossen, werden möglichst viele Entwickler parallel damit beauftragt, das System zu implementieren und zu testen. Hier entspricht bereits der Testaufwand von intermediate Projekten (im Umfang von 8000 DSI) dem von großen Projekten (128000 DSI) im Organic Mode.

[Bearbeiten] Aufwand errechnen

Der Aufwand PM in Personenmonaten wird dann errechnet als ein Faktor m multipliziert mit einer Potenz n der Metrikzahl.

PM = m * \mathbf{KDSI}\;^ n

  • einfach PM = 2,4 * \mathbf{KDSI}\;^ {1,05}
  • mittelschwer PM = 3 * \mathbf{KDSI}\;^ {1,12}
  • komplex PM = 3,6 * \mathbf{KDSI}\;^ {1,20}

Beispiel: Bei 100 KDSI betragen die Personenmonate PM etwa 300 fĂŒr ein einfaches Projekt, etwa 500 fĂŒr ein mittelschweres und etwa 900 fĂŒr ein komplexes.

[Bearbeiten] Projektdauer

Man kann die Personenmonate jedoch nicht durch eine beliebige Anzahl von Personen teilen, um das Produkt schneller fertig zu stellen. Als Beispiel dient oft das GebĂ€ren eines Kindes – dies kann nicht durch den Einsatz von neun Frauen auf einen Monat abgekĂŒrzt werden. Es gibt gewisse Prozesse, die sequentiell ablaufen mĂŒssen, und je mehr Menschen mit einem Projekt betraut sind, um so mehr muss in die Kommunikation investiert werden.

COCOMO spricht von TDEV, time to develop (Entwicklungszeit). Auch hier werden drei KomplexitÀtsarten unterschieden:

  • einfach TDEV = 2,5 * \mathbf{PM}\;^ {0,38}
  • mittelschwer TDEV = 2,5 * \mathbf{PM}\;^ {0,35}
  • komplex TDEV = 2,5 * \mathbf{PM}\;^ {0,32}

FĂŒr ein einfaches Projekt mit 32 KDSI liefert die COCOMO-AbschĂ€tzung 91 PM und ein TDEV von 14 Monaten.

Bei der COCOMO-Berechnung von TDEV ist die Mindestdauer acht Monate. Wenn man diese Werte anders herum auf die Anzahl von Codezeilen berechnet, die eine Person pro Tag produziert, bekommt man fĂŒr ein einfaches Projekt 16 DSI und fĂŒr ein komplexes 4 DSI/Person/Tag.

[Bearbeiten] Kostentreiberfaktoren

Das erweiterte COCOMO-Verfahren (Intermediate COCOMO) berĂŒcksichtigt weitere sogenannte Kostentreiberfaktoren, die den errechneten Basiswert entweder verringern oder erhöhen. Diese basieren auf vielen Erfahrungen, die bei großen Firmen gemessen worden sind. Solche Faktoren sind unter anderem:

  • ZuverlĂ€ssigkeit des gelieferten Systems – ist ein Fehler nur störend oder gefĂ€hrdet er Menschenleben?
  • Wie groß ist die Datenbank, die erstellt werden muss?
  • Wie komplex sind die Ein-/Ausgabeverarbeitung und die Datenstrukturen?
  • Wie schnell muss das System Ergebnisse liefern?
  • Wie viel Speicherbedarf hat das System?
  • Wie oft erwartet man, dass das System an Ă€ußere Rahmenbedienungen angepasst werden muss? Hier schwankt die Bandbreite zwischen einmal im Jahr bis monatlich.
  • Teamfaktoren – was fĂŒr Erfahrung haben die Teammitglieder in der Analyse, in der verwendeten Programmiersprache, mit Software-Werkzeugen, mit dieser besonderen Hardware?
  • Wie eng ist der Zeitplan?

Als Beispiel dafĂŒr, wie sehr diese Faktoren das Ergebnis beeinflussen, dient folgende Berechnung:

Komplex, 128 KDSI, entspricht 1216 PM (Basisberechnung nach COCOMO).

Faktor von bis
ZuverlÀssigkeit sehr hoch = 1,4 sehr niedrig = 0,75
KomplexitÀt sehr hoch = 1,3 sehr niedrig = 0,70
Speicherbedarf hoch = 1,2 kaum = 1,0
Werkzeugverwendung niedrig = 1,1 hoch = 0,90
Zeitplan schnell = 1,23 normal = 1,0
angepasst 3593 PM 575 PM

Diese Werte sind jedoch nur grobe Erfahrungswerte, jede Firma muss fĂŒr sich selbst die eigenen Faktoren durch KostenĂŒberwachung und Analyse von bisher erstellten Projekten bestimmen.

[Bearbeiten] Weiterentwicklung

Boehm weist darauf hin, dieses Modell nicht leichtfertig anzuwenden: „Basic COCOMO is good for rough order of magnitude estimates of software costs, but its accuracy is necessarily limited because of its lack of factors to account for differences in hardware constraints, personnel quality and experience, use of modern tools and techniques, and other project attributes known to have a significant influence on costs.“[1] (Das COCOMO-Basismodell ist gut geeignet fĂŒr eine grobe AbschĂ€tzung der GrĂ¶ĂŸenordnung der Softwarekosten. Die Genauigkeit des Modells ist notwendigerweise eingeschrĂ€nkt, weil es ihm an Faktoren fĂŒr Unterschiede bei der verwendeten Hardware, der PersonalqualitĂ€t und -erfahrung, dem Einsatz moderner Werkzeuge und Technologien und anderen Merkmalen fehlt, die bekanntermaßen einen signifikanten Einfluss auf die Kosten haben.). Ein relativ genaues Ergebnis bekommt man erst unter BerĂŒcksichtigung mehrerer, auf das Projekt einwirkender Faktoren (siehe Intermediate und Detailed COCOMO).

[Bearbeiten] ADA COCOMO

ADA COCOMO ist eine Weiterentwicklung von COCOMO 81 - welches sehr stark vom Batch-Processing und dem Wasserfall-Prozessmodell geprĂ€gt ist - zur Anpassung an die TRW Implementierung des ADA Prozessmodells. Dieses Modell beinhaltet Risk Management, Architektur Skeletons, Inkrementelles Implementieren und Testen und einheitliche Softwaremetriken. Hauptaugenmerk des Modells sind die Verringerung des Kommunikationsoverheads, Vermeidung spĂ€ten Überarbeitens aufgrund instabiler Anforderungen. Die Änderungen zu COCOMO 81 können in drei Kategorien eingeteilt werden:

  1. Allgemeine Verbesserungen von COCOMO: Diese beinhalten grĂ¶ĂŸtenteils Anpassungen der vorhandenen sowie zusĂ€tzlicher Kostenfaktoren. Neue Faktoren sind z. B. Security und Development for software reusability.
  2. Ada-spezifische Effekte: Neue Regeln zum AbzĂ€hlen der Instruktionen (DSI) fĂŒr die Programmiersprache ADA. ZusĂ€tzliche Kostenfaktoren bezĂŒglich Programming Language Experience.
  3. Effekte bedingt durch das Ada-Prozessmodell: Diese Effekte wirken sich vor allem in den Exponenten der Regressionsgleichungen aus und leiten sich aus den Eigenschaften der Ada-Prozessmodells her. HierfĂŒr wurden vier Skalierungsfaktoren eingefĂŒhrt (Experience with the Ada Process Model, Design Thoroughness at PDR (Preliminary Design Review), Risks Eliminated at PDR, Requirements Volatility). ZusĂ€tzlich wurde ein Methode bereitgestellt, um den Aufwand von inkrementellen Projekten zu schĂ€tzen.

Der Rest von COCOMO 81 blieb unverÀndert - die generelle Form mit den verschiedenen Modi, etc.

[Bearbeiten] COCOMO II

COCOMO II wurde ebenfalls, wie seine beiden VorgĂ€nger, von Barry W. Boehm entwickelt und das erste Mal 1997 publiziert. Die offiziell bekannte Version ist jedoch 2000 mit dem Buch[2] veröffentlicht worden. COCOMO II reprĂ€sentiert die Änderungen in der ’modernen’ Softwareentwicklung, mit Anpassungen an neue Softwareentwicklungs-Prozessmodelle sowie neuen Entwicklungsmethodiken (z. B. Objektorientiertes Programmieren). Es werden wieder, wie in COCOMO 81, drei verschiedene SchĂ€tzarten unterschieden, mit dem Unterschied jedoch, dass sich diese vermehrt auf den Entwicklungsstand des Projekts beziehen. Auf die Unterteilung in verschiedene Projektmodi wurde hier verzichtet.

[Bearbeiten] Referenzen

  1. ↑ a b Barry Boehm. Software engineering economics. Englewood Cliffs, NJ:Prentice-Hall, 1981, ISBN 0-13-822122-7
  2. ↑ Barry Boehm, et al. Software cost estimation with COCOMO II (with CD-ROM). Englewood Cliffs, NJ:Prentice-Hall, 2000, ISBN 0-13-026692-2

[Bearbeiten] Literatur

  • Die Beispiele sind dem Standard-Lehrbuch von Ian Sommerville, Software Engineering, Addison-Wesley, ISBN 0-321-21026-3 entnommen.

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks


SEO Tools wymiana linkami wymiana linkami system wymiany linkĂłw tanie kredyty gotĂłwkowe kreatyna Plaza 3 star hotel Los Angeles krynica noclegi Sejm Tyk