SW ajahinnangud praktikas COCOMO mudeli järgi

Me lõpetasime ühe keskmisest suurema ja keerulisema tarkvara projekti ja arvutasime selle pealt statistikat.

Selleks kasutasime sloccount nimelist programmi. Numbrid, mis sealt välja tulid on üsna üllatavad:


SLOC Directory SLOC-by-Language (Sorted)
15572 WebInterface tcl=15182,sh=352,python=38
12400 public_html tcl=12400
11772 MenuSystemHandler cpp=11772
7102 Common cpp=6980,ansic=122
5664 EthernetHandler cpp=5664
5011 ParametersAndProcessing cpp=5011
4329 SmartGM cpp=4329
3992 SerialHandler cpp=3992
3492 Messaging cpp=3492
3235 I18N tcl=2098,cpp=752,php=268,sh=117
3201 NetBIOS cpp=2858,ansic=343
2726 DataWarehouse cpp=2726
2635 WebExtensions ansic=1399,cpp=1236
2582 Framework cpp=2582
2473 GLCPStorageHandler cpp=2473
2460 DataLog cpp=2460
2038 Graph cpp=2038
1505 SWUM cpp=1505
1469 Console cpp=1469
1368 GLCPCommHandler cpp=1368
1297 MasterMode cpp=1297
1083 CCHandler cpp=1083
712 GeneralIOHandler cpp=644,ansic=68
578 RTCHandler cpp=578
540 Networking cpp=540
512 SerialIoThread cpp=512
407 Application cpp=407
260 Auth cpp=260
107 Auxilliary awk=66,sh=31,cpp=10
96 Customers sh=96

Totals grouped by language (dominant language first):
cpp: 68038 (67.62%)
tcl: 29680 (29.50%)
ansic: 1932 (1.92%)
sh: 596 (0.59%)
php: 268 (0.27%)
awk: 66 (0.07%)
python: 38 (0.04%)

Total Physical Source Lines of Code (SLOC) = 100,618
Development Effort Estimate, Person-Years (Person-Months) = 25.34 (304.10)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 1.83 (21.95)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 13.85
Total Estimated Cost to Develop = $ 3,423,348
(average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
Please credit this data as “generated using David A. Wheeler’s ‘SLOCCount’.”

Ainuke number, mis enamvähem tegelikusele vastab on schedule estimate, kõik teised numbrid on kordi erinevad meie kasuks:


Development effort (Person Months) = 76
Schedule Estimate (Months) = 18
Average Number of Developers = 4

Keskmine arendajate arv ongi keskmine :), sest alustasime kahe arendaja ja ühe projektijuhiga, vahepeal oli projektis tegevad 6 arendajat ja lõpus aitasid projektis lisaks arendajatele 2 testijat.

Lisaks arvutasin välja järgmised näitajad:


Lines per day (8h) (all included - analysis to testing):

cpp 60 (74 ilma testimiseta)
tcl 78 (96 ilma testimiseta)

keskimiselt 66 (80 testimiseta)

Võrdluseks – selle lehe järgi ei ole üldse võimalik kirjutada päevas rohkem koodi kui 28 rida päevas ja seda ka juhul kui kasutada on parimad inimesed ja programmi keerukus on minimaalne.

SLOCcounti saab ka konfida, aga ajahinnangud sellest arvatavasti väiksemaks ei lähe, sest teostatud tarkvara keerukus oli suur. Tarkvara on embbeded (tänapäeva mobiilid oleks lust ja lillepidu) ja tegeleb kommunikatsiooniga – suhtleb kuni 250 teise samasuguse boardiga üle seriali või etherneti (cluster, mis paistab kasutajale ühe seadmena), lisaks peab iga board suhtlema mainboardi, display, GSM modemiga ja serveerima veebi. Kastid kus tarkvara töötab, peavad käima järgmised 15 aastat. Dokumentatsiooni kirjutati tuhandeid lehekülgi.

Tegelikuses me COCOMO mudelit tarkvarale ajahinnangute tegemiseks ei kasuta, sest ei ole ju teada mitu rida koodi tarkvara valmimiseks on vaja kirjutada, aga huvitavat statistikat saab projekti valmimisel siiski genereerida.

1 thought on “SW ajahinnangud praktikas COCOMO mudeli järgi”

  1. Sai ka kunagi hästi ammu COCOMO nimelise asjaga mängitud. Minu jaoks oli huvitav just see tjuunimise pool. Päris õpetlik oli vaadata, kuidas näiteks parameeter “koostöö edukus kliendiga” (mälu järgi oli midagi sellist) muutis projekti kestvuse kahekordseks.
    Muideks, sloc pole vist ainukene, mille abil sai sinna sisendit anda. Ma olen kasutanud Functional Point -e ja sai üsnagi edukalt estimeeritud :)
    Jõudu!

Leave a Reply

Your email address will not be published. Required fields are marked *