You are on page 1of 35

Uvod u programsko inenjerstvo

Planiranje projekta programske podrke


Predavanje 04

Branko itko

1. Planiranje projekta
Planiranje je esencijalno kod svih projekata
Postizanje uspjeha u razvoju programske podrke zahtjeva
planiranje
Planiranje programskog projekta ukljuuje
koje zadatke treba napraviti
po kojem redoslijedu izvravati zadatke
resursi potrebni za izvravanje zadataka

2. Struktura podjele zadataka (SPZ)


Podjela velikih zadataka na male
ukljuuje odreivanje predmeta dostave i prekretnica koje
e se koristiti za mjerenje progresa
Struktura podjele zadataka mora biti stablasta struktura
Na najviem nivou se nalazi model ivotnog ciklusa
Sljedei nivo odgovara procesu programske podrke
Ostali nivoi se koriste za podjelu zadataka na manje upravljive
zadatke

2. Struktura podjele zadataka


Pravila izrade strukture podjele zadataka

SPZ mora biti stablasta struktura


Svaki zadatak i artefakt mora biti razumljiv i jednoznaan
Svaki zadatak mora imati uvjet zavretka
Svi artefakti moraju biti identificirani
Pozitivni zavretak podzadataka mora implicirati zavretak
nadzadatka

Primjer 1. kuhanje
Model ivotnog ciklusa za kuhanje

Izaberi jelo
Sastavi
namirnice
Skuhaj jelo

Pojedi jelo
Oisti za sobom

Primjer 1. kuhanje
Model procesa kuhanja

Kuhar
Namirnice
Mijeanje
Recept

Neskuhano
jelo

Kuhanje

Jelo

Primjer 1. kuhanje
Mogui podzadaci
Izaberi namirnice, provjeri namirnice, sastavi namirnice, dodaj
tekuinu, dodaj brano, napravi tijesto, dizanje tijesta 1. put,
dodaj preostalo brano, izmijeaj, dizanje tijesta 2. put, oblikuj
kruh, dizanje tijesta 3. put, ispeci, izrei, namai, pojedi, oisti

Primjer 1. kuhanje
Izaberi jelo
izaberi namirnice

lista namirnica

provjeri namirnice

popis za kupovinu

sastavi namirnice

sastavljene namirnice

dodaj tekuinu

tekuina u zdjeli

dodaj brano

tekuina i brano u zdjeli

napravi tijesto

tijesto

dizanje tijesta 1. put

dignuto tijesto

dodaj preostalo brano

zabranjeno dignuto tijesto

dizanje tijesta 2. put

dignuto tijesto s branom

oblikuj kruh

oblikovan neispeen kruh

dizanje tijesta 3. put

spreman kruh za peenje

Sastavi namirnice
Skuhaj jelo
Mijeanje

Primjer 1. kuhanje
Kuhanje

ispeci

kruh

izrei

feta kruha

namai

namazana feta kruha

pojedi

dobar okus

oisti za sobom

ista kuhinja

Jedenje

ienje

Primjer 2. prepoznavanje lica


Tim eli sagraditi sustav za prepoznavanje lica za robota.
1. Izvodljivost
odredi izvodljivost vida
odredi kameru i programske
alate
planiraj nabavu kamere i
programskih alata
2. Analiza rizika
odredi rizike
3. Zahtjevi
specificiraj zahtjeve

4. Oblikovanje
oblikuj prototip
prototipni vid
5. Implementacija
kodiraj snimanje slike
kodiraj obradu slike
kodiraj usporedbu slika
integriraj s ostalim sustavima robota
6. Testiranje
testiraj snimanje slike
7. Dostavljanje
dokumentiraj

Primjer 2. prepoznavanje lica


Neki od zadataka su na visokom nivou
Primjer "razbijanja" zadatka "kodiraj snimanje slike"
instaliraj pokretake programe za kameru
(instalirani pokretaki programi)
testiraj pokretake programe u operativnom sustavu i snimi sliku
u datoteku
(slikovna datoteka)
napravi C++ kod za pristupanje pokretakim programima
(C++ kod)
testiraj C++ kod i snimi sliku u datoteku
(slikovna datoteka dobivena C++ kodom)
testiraj C++ kod u upravljakom programu robota i snimi sliku
(slikovna datoteka dobivena izvrenim C++ kodom na robotu)

3. Tehnika evaluacije i recenzije programa


PERT Program Evaluation and Review Technique
Ova tehnika kreira graf zavisnosti meu zadacima
Svaki zadatak ima procjenu vremena potrebnog za
dovretak i listu ostalih zadataka koji moraju biti zavreni
prije nego ovaj zadatak zapone
Zadatak je zavren ako su svi podzadatci zavreni
Iz grafa se moe
izraunati potrebno vrijeme za sve podzadatke
minimalno vrijeme potrebno za zadatak
kritine putanje podzadataka

Primjer 3. PERT
PERT tablica
podzadatak

potrebno vrijeme

zavisnost

10

a,b

c,d

d,e

f,g

e,f

Primjer 3. PERT
PERT graf

8
8
c

a
4

f
10
b

9
d

2
g
3

5
e

Primjer 3. PERT
PERT vrijeme poetka i zavretka
poetno vrijeme nadzadatka je maksimum vremena njegovih
podzadataka
8
8
c

(0,8)

(10,18)
10

(0,10)

(18,21)

(8,17)

5
e

(10,15)

(21,25)
3

(17,19)
i

(21,24)

Primjer 3. PERT
PERT kritina putanja
putanja od krajnjeg zadatka s najveim zavrnim vremenom
od nadzadatka se uzima onaj podzadatak s najveim zavrnim
vremenom
8
8
c

(0,8)

(10,18)
10

(0,10)

(18,21)

(8,17)

5
e

(10,15)

(21,25)
3

(17,19)
i

(21,24)

Primjer 3. PERT
8

PERT zavretak i kritina putanja


zadaci na kritinoj putanji moraju
zapoeti to ranije kako bi projekt
zavrio na vrijeme

8
c

poetak

zavretak

10

10

18

17

10

15

18

21

10
b

kritina
putanja

17

19

21

25

21

24

*
*

9
d

2
g
3

5
e

podzadatak

Primjer 3. PERT
8

PERT zatije

8
c

zadaci koji nisu na kritinoj putanji


mogu imati fleksibilno vrijeme
(zatije) za poetak i zavretak

10
b

poetak

zavretak

kritina
putanja

0,1

8,9

10

10

18

8,9

17,18

10,14

15,19

18

21

17,19

19,21

21

25

21,22

24,25

*
*

9
d

2
g
3

5
e

podzadatak

4. Procjena troka programske podrke


Procjena troka odreuje potrebne resurse za dovretak
projekta
esto se mjeri u programer po mjesecu (PM)
Dvije osnovne procjene troka
LOC procjena
functional point (FP) procjena funkcijskih toaka

4.1. LOC procjena


Procjena broja linija koda zavrenog projekta

temeljem iskustva
temeljem prijanjeg projekta
razbijanjem projekta na manje dijelove i procjena manjih dijelova
usporedbom s rjeenjem konkurenta

Standardni pristup
za svaki dioi procijeniti maksimalnu maxi, minimalnu mini i
srednju veliinu besti
procjena cijelog projekta je 1/6 sume max i min ili 4 * best
1/6*(max + 4 * best + min)

Primjer 4. LOC procjena

dio1 = (20+4*30+50)/6 = 31.6


dio2 = (10+4*15+25)/6 = 15.8
dio3 = (25+4*30+45)/6 = 31.6
dio4 = (30+4*35+40)/6 = 36.7
dio5 = (15+4*20+25)/6 = 20
dio6 = (10+4*12+14)/6 = 12
dio7 = (20+4*22+25)/6 = 22.17

Dio

Min

Best

Max

20

30

50

10

15

25

25

30

45

30

35

40

15

20

25

10

12

14

20

22

25

sve = 31.6+15.8+31.6+36.7+20+12+22.17 = 170.07 LOC


sd = (((50-20)2+(25-10)2+(45-25)2+(40-30)2+(25-15)2+(1410)2 +(25-20)2)/7)0.5 = 15.8

4.2. Procjena troka temeljem LOC-a


Troak = * KLOC ^ +
je granini troak po KLOC-u (tisuu LOC).
To je dodani troak za dodatnih tisuu LOC-ova.

je eksponent koji reflektira nelinearnost odnosa


Ako je beta > 1 onda se troak po KLOC-u poveava s rastom
projekta

predstavlja fiksni troak izrade projekta

Primjer 5. Troak temeljem LOC-a


Linearan omjer
= 2.4
=1
=0

ID projekta

Veliina (KLOC)

Rad (PM)

50

120

80

192

40

96

10

24

20

48

250
200
150

Veliina (KLOC)

100

Rad (PM)

50
0
1

4.3. Model konstruktivnog troka


Constructive cost model (COCOMO) Bohem 1970-te
Model konstruktivnog troka
Podjela s obzirom na vrste projekata programske podrke
1. Aplikacija (obrada podataka, znanstvena analiza, )
2. Usluni programi (kompajleri, linkeri, )
3. Sistemski programi (operativni sustavi, pogonski programi,)

Odreeni parametri troka za svaku vrstu projekta


1. aplikacija PM = 2.4*KLOC^1.05
2. usluni programi PM = 3.0*KLOC^1.12
3. sistemski programi PM = 3.6*KLOC^1.20

Primjer 6: COCOMO
PM po COCOMO modelu
KLOC Aplikacija Usluni Sistemski
5
13.0
18.2
24.8
10
26.9
39.5
57.1
15
41.2
62.3
92.8
20
55.8
86.0
131.1
25
70.5
110.4
171.3
30
85.3
135.4
213.2
35
100.3
160.9
256.6
40
115.4
186.8
301.1
45
130.6
213.2
346.9
50
145.9
239.9
393.6

produktivnost = LOC/PD
uz pretpostavku da PM = 20PD produktivnost aplikacije od
5 KLOC je 5000LOC/(13.0*20PD) = 19.2 LOC/PD

4.3. Model konstruktivnog troka


Uoen je standard u razvojnom vremenu ovisno o vrsti i
veliini projekta. Razvojno vrijeme (RV) se odreuje po
formuli
aplikacija RV = 2.5*PM^0.38
usluni programi RV = 2.5*PM^0.35
sistemski programi RV = 2.5*PM^0.32

Primjer 7: COCOMO
RV po COCOMO modelu
KLOC
5
10
15
20
25
30
35
40
45
50

Aplikacija
Usluni
PM
RV
PM
RV
13.0
6.6
18.2
6.9
26.9
8.7
39.5
9.1
41.2
10.3
62.3
10.6
55.8
11.5
86.0
11.9
70.5
12.6 110.4
13.0
85.3
13.5 135.4
13.9
100.3
14.4 160.9
14.8
115.4
15.2 186.8
15.6
130.6
15.9 213.2
16.3
145.9
16.6 239.9
17.0

Sistemski
PM
RV
24.8
7.0
57.1
9.1
92.8
10.7
131.1
11.9
171.3
13.0
213.2
13.9
256.6
14.8
301.1
15.5
346.9
16.2
393.6
16.9

4.4. Analiza funkcijskih toaka


Identifikacija i kvantifikacija funkcionalnosti sustava
Klasini elementi funkcionalnosti koji se prebrojavaju;
Upiti odgovori na zahtjev koji ne mijenjaju podatke.
(upit za adresom zaposlenika)
Ulazi podaci koji se stavljaju u aplikaciju
(unos zaposlenika i svih njegovih polja)
Izlazi prikazi podataka u aplikaciji
(ekranski prikaz, report zaposlenika)
Interne datoteke logike cjeline podataka u datoteci
(zaposlenici, odjeli, ustanove)
Vanjska suelja podaci koji se dijele s ostalim programima
(zaposlenici se dijele s kadrovskom slubom)

4.4. Analiza funkcijskih toaka


Identificirane pojedine funkcijske toke se klasificiraju kao
jednostavne, srednje ili sloene
Teinska tablica funkcijskih toaka
jednostavna

srednja

sloena

Izlazi

Upiti

Ulazi

Datoteke

10

15

Suelja

10

Ne postoji standard za brojenje funkcijskih toaka


Vano je zapamtiti da funkcijske toke nastoje izmjeriti
koliinu posla koja e biti potrebna za razvoj programske
podrke

Primjer 8: funkcijske toke


Odjel eli program koji e pridruiti vremena i sobe za svako
predavanje i kreira raspored predavanja za kolegije.
Odjel ima listu kolegija s imenom profesora i predvienim
brojem studenata
Odjel ima listu soba s maksimalnim brojem mjesta za studente
Odjel ima listu kolegija koji se ne mogu drati istovremeno
Ovaj program je mnogo sloeniji nego sloenost ulaza i izlaza
Ulazi
lista kolegija
lista soba
lista vremenskih ogranienja kolegija

Izlazi
raspored predavanja

Nema upita ni vanjskih suelja

4.5. Produktivnost
Produktivnost se odreuje dijeljenjem ukupne veliine
zavrenog produkta s ukupnim radom svih programera
Jedinica je LOC/PD
Alternativa je mjerenje produktivnosti u terminima
funkcijskih toaka po PD
Produktivnost ukljuuje sav rad u svim aktivnostima
ivotnog ciklusa programske podrke

Primjer 9: produktivnost
Procjena funkcijskih toaka projekta = 50FP
LOC = 950
Aktivnost

Programer Dan

Zahtjevi

20

Oblikovanje

10

Implementacija

10

Testiranje

15

Dokumentacija

10

Ukupan rad = 65 PD
Produktivnost = 950LOC/65PD = 14.6 LOC/PD
Produktivnost = 50FP/65PD = 0.77FP/PD

4.6. Evaluacija procjene


Kako bi se evaluirala procjena, potrebno je izmjeriti
procjenu rada i stvarni rad
faktor kvalitete procjene je povrina stvarne krivulje
podijeljena s povrinom izmeu stvarne i procijene krivulje
Tom DeMarco kae ako je omjer vei od 8 onda je dobra
procjena

Primjer 10: evaluacija procjene


Sljedee procjene su dane za projekt koji kota 3.5 M$ i
zavren je nakon 11.5 mjeseci
Inicijalno

2.3 M$

1.5 mjeseci

3.1 M$

5.5 mjeseci

3.9 M$

8 mjeseci

3.4 M$

11.5 mjeseci

4,5
4

3,5
3
2,5
2
1,5
1
0,5
0
0

10

12

ukupna povrina = 3.5M$ * 11.5m = 40.25M$m


razlika krivulje i procjene =
|2.3-3.5|*(1.5-0) +|3.1-3.5|*(5.5-1.5) +
|3.9-3.5|*(8-5.5) + |3.4-3.5|*(11.5-8) = 4.75 M$m
omjer = 40.25M$m/4.75M$m = 8.7

14

Saetak
Planiranje projekta
Struktura podjele zadataka
Tehnika evaluacije i recenzije programa
PERT

Procjena troka programske podrke


LOC procjena
procjena troka temeljem LOC-a
Model konstruktivnog troka - COCOMO

procjena funkcijskih toaka


analiza funkcijskih toaka
produktivnost
evaluacija procjene

You might also like