COCOMO

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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[edytuj | edytuj kod]

Ustalenie metryki[edytuj | edytuj kod]

Aby oszacować liczbę osobogodzin, należy najpierw oszacować, z ilu linijek kodu lub punktów funkcyjnych będzie się składać gotowy projekt. Liczba linijek kodu jest przedstawiana w KDSI (1000 (K) delivered source instructions [1 KDSI = 1000 linijek].

Ustalenie złożoności[edytuj | edytuj kod]

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.
  • Pośredni projekt ("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.

To jednak dopiero podstawy tej metody, które w angielskiej Wikipedii określone są mianem „Basic COCOMO”. Jeżeli wczytamy się dokładniej znajdziemy „Intermediate COCOMO”, w którym 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[edytuj | edytuj kod]

E=ab(KDSI)bb
D=cb(E)db
P=E/D

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:

Stałe ab, bb, cb, db
Software project ab bb cb db
Organic 2.4 1.05 2.5 0.38
Semi-detached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]