COCOMO
COCOMO (ang. constructive cost model) – model szacowania liczby osobogodzin w procesie tworzenia oprogramowania.
Opracował go Barry Boehm w 1981 roku podczas pracy w Boeing Company na podstawie około 60 projektów informatycznych o różnej złożoności (od 2 KDSI do 100 KDSI) i napisanych w różnych językach programowania.
Postępowanie
Ustalenie metryki
Aby oszacować liczbę osobogodzin, należy najpierw oszacować, z ilu linii kodu lub punktów funkcyjnych będzie się składać gotowy projekt. Liczba linii kodu jest przedstawiana w KDSI (1000 (K) delivered source instructions [1 KDSI = 1000 linii].
Ustalenie złożoności
Następnie należy wybrać, do której z trzech poniższych grup pasuje analizowany projekt.
- Łatwy ("organic mode"), to projekt, w którym mały zespół posługuje się znanymi narzędziami pracy. Zna on sprzęt i oprogramowanie, z którymi rozwijany projekt będzie redagować. Presja czasu jest mała. Łatwe projekty są wielkości do max. 50 KDSI.
- Średni ("semi-detached"), to projekt, w którym jeden z czynników z projektu prostego nie jest znany, np. zespół nie zna sprzętu, który przyjdzie mu programować itp. Takie projekty są zwykle wielkości do 300 KDSI.
- Trudny ("embedded mode"), to bardzo złożony projekt, wiele czynników jest nieznanych lub należy uwzględnić szczególne procedury, np. w branży bankowej.
W „Intermediate COCOMO” dodatkowo analizowane są dodatkowe cztery atrybuty:
- Produktu (wymagana czytelność stworzonego oprogramowania,wielkość bazy danych, skomplikowanie)
- Sprzętu (ograniczenia związane z wydajnością, czy tworzony system jest systemem czasu rzeczywistego, ograniczenia pamięci)
- Personelu (analiza możliwości, Doświadczenie w tworzeniu oprogramowania, doświadczenie w tworzeniu oprogramowania danego typu, doświadczenie w tworzeniu oprogramowania wykorzystującego dane środowisko, sprzęt czy język programowania)
- Projektu (jakie narzędzia są potrzebne?, jakie metody tworzenia oprogramowania będą wykorzystywane?, jaki jest harmonogram projektu?, jaka jest presja czasu?)
Wzory
- E=ab(KDSI)bb
- D=cb(E)db
- P=E/D
- D=cb(E)db
gdzie E jest nakładem pracy w osobomiesiącach, D jest czasem, jaki jest potrzebny do rozwoju projektu (time to develop), a P oznacza liczbę osób, przy której projekt będzie najefektywniej zrealizowany.
Stałe ab, bb, cb i db są podane poniżej:
Złożoność projektu | ab | bb | cb | db |
---|---|---|---|---|
Łatwy (organic) | 2.4 | 1.05 | 2.5 | 0.38 |
Średni (semi-detached) | 3.0 | 1.12 | 2.5 | 0.35 |
Trudny (embedded) | 3.6 | 1.20 | 2.5 | 0.32 |