1 Odhadování ceny SW původní COCOMO 2 Idea • Cena vývoje aplikace přímo závisí na velikosti SW. • Přesnost odhadu velikosti SW závisí na etapě vývoje. - V pozdějších etapách je odhad přesnější. - Přesnost odhadu se může lišit až čtyřikrát (4:1) oběma směry. 3 Idea 4 COCOMO • COCOMO – Constructive Cost Model • B.Boehm (IBM), 1981, 1984, 1995 • #SLOC jako hlavní indikátor velikosti a složitosti SW • Empirické vztahy pro vyjádření E=E (KSLOC) a T=T(KSLOC) - E – effort (práce, člověk-měsíc) - T – doba vývoje (měsíc) 5 COCOMO Zdroje empirických dat: • větší počet předchozích komplexních projektů - aplikace odlišného druhu s odlišnými cíly - odlišná vývojová prostředí • rozhovory s více manažery Parametry modelu byly nastaveny podle získaných empirických dat. 6 Původní COCOMO 3 úrovně detailu: • Základní model: hrubý odhad E(KSLOC) a T(KSLOC) založen na odhadu KSLOC. • Střední model: vliv jiných faktorů na E(KSLOC) a T(KSLOC). • Pokročilý model: bere v úvahu vlivy vývojové etapy, ve které se projekt nachází. 7 Původní COCOMO 3 vývojové módy: • Organický mód – jednodušší, dobře řešitelné projekty, zpravidla menšího rozsahu • Bezprostřední mód – středně obtížné projekty • Vázaný mód – rozsáhlé projekty s vysokými nároky na řízení 8 Organický mód • malé projekty (SW < 50 KSLOC) • úplné porozumění požadavkům • malá omezení, volnost při návrhu rozhraní • velké zkušenosti při zpracování podobných projektů • malá závislost na speciálním HW • minimální potřeba nových algoritmů a architektur • minimum požadavků na zkrácení termínu dodání 9 Organický mód - příklady • vědecké aplikace • jednoduché obchodní modely a aplikace • jednoduchá skladová aplikace • jednoduchý systém pro řízení výroby 10 Bezprostřední mód • projekty střední velikosti (SW < 300 KSLOC) • dobré pochopení požadavků • zřetelná omezení pro uživatelské rozhraní • nezanedbatelná zkušenost při práci na podobných projektech • střední závislost na speciálním HW • střední potřeba nových algoritmů a architektur • nezanedbatelný podnět pro ukončení před plánovaným termínem 11 Bezprostřední mód - příklady • transakční zpracování • nový operační systém a překladač • skladová aplikace střední složitosti • systém pro řízení výroby střední složitosti 12 Vázaný mód • SW všech velikostí • jen hrubá představa o cílech projektu • těsná omezení, striktní požadavky na rozhraní • nezanedbatelná zkušenost při práci na podobných projektech • vysoká závislost na speciálním HW • extrémní požadavky na nové algoritmy a architektury • vysoké podněty pro dokončení před termínem 13 Vázaný mód - příklady • složité transakční zpracování • ambiciózní a složitý operační systém • RT aplikace • složité povelové a řídící systémy 14 Úsilí a čas Výpočet E(KSLOC) a T(KSLOC): E = a .(KSLOC)b T = c.Ed a,b,c,d: parametry volené podle úrovně modelu a vývojového módu 15 Hodnoty parametrů Empirické hodnoty parametrů pro výpočet E(KSLOC) a T(KSLOC) • tabulky hodnot a,b,c,d pro všechny kombinace úrovně modelu/vývojové módy • příklady: - základní model, bezprostřední mód: a=3.0, b=1.12, c=2.5, d=0.35 - střední model, vázaný mód: a=2.8.Fc, b=1.2, c=2.5, d=0.32 16 Hodnoty parametrů Empirické hodnoty parametrů pro výpočet E(KSLOC) a T(KSLOC) Intervaly hodnot parametrů: • a ∈ [2.4, 3.6] pro základní model • a ∈ [2.8 Fc, 3.2 Fc] pro střední a pokročilý model • b ∈ [1.05, 1.20 ] • c = 2.5 ve všech případech • d ∈ [0.32, 0.38 ] 17 Hodnoty parametrů Empirické hodnoty parametrů pro výpočet E(KSLOC) a T(KSLOC) • V základním modelu mají všechny parametry konstantní hodnoty. • Ve středním a pokročilém modelu ve všech vývojových módech a závisí na Fc, ostatní parametry jsou konstantní. Korekční faktor Fc je součinem hodnot 15 atributů (cost drivers) specifických pro vývojový proces. 18 Korekční faktor Atributy, které mají vliv na korekční faktor Fc: • atributy SW produktu • HW atributy • atributy vývojového týmu • atributy projektu 19 Korekční faktor Atributy, které mají vliv na korekční faktor Fc, mohou nabývat 6 možných hodnot ve stupnici: • velmi nízký • nízký • normální • velký • velmi velký • extrémně velký Hodnotám odpovídají diskrétní numerické hodnoty. 20 Atributy SW produktu • RELY - požadovaná spolehlivost (0.75 - 1.40) (velmi nízká: 0.75, extrémně velká: 1.40) • DATA - velikost databáze (0.94 - 1.16) • CPLX - složitost produktu (0.70 - 1.65) 21 Atributy SW produktu Příklady RELY a DATA atributů: • vysoké finanční riziko => RELY = velký • (DB byty)/(program SLOC) ≥ 1000 => DATA = velmi velký 22 Atributy SW produktu Příklady CPLX hodnot řídící operace: Rekurzivní procedury, zpracování přerušení s pevnou prioritou • výpočty: obtížné, ale strukturované numerické operace, parciální diferenciální rovnice • I/O operace: detekce přerušení, zpracování a maskování, síťové komunikace • zpracování dat: složité soubory, vyhledávání CMPLX = velmi velká 23 HW atributy • TIME - omezení času výpočtu (1.00 - 1.66) • STOR - využití paměti/disku (1.00 - 1.56) • VIRT - spolehlivost (zranitelnost) virtuálních strojů, tj. HW + DBMS + OS + … (0.87 - 1.30) • TURN - doba obrátky (0.87 - 1.15) 24 HW atributy Příklady: • omezení na časy výpočtu větší než 95% => TIME = extrémně velký • využití paměti/disku < 50% => STOR = normální • velké změny ve virtuálních strojích každé 2 týdny, malé změny každé 2 dny => VIRT = velmi velký • interaktivní práce => TURN = nízký 25 Atributy vývojového týmu • ACAP - schopnost analytická (1.46 - 0.71) • PCAP - schopnost programátorská (1.42 - 0.70) • AEXP - zkušenost s podobnými aplikacemi (1.29 - 0.82) • VEXP - zkušenost se specifickým „virtuálním strojem“ (1.21 - 0.90) • LEXP - zkušenost se specifickým programovacím jazykem (1.14 - 0.95) 26 Atributy vývojového týmu Příklady • 3-letá zkušenost s podobnými aplikacemi => AEXP = normální • programátorská schopnost v týmové práci = 35 (stupnice 0..100) => PCAP = nízký • 3-letá zkušenost se specifickým programovacím jazykem => LEXP = velký 27 Atributy projektu • MODP - použití moderních programovacích technik (1.24 - 0.82) • TOOL - použití SW nástrojů (1.24 - 0.83) • SCED - přesné plánování (1.23 - 1.10) 28 Atributy projektu Příklady: • občasné použití moderních programovacích technik => MODP = normální • stálé používání SW nástrojů pro programování => TOOL = velký • použití SW nástrojů také pro návrh, testování a analýzu požadavků => TOOL = velmi velký • striktní plány = 75% nominálních hodnot => SCED = velmi nízký 29 Cenové koeficienty 30 Kroky při použití COCOMO Při aplikaci modelu COCOMO se postupně provádějí následující kroky: • Určení nominálního úsilí En • Určení korekčního faktoru Fc • Určení aktuálního (zpřesněného) úsilí E • Určení doby vývoje T a dalších faktorů relevantních pro projekt 31 Kroky při použití COCOMO Krok 1 - Určení nominálního úsilí En • definujte (odhadni) úroveň modelu a vývojový mód • nastavte odpovídající hodnoty a a b podle tabulky • vypočtěte En 32 Kroky při použití COCOMO Krok 2 - Určení korekčního faktoru Fc • na základní úrovni není třeba řešit • určete popisné hodnoty pro každý z 15 atributů • převeďte na numerické hodnoty podle tabulky 33 Kroky při použití COCOMO Krok 3 - Určení aktuálního (zpřesněného) úsilí E • na základní úrovni E = En • E [člověk-měsíc] = Fc . En • Fc vyjadřuje nárůst pracnosti En podle vlivu a významu jednotlivých atributů vývojového procesu 34 Kroky při použití COCOMO Krok 4 - Určení doby vývoje T a dalších faktorů relevantních pro projekt • nastavte odpovídající hodnoty c a d podle tabulky • T[měsíc] = c . E d • COCOMO také umožňuje: • výpočet odhadovaných nákladů • rozložení práce a ceny v jednotlivých etapách řešení projektu • … 35 Původní COCOMO Hodnoty a,b,c,d jsou shodné pro střední a pokročilou úroveň modelu • pro střední úroveň se aplikuje výpočet na celý projekt • pro pokročilou úroveň se výpočet aplikuje pro jednotlivé etapy životního cyklu 36 Původní COCOMO COCOMO lze také použít pro odhad nákladů při modifikaci existujících aplikací ESLOC = ASLOC . (0,4 DM + 0,3 CM + 0,3 IM) / 100 ESLOC - ekvivalentní počet SLOC ASLOC - odhadnutý počet modifikovaných SLOC DM - procento modifikace v návrhu CM - procento modifikace v kódu IM - integrační úsilí (procento původní práce) 37 Rozšířené a upravené modely Existují různé verze COCOMO pro různé účely a prostředí • COCOMO_85 a COCOMO_87, malé odchylky • ADA_87 a APM_88, pro projekty v jazyce ADA • inkrementální COCOMO, upravené pro použití při inkrementálním vývoji SW • REVIC • odlišné hodnoty parametrů a rozložení úsilí v různých etapách projektu • statistický odhad SLOC a kvantitativní přístup k nejistotě 38 Úkoly • Seznamte se s prostředím systému COCOMO. • Aplikujte model COCOMO na vámi řešený projekt.