Sunteți pe pagina 1din 10

Modelul COCOMO

COCOMO (COnstructive COst Model Modelul constructiv al costurilor);

Model utilizat in estimarea efortului in luni-om; Evaluarea se va face urmnd urmtorii pai:

1. stabilirea tipului de proiect care a stat la baza dezvoltrii produsului software proiect organic (o echip relativ mic dezvolt programul ntr-un mediu cunoscut; persoanele implicate au n general experien n proiecte similare realizate n organizaia lor; ei pot s lucreze de la nceput, nefiind necesare investiii iniiale; proiectele de acest tip sunt de multe ori programe relativ mici); 2. stabilirea complexitii aplicaiei prin analiza punctelor funcionale (se bazeaz pe numrarea diferitelor structuri de date utilizate; se presupune c acest numr este un bun indicator pentru dimensiunea proiectului; metoda este potrivit mai ales pentru aplicaiile comerciale, n care structura datelor are o foarte mare importan; este mai puin indicat pentru proiectele n care algoritmii joac rolul dominant, precum compilatoarele sau aplicaiile de timp real; are ca scop evaluarea posibilitilor sistemului din punctul de vedere al utilizatorilor; de aceea, analiza se bazeaz pe modalitile n care diveri utilizatori interacioneaz cu aplicaiile; sistemul este descris de cinci parametri fundamentali: fiiere interne logice, fiiere externe de interfa, intrri externe, ieiri externe i cereri externe); aici se construiete un tabel cu valorile asociate punctelor funcionale enumerate anterior, raportat la complexitatea stabilit, pentru a putea calcula PFN (Puncte Funcionale Neajustate); parametrii din tabel pot fi caracterizati astfel: IE (intrri externe) sunt intrrile de la utilizator care furnizeaz date distincte orientate pe aplicaie; exemple de astfel de intrri sunt numele de fisiere si seleciile din meniuri; pentru aplicaia avut n vedere ne vom referi la IE ca fiind cmpurile pe care utilizatorul le populeaz cu date, mpreun cu seleciile pe care le realizeaz n listele derulante; OE (ieiri externe) sunt orientate spre utilizator; acestea sunt sub form de rapoarte i mesaje, respectiv scadenarul furnizat utilizatorului de ctre aplicaia bancar; CE (cereri externe) sunt intrri interactive ce necesit un rspuns (ex: module avansate de cutare); FI(fiiere interne) sunt fiierele principale ale sistemului; FE (fiiere externe) sunt acele module predefinite care pot fi integrate in aplicaii, precum declaraii de import (java) sau using (C#).

Clase de sisteme

Tabel 1. Valorile parametrilor pentru COCOMO de baza

Parametrul Valoare msurat

Operaie Indicatorul de Rezultat complexitate SIMPL = = = = =

IE (intrri 3 X 3 externe) OE (ieiri 1 X 4 externe) CE (cereri 4 X 3 externe) FI (fiiere 9 X 7 interne) FE (fiiere 3 X 5 externe) TOTAL (PFN) Tabelul 2 Descrierea punctelor funcionale ale aplicaiei

Totalul fiecrui parametru 9 4 12 63 15 103

3. odat stabilit valoarea punctelor funcionale neajustate (PFN), se trece la urmtorul pas, adic rafinarea acestei valori folosind factorul de complexitatet tehnic (FCT), care multiplic valoarea iniial a lui PFN producnd numrul de puncte funcionale ajustate (PFA). Formulele de calcul ale acestor valori sunt date mai jos. Indicatorul GI (gradul de influenare) este suma punctelor din Tabelul 2 pentru toate caracteristicile cuantificate.

Indicator Nr. Crt. ( ci ) 1 Capacitate de recuperare 2 Comunicaii de date 3 Funcii distribuite 4 Performan 5 Utilizare operaional 6 Intrri de date on-line 7 Configuraii utilizate masiv 8 Actualizri on-line 9 Interfa complex 10 Prelucrri complexe 11 Refolosire 12 Usurin la instalare 13 Amplasri multiple 14 Faciliti de schimbare TOTAL (GI) Tabelul 3 Indici de rafinare ai PFN

Valoare (0-5) 1 2 1 1 2 1 1 0 2 1 3 3 3 2 23

Aplicand formulele PFA = PFN * FCT , FCT = 0,65 + 0,01*GI GI = GI = 23 , FCT = 0,65 + 0.01*23 = 0,88 PFA = 103 * 0,88 = 90,64 Analiznd aceste informaii putem concluziona c aplicaia software are la baza un proiect organic, este simpla din punctul de vedere al complexitatii si va avea un numar minin de 734 de linii de cod. Aplicnd modelul COCOMO, putem cuantifica legtura dintre efortul i durata unui proiect software. Acest calcul are la baz dimensiunea aplicaiei, exprimat n mii de linii de cod (KDLOC). Pentru calculul efortului utilizm formula , unde a i b sunt constantele care caracterizeaz tipul proiectului software, pentru categoria celor organice, valorile constantelor fiind: a = 2.4 i b = 1.05. tiind c aplicaia are 0,73 KDLOC, valoarea efortului va fi E = 1,72 pers-luni. Folosind rezultatul efortului i formula M = c*E , putem calcula orarul de dezvoltare al proiectului (exprimat n luni), unde c i d sunt constante care depind de tipul proiectului software, n cazul celor organice valorile lor fiind c = 2.5 i d = 0.35. Astfel, valoarea lui M este de 3 luni.

COCOMO se foloseste i pentru estimarea costurilor de ntreinere. Formula se bazeaz pe eforturile anterioare estimate: E = TMA *E, unde TMA este traficul de modificare anual, adic acea fraciune din KDLOC care se schimb pe parcursul unui an. Numrul de persoane necesare pentru desfurarea proiectului software se calculeaz foarte uor, raportnd valoarea efortului total (E) la durata de dezvoltare estimat (M); astfel, pentru aplicaia analizat, necesarul de personal are valoarea 0,57, adic pentru dezvoltarea unei aplicaii software de aproximativ 734 linii de cod este nevoie de una maxim o persoana care s lucreze timp de 3 luni.

Modelul Nelson Modelul Nelson se foloseste pentru estimarea costurilor unei aplicatii software. In modele de estimare, este presupusa o relatie simpla intre cost si efort. Efortul poate fi masurat de exemplu in luni-om (adica numarul estimativ de luni necesar unui singur om s realizeze lucrarea), si fiecarei luni-om i se asociaza o suma fixa de bani, corespunzator salariului angajatilor. Costul total estimat se obine inmultind numarul estimat de luni-om cu factorul constant considerat. Nelson (1966) ofera un model liniar pentru estimarea efortului necesar pentru un proiect de dezvoltare software.

E = -33,63 +9,15x1 +10,73x2 +0,51x3+0,46x4+0,40x5+7,28x6-21,45x7 + 13,5x8+12,35x9+58,82x10+30,61x11+29,55x12+0,54x13-25,20x14

Factor X X X X X X X X X X10 X11 X12 X13 X14

Descriere Instabilitatea specificatiilor cerintelor Instabilitatea proiectarii Procentajul de instructiuni matematice Procentajul de instructiuni I/O Numarul subprogramelor Utilizarea unui limbaj de nivel inalt Aplicatie comerciala Program de sine statator Primul program pe aceasta masina Dezvoltare concurenta de hardware Utilizarea dispozitivelor de random-acces Masina gazda diferita de masina tinta Numar de erori Dezvoltare pentru o organizatie militara

Valori posibile 2 1 20 80 0 (da) 0 (da) 1 (nu) 0 (da) 1 (nu) 1 (nu) 0 (da) 0 (da) 21 1 (nu)

E = -33,63 +9,15*2 +10,73*1 +0,51*20+0,46*80+0,40*0+7,28*0-21,45*1 + 13,5*0 +12,35*1 +58,82*1 +30,61*0 +29,55*0 +0,54*21 -25,20*1; E = 78,26 P = (62,60 R 93,9) 0,9 Costurile estimate prin acest tip de model rezulta intr-un anumit interval, ramanand o probabilitate diferita de zero ca acesta sa fie in afara intervalului. Aplicabilitatea acestor estimari este puternic influentata de marimea intervalului si de probabilitatea ca valoarea reala a costului sa fie intr-adevar in acel interval.

Modelul Wolverton

Modelul Wolverton reprezinta o modalitate prin care un expert poate ajunge la o estimare a costului printr-un proces bottom-up.

Pentru fiecare modul, va fi obinut un cost estimativ iar costul final va fi suma costurilor modulelor, cu o corectie aplicata datorita integrarii modulelor.

Wolverton descrie un model n care o matrice a costurilor este folosita ca punct de plecare in determinarea costurilor modulelor. In aceasta matrice exista un numar limitat de tipuri diferite de module si un numar de nivele de complexitate. Tabelul urmator ilustreaza o matrice ipotetica de costuri.

Elementele matricei reflect costul pentru fiecare linie de cod.

M = 245*2 + 0*2 + 180*2 + 160*2 +135*2 = 1440

Acest tip de model are de asemenea probleme. In afara de dificultatea estimarii costului de integrare a modulelor, utilizatorul trebuie sa estimeze subiectiv clasa de complexitate din care face parte fiecare modul, ceea ce determin un grad mare de nesiguranta.

Alti factori care vor avea impact asupra productivitatii, cum ar fi experienta in programare si caracteristicile hardware, nu sunt luati in considerare.

Extinderea matricei pentru a include si acesti factori ar creste gradul de subiectivitate al metodei.

De asemenea, modelul nu include costurile de integrare a modulelor.

Modelul Walston-Felix

Modelul a fost creat prin analiza a 60 de proiecte de la IBM. Aceste proiecte erau complet diferite ca mrime, iar programele au fost scrise n mai multe limbaje de programare. Totusi nu reprezint o surpriz faptul c dac aplicm acest model chiar unei submultimi a celor 60 de proiecte, nu vom avea rezultate satisfctoare. ncercnd s explice aceste rezultate dintr-o plaj mare de valori, Walston si Felix au identificat 29 de variabile care influenteaz n mod sigur productivitatea. Pentru fiecare din aceste variabile au fost considerate trei niveluri: mare, mediu si mic. Pentru un numr de 51 de proiecte, Walston si Felix au determinat nivelul fiecrei variabile din cele 29, mpreun cu productivitatea obtinut, exprimat ca numrul liniilor de cod pe lun-om. Aceste rezultate sunt prezentate n tabelul urmtor pentru cteva din cele mai importante variabile. De exemplu, productivitatea medie este de 500 de linii de cod pe lun-om pentru proiecte cu o interfat utilizator de complexitate sczut. Pentru o interfat de complexitate nalt sau medie, productivitatea este de 295 si respective 124 de linii de cod pe lun. Ultima coloan reprezint variatia productivittii, PC (engl. productivity change), valoarea absolut a diferentei dintre valorile minime si maxime.

Ecuatia ce sta la baza modelului Walston-Felix este: E = 5,2* = 405,306 Walston si Felix consider c indexul productivittii I poate fi determinat pentru noile proiecte dup urmtoarea relatie:

unde ponderile W sunt definite astfel,:

n relatia de mai sus reprezint variatia productivittii factorului i. Pentru primul factor din tabelul de mai sus, complexitatea interfetei cu utilizatorul, rezult urmtoarele,

PC = 278, deci W = 1,22 W = PC = 264, deci W = 1,21 W = 0,5* PC = 238, deci, W = 1,18 W=0,5* PC = 134, deci, W = 1,06 W=0,5*

I=

= 1,29*0+ 1,22*0 +1.21*0+ 1,18(-1)+1,06(-1) = -1,18-1,06= -2,24

Modelul Halstead i propune o estimare mai obiectiv a mrimii unui program pe baza unui numr de uniti sintactice: operanzi i operatori.
Entiti de baz:

n1 = numrul de operatori diferii n2 = numrul de operanzi diferii N1 = numrul total de apariii ale operatorilor N2 = numrul total de apariii ale operanzilor Vocabularul: n = n1 + n2 Lungimea implementrii: N = N1 + N2 Ecuaia lungimii: N' = n1log2n1 + n2log2n2 Volumul programului: V = N log2n Dificultatea: D = (n1 / 2) * (N2 / n2)

Efortul: E = D * V Timpul de implementare (sec): T = E/18

Variabile

Estimare empiric a lungimii programului n linii de cod:

LOC = 102 + 5,31 * VARS n = 4 n = 3 n = n +n = 7 N = 137 N = 312 N = N + N = 449 N' = n1log2n1 + n2log2n2 = 8 + 4,75 = 12,75 V = N log2n = 1260,50 D = (n1 / 2) * (N2 / n2) = 312 E = D * V = 1260,50*312 = 393.276 T = E/18 = 21.848,6