Sveučilište u Zagrebu Fakultet elektrotehnike i računarštva Krešimir Fertalj Ivana Nižetić Kosović Boris Milašinović Razvoj primijenjene programške potpore Skripta FER, ožujka 2016.
Sveu ili te u Zagrebu Fakultet elektrotehnike i ra unartva
Kreimir Fertalj
Ivana Nieti Kosovi
Boris Milainovi
Razvoj primijenjene programke potpore
Skripta
FER, oujka 2016.
i
Sadraj
Predgovor ................................................................................................................................................ 1
1 Osnove programskog inenjerstva .................................................................................................. 2
1.1 Programska potpora ................................................................................................................ 2
1.2 Osnove programskog inenjerstva .......................................................................................... 2
1.3 Programsko inenjerstvo i srodna podruja ............................................................................ 2
1.4 Modeli razvojnog procesa ....................................................................................................... 3
1.5 ivotni ciklus programske potpore .......................................................................................... 3
1.6 Vodopadni model .................................................................................................................... 5
1.7 Iterativni postupak razvoja ...................................................................................................... 6
1.8 Ekstremno programiranje ....................................................................................................... 7
1.9 Zadaci....................................................................................................................................... 9
2 Specifikacija zahtjeva ..................................................................................................................... 10
2.1 Vrste zahtjeva ........................................................................................................................ 10
2.2 Primjeri loe definiranih zahtjeva .......................................................................................... 11
2.3 Prioriteti zahtjeva .................................................................................................................. 12
2.4 Dokumentiranje analize (zahtjeva)........................................................................................ 13
2.5 Zadaci..................................................................................................................................... 14
3 Projekt izrade aplikacije................................................................................................................. 15
3.1 Osnove upravljanja projektom .............................................................................................. 15
3.2 Integrirana razvojna okruenja i kontrola programskog koda .............................................. 16
3.3 Plan projekta ......................................................................................................................... 17
3.3.1 Zadaci projekta .............................................................................................................. 18
3.3.2 Resursi projekta ............................................................................................................. 20
3.3.3 Upravljanje konfiguracijom ........................................................................................... 21
3.4 Zadaci..................................................................................................................................... 24
4 Osnove razvojnog okvira Microsoft .NET i programskog jezika C# ............................................... 25
4.1 Elementi jezika i struktura programa .................................................................................... 25
4.1.1 Identifikatori i kljune rijei ........................................................................................... 26
4.1.2 Prostor imena ................................................................................................................ 26
4.1.3 Postupak Main ............................................................................................................... 27
ii
4.1.4 Razred ............................................................................................................................ 28
4.1.5 Standardni ulaz i izlaz .................................................................................................... 28
4.1.6 Komentari ...................................................................................................................... 29
4.1.7 Konzolna i grafika aplikacija ......................................................................................... 29
4.1.8 Ponovno koritenje koda ............................................................................................... 29
4.2 Tipovi podataka ..................................................................................................................... 31
4.2.1 Osnovni tipovi ................................................................................................................ 32
4.2.2 Varijable i pridruivanje vrijednosti ............................................................................... 33
4.2.3 Vrijednosti i reference ................................................................................................... 33
4.2.4 Razredi String i StringBuilder ......................................................................................... 33
4.2.5 Nabrajanje - Enum ......................................................................................................... 34
4.2.6 Polja ............................................................................................................................... 34
4.2.7 Konverzija tipova ........................................................................................................... 36
4.2.8 Nulabilni tipovi podataka .............................................................................................. 37
4.2.9 Tipovi podataka var i dynamic ....................................................................................... 38
4.3 Operatori ............................................................................................................................... 38
4.3.1 Aritmetiki operatori, operatori usporedbe i logiki operatori ..................................... 38
4.3.2 Ostali operatori .............................................................................................................. 38
4.3.3 Prioritet operatora ........................................................................................................ 39
4.4 Naredbe za upravljanje programskim tokom ........................................................................ 39
4.4.1 Selekcija ......................................................................................................................... 39
4.4.2 Petlje .............................................................................................................................. 40
4.4.3 Skokovi ........................................................................................................................... 40
4.5 Zadaci..................................................................................................................................... 40
5 Objektno orijentirano programiranje ............................................................................................ 42
5.1 Koncepti ................................................................................................................................. 42
5.2 Razredi ................................................................................................................................... 43
5.2.1 lanovi razreda .............................................................................................................. 43
5.2.2 Modifikatori tipova i lanova ......................................................................................... 43
5.2.3 Statiki lanovi, konstante i atributi .............................................................................. 44
5.2.4 Konstruktori ................................................................................................................... 44
5.2.5 Postupci ......................................................................................................................... 45
iii
5.2.6 Svojstva .......................................................................................................................... 47
5.2.7 Indekseri ........................................................................................................................ 48
5.2.8 Preoptereenje postupaka ............................................................................................ 48
5.2.9 Preoptereenje operatora ............................................................................................. 49
5.3 Nasljeivanje ......................................................................................................................... 49
5.3.1 Nasljeivanje openito .................................................................................................. 49
5.3.2 Apstraktni razredi .......................................................................................................... 52
5.3.3 Dinamiko vieoblije .................................................................................................... 54
5.3.4 Agregacija i kompozicija ................................................................................................ 55
5.3.5 Suelja ............................................................................................................................ 56
5.4 Kolekcije ................................................................................................................................ 57
5.4.1 Kolekcija ArrayList ......................................................................................................... 58
5.4.2 Kolekcije Stack i Queue .................................................................................................. 59
5.4.3 Generike kolekcije........................................................................................................ 59
5.4.4 Kolekcije Hashtable i Dictionary .................................................................................... 61
5.4.5 Proirenja ....................................................................................................................... 62
5.5 Zadaci..................................................................................................................................... 63
6 Tehnike programiranja .................................................................................................................. 65
6.1 Defenzivno programiranje ..................................................................................................... 65
6.2 Tehnike obrade pogreaka .................................................................................................... 65
6.3 Iznimke .................................................................................................................................. 66
6.3.1 Obrada iznimki ............................................................................................................... 66
6.3.2 Prosljeivanje iznimki .................................................................................................... 67
6.3.3 Vlastite iznimke ............................................................................................................. 69
6.3.4 Preporuke za koritenje iznimki .................................................................................... 70
6.4 Tvrdnje ................................................................................................................................... 71
6.5 Barikade ................................................................................................................................. 72
6.6 Otkrivanje pogreaka ............................................................................................................. 74
6.6.1 Koliina defenzivnog koda u zavrnoj verziji ................................................................. 75
6.7 ivotni vijek objekta .............................................................................................................. 75
6.8 Zadaci..................................................................................................................................... 78
7 Grafiko korisniko suelje ............................................................................................................ 79
iv
7.1 WindowsForms ...................................................................................................................... 79
7.2 Dogaaji i delegati ................................................................................................................. 79
7.3 Prijenos parametara meu formama .................................................................................... 81
7.4 Provjera valjanosti unosa podataka ...................................................................................... 83
7.5 Vlastite kontrole i vlastiti dogaaji ........................................................................................ 84
7.6 Vienitnost i paralelno programiranje u jeziku C# ................................................................ 87
7.6.1 Primjer potrebe za paralelnim izvravanjem ................................................................. 88
7.6.2 Stvaranje zadatka u pozadini ......................................................................................... 90
7.6.3 ekanje zadataka i asinkroni postupci .......................................................................... 90
7.6.4 Kontrola ProgressBar ..................................................................................................... 91
7.6.5 Pristup kontrolama korisnikog suelja iz drugi niti ...................................................... 91
7.7 Zadaci..................................................................................................................................... 92
8 Aplikacija nad bazom podataka ..................................................................................................... 93
8.1 Ogledna baza podataka ......................................................................................................... 93
8.2 Tehnologija ADO.NET ............................................................................................................ 93
8.3 Izravna obrada podataka ....................................................................................................... 95
8.3.1 Prikljuak na bazu podataka .......................................................................................... 95
8.3.2 Primjer izravne obrade .................................................................................................. 97
8.3.3 Zatvaranje prikljuka ..................................................................................................... 98
8.3.4 Neovisnost o konkretnoj implementaciji ...................................................................... 98
8.4 Lokalna obrada podataka ...................................................................................................... 98
8.5 Entity Framework .................................................................................................................. 99
8.5.1 Naini kreiranja modela u Entity Frameworku .............................................................. 99
8.5.2 Stvaranje modela na osnovu postojee baze podataka ................................................ 99
8.5.3 Elementi EF modela ..................................................................................................... 102
8.5.4 Vanija svojstva i postupci razreda DbContext i DbSet ............................................... 102
8.5.5 Dodavanja novog zapisa .............................................................................................. 103
8.5.6 Auriranje postojeeg zapisa ....................................................................................... 103
8.5.7 Brisanje zapisa ............................................................................................................. 104
8.5.8 Upiti nad EF modelom ................................................................................................. 104
8.5.9 EF i pohranjene procedure .......................................................................................... 104
8.6 Zadaci................................................................................................................................... 105
v
9 Povezivanje podataka i sloene zaslonske maske ....................................................................... 106
9.1 Povezivanje podataka s kontrolama na formi ..................................................................... 106
9.1.1 Razred BindingSource .................................................................................................. 107
9.2 Osvjeavanje povezivanja .................................................................................................... 109
9.2.1 Razredi List i BindingList .............................................................................................. 111
9.2.2 Rukovanje podacima koritenjem kontrole BindingSource ........................................ 114
9.2.3 Promjena povezanog podatka i suelje INotifyPropertyChanged ............................... 114
9.3 Povezivanje na podatke koritenjem EF modela ................................................................. 115
9.3.1 Dinamiko postavljanje povezivanja ........................................................................... 116
9.3.2 Navigacija podacima vlastitim metodama .................................................................. 117
9.3.3 Rad s podacima (dodavanje, izmjena, brisanje) .......................................................... 118
9.3.4 Opoziv izmjena ............................................................................................................ 119
9.4 Validacija unosa podataka ................................................................................................... 119
9.5 Kontrola DataGridView ........................................................................................................ 121
9.6 Kontrola BindingNavigator .................................................................................................. 123
9.7 Sloene zaslonske maske ..................................................................................................... 123
9.7.1 Potrebne preinake na Entity Framework modelu ....................................................... 123
9.7.2 Izraunata polja ........................................................................................................... 124
9.7.3 Odabir vrijednosti stranog kljua ................................................................................ 124
9.7.4 Sinkronizacija stavki ..................................................................................................... 126
9.7.5 Poetne i referentne vrijednosti stavki ....................................................................... 126
9.7.6 Dodavanje novog dokumenta ..................................................................................... 128
9.7.7 Spremanje podataka ................................................................................................... 128
9.7.8 Brisanje zapisa zaglavlja (skupa s detaljima) ............................................................... 129
9.7.9 Brisanje pojedinane stavke ........................................................................................ 129
9.7.10 Opoziv izmjena ............................................................................................................ 130
9.8 Zadaci................................................................................................................................... 130
10 Korisniko suelje i dijalozi ...................................................................................................... 132
10.1 Naela oblikovanja korisnikog suelja ............................................................................... 132
10.1.1 Raspored ...................................................................................................................... 132
10.1.2 Uvaavanje sadraja .................................................................................................... 132
10.1.3 Estetika ........................................................................................................................ 132
vi
10.1.4 Iskustvo korisnika ........................................................................................................ 133
10.1.5 Dosljednost .................................................................................................................. 133
10.1.6 Lakoa koritenja ......................................................................................................... 133
10.2 Vrste korisnikog suelja ..................................................................................................... 134
10.3 Izbornici i dijalozi ................................................................................................................. 134
10.4 Kriterij za odabir kontrola grafikog suelja ........................................................................ 134
10.5 Zadaci................................................................................................................................... 135
11 Dizajn sustava .......................................................................................................................... 136
11.1 Opi dizajn ........................................................................................................................... 136
11.2 Detaljni dizajn ...................................................................................................................... 136
11.3 Dizajn arhitekture sustava ................................................................................................... 136
11.4 Elementi arhitekture sustava .............................................................................................. 137
11.4.1 Centralizirana obrada .................................................................................................. 137
11.4.2 Dvoslojna arhitektura klijent-posluitelj (client-server) .............................................. 138
11.4.3 Primjer arhitekture klijent-posluitelj ......................................................................... 139
11.4.4 Troslojna ili vieslojna arhitektura klijent-posluitelj .................................................. 141
11.5 Vieslojna aplikacija ............................................................................................................. 142
11.5.1 Odnosi meu slojevima ............................................................................................... 143
11.5.2 Poslovni objekt ............................................................................................................ 144
11.5.3 Dohvat podataka kroz slojeve ..................................................................................... 145
11.5.4 Naini punjenja poslovnog objekta ............................................................................. 147
11.5.5 Izvedba podatkovnog sloja pomou ADO.NET-a ......................................................... 148
11.5.6 Izvedba podatkovnog sloja pomou Entity Frameworka ............................................ 149
11.5.7 Dodavanje, auriranje i brisanje artikla ....................................................................... 150
11.5.8 Izvedba ifrarnikih formi vieslojno. .......................................................................... 150
11.6 Zadaci................................................................................................................................... 151
12 Primjer vieslojne aplikacije aplikacija FirmaWin ................................................................. 152
12.1 Nedostaci postojeeg rjeenja ............................................................................................ 152
12.2 Struktura rjeenja ................................................................................................................ 152
12.3 Firma.Framework ................................................................................................................ 153
12.3.1 Poslovni objekt i suelje IBusinessObject .................................................................... 154
12.3.2 Bazni razred za poslovni objekt ................................................................................... 155
vii
12.3.3 Suelje liste poslovnih objekata .................................................................................. 155
12.3.4 Liste poslovnih objekata .............................................................................................. 155
12.4 Dohvat liste artikala ............................................................................................................. 156
12.5 Izvedba podatkovnog sloja .................................................................................................. 158
12.6 Poslovni objekt sa stavkama ............................................................................................... 159
12.6.1 Dohvat i spremanje sloenog objekta ......................................................................... 160
12.6.2 Spremanje sloenog objekta ....................................................................................... 163
12.7 Refleksija i korisniki atributi ............................................................................................... 164
12.7.1 Naknadno povezivanje ................................................................................................ 165
12.7.2 Atributi ......................................................................................................................... 166
12.7.3 Univerzalni i samoprilagodljivi programski moduli ..................................................... 167
12.8 Zadaci................................................................................................................................... 171
13 Web aplikacije - ASP.NET Web Forms ..................................................................................... 172
13.1 ASP.NET Web Forms ............................................................................................................ 172
13.1.1 Prevoenje i prikaz web stranica ................................................................................ 173
13.1.2 Web aplikacija i/ili web mjesto ................................................................................... 174
13.1.3 Objava aplikacije i web posluitelji .............................................................................. 175
13.2 Uobiajeni postupak izrade web stranica............................................................................ 176
13.3 Struktura Web Forms aplikacije .......................................................................................... 176
13.3.1 Osnovne Web kontrole................................................................................................ 177
13.3.2 Sintaksa kontrola ......................................................................................................... 177
13.3.3 Sintaksa aspx stranica .................................................................................................. 177
13.3.4 Odvajanje dizajna od koda .......................................................................................... 177
13.4 ivotni ciklus web stranice .................................................................................................. 178
13.5 Objekti ASP.NET aplikacije ................................................................................................... 179
13.6 Glavna stranica i izbornici .................................................................................................... 179
13.6.1 Glavna stranica ............................................................................................................ 179
13.6.2 Izbornici ....................................................................................................................... 180
13.6.3 Mapa web sjedita ....................................................................................................... 181
13.7 Sloene kontrole i povezivanje podataka ............................................................................ 182
13.7.1 Povezivanje podataka .................................................................................................. 182
13.7.2 Povezivanje jednostavnih lista .................................................................................... 182
viii
13.7.3 Kontrola ObjectDataSource ......................................................................................... 182
13.8 Kontrola GridView ............................................................................................................... 185
13.8.1 Svojstva i dogaaji unutar mree s podacima ............................................................. 186
13.8.2 Primjer dodavanja izvora podataka za GridView ......................................................... 187
13.8.3 Definiranje i povezivanje stupaca u mrei s podacima ............................................... 188
13.8.4 Auriranje redaka u mrei s podacima ........................................................................ 189
13.8.5 Posebno dizajnirani stupci ........................................................................................... 190
13.8.6 Prikaz slike iz baze podataka ....................................................................................... 190
13.8.7 Prijenos argumenata stranici ....................................................................................... 191
13.8.8 Povezivanje za posebno dizajnirane stupce ................................................................ 191
13.8.9 Dodavanje novih zapisa ............................................................................................... 192
13.8.10 Validacijske kontrole ............................................................................................... 192
13.9 Primjer Dokument-Stavka ................................................................................................... 193
13.9.1 Kontrola FormView ...................................................................................................... 194
13.9.2 Dohvat dokumenta ...................................................................................................... 194
13.9.3 Predloak za prikaz dokumenta ................................................................................... 195
13.9.4 Predloak za auriranje dokumenta ............................................................................ 196
13.9.5 Odabir vrijednosti stranog kljua padajuom listom ................................................... 196
13.9.6 Dodavanje novog dokumenta ..................................................................................... 197
13.9.7 Brisanje dokumenta .................................................................................................... 199
13.9.8 Prikaz stavki dokumenta .............................................................................................. 200
13.9.9 Oblikovanje pojedinog stupca u mrei sa stavkama i dodavanje nove stavke ............ 201
13.10 Zadaci ............................................................................................................................... 202
14 ASP.NET MVC ........................................................................................................................... 203
14.1 Usporedba ASP.NET web formi s MVC-om ......................................................................... 203
14.2 Struktura ASP.NET MVC aplikacije ...................................................................................... 204
14.3 Inicijalne postavke MVC aplikacije ...................................................................................... 205
14.3.1 Paketi datoteka ............................................................................................................ 206
14.4 Nain rada MVC aplikacije ................................................................................................... 206
14.4.1 Usmjeravanje zahtjeva ................................................................................................ 206
14.4.2 Uobiajeni rezultati akcije upravljai ........................................................................... 207
14.4.3 Glavna stranica ............................................................................................................ 208
ix
14.4.4 Sintaksa pogleda .......................................................................................................... 209
14.4.5 Parcijalni pogled .......................................................................................................... 210
14.5 Primjer prikaza mjesta ......................................................................................................... 210
14.5.1 Akcija dohvata i pregleda svih mjesta ......................................................................... 211
14.5.2 Auriranje podataka .................................................................................................... 212
14.5.3 Prijenos dodatnih vrijednosti pogledu ........................................................................ 213
14.5.4 Prihvat podataka ......................................................................................................... 214
14.5.5 Validacija ..................................................................................................................... 214
14.5.6 Proirenja za stranienje ............................................................................................. 215
14.5.7 Forma za brisanje mjesta............................................................................................. 215
14.6 Prikaz artikala ...................................................................................................................... 217
14.6.1 Prikaz i dodavanje slike ................................................................................................ 217
14.6.2 Auriranje unutar retka ............................................................................................... 218
14.7 Primjer Master-Detail .......................................................................................................... 222
14.7.1 Popis akcija i pogleda .................................................................................................. 223
14.7.2 Prikaz dokumenta ........................................................................................................ 224
14.7.3 Auriranje dokumanta i stavki ..................................................................................... 225
14.7.4 Validacija podataka ..................................................................................................... 226
14.8 Zadaci................................................................................................................................... 226
15 Web servisi .............................................................................................................................. 227
15.1 Osnovna pravila servisno orijentirane arhitekture ............................................................. 227
15.2 Standardi za web servisi ...................................................................................................... 228
15.3 Struktura primjera s web servisima ..................................................................................... 228
15.4 Primjer web servisa ............................................................................................................. 229
15.4.1 Generiranje proxy razreda za pozive web servisa ....................................................... 229
15.4.2 Poziv web servisa ......................................................................................................... 230
15.4.3 Nedostatci klasinih web servisa ................................................................................. 231
15.5 WCF servisi .......................................................................................................................... 232
15.5.1 Protokoli povezivanja .................................................................................................. 232
15.5.2 Primjer izrade WCF servisa .......................................................................................... 233
15.5.3 Program WCF Test Client ............................................................................................. 235
15.5.4 Koritenje WCF servisa dodavanjem reference........................................................... 235
x
15.5.5 Koritenje WCF servisa bez dodavanja reference ....................................................... 236
15.5.6 WCF i serijalizacija podataka ....................................................................................... 238
15.5.7 Iznimke (pogreke) u radu s WCF servisima ................................................................ 239
15.5.8 Postavke povezivanja .................................................................................................. 240
15.6 REST servisi .......................................................................................................................... 241
15.6.1 REST i vrste HTTP poziva .............................................................................................. 241
15.6.2 REST i WCF ................................................................................................................... 241
15.6.3 Primjer poziva REST servisa iz .NET klijenta ................................................................ 244
15.6.4 Alati za inspekciju prometa i stvaranje HTTP zahtjeva ................................................ 244
15.6.5 WebApi ........................................................................................................................ 245
15.7 Zadaci................................................................................................................................... 246
16 Reference ................................................................................................................................ 247
16.1 Literatura ............................................................................................................................. 247
16.2 Korisne poveznice ................................................................................................................ 247
1
Predgovor
Ova skripta namijenjena su polaznicima predmeta Razvoj primijenjene programske potpore (RPPP ili
R3P) na preddiplomskom studiju Fakulteta elektrotehnike i raunarstva, ali moe dobro doi i kao
nastavni materijal slinog predmeta na drugim visokim uilitima kao i tivo za sve one koji
namjeravaju savladati osnove razvoja aplikacija nad bazom podataka.
Uvodno su izloene osnove programskog inenjerstva i upravljanja projektima, nakon ega slijede
koncepti objektno orijentiranog programiranja i tehnika programiranja te primjeri arhitektura
dvoslojnih i vieslojnih aplikacija ukljuujui aplikacije nad web servisima.
Pretpostavlja se da je itatelj prethodno savladao osnove programiranja, algoritme i strukture
podataka i baze podataka. Budui da na FER-u postoji predmet Objektno orijentirano programiranje,
skripta ne ulaze u detalje objektno orijentiranog programiranja, ali su izloeni neki koncepti kljuni za
razumijevanje pojedinih segmenata aplikacija.
Kompletan izvorni kod programskih primjera priloen je kao dodatak predavanjima, a ovdje su
prikazani reprezentativni programski odsjeci koji objanjavaju pojedine koncepte na kojima se
zasniva programska potpora.
Osim toga, upute za rad u grupi i verzioniranje programskog koda, kao i upute za laboratorijske
vjebe odvojeni su i objavljuju se zasebno.
Svim itateljima elimo da nakon polaganja predmeta RPPP ili itanja ovih skripata postanu
programski inenjeri i o(p)stanu u struci te napreduju kao projektanti informacijskih sustava i
upravitelji projekata .
Autori
2
1 Osnove programskog inenjerstva
1.1 Programska potpora
Softver ili programska potpora (oprema, podrka) je dio raunalnog sustava koji nema fizikalnih
dimenzija te se koristi kao opi pojam za sve vrste programa, programskih jezika itd. Preciznije,
programska potpora je skup elemenata ili objekata u jedinstvenoj konfiguraciji koju ine raunalni
programi, podaci i dokumentacija. Izrada programske potpore je sloen postupak, podloan
pogrekama. Programska potpora se ne troi, teko je mjerljiva, dugo se koristi i lako kopira (zajedno
s pogrekama), ali zastarijeva iako nema fizikalnih dimenzija. Za namjenski program, tj. raunalom
podrano rjeenje jednog ili vie poslovnih problema ili potreba, upotrebljava se termin primijenjena
programska potpora ili raunalna aplikacija. Vie takvih aplikacija moe se udruiti u sustav aplikacija
za upravljanje ljudskih aktivnostima to je objedinjeno pojmom informacijski sustav.
Poetkom 90-tih razvijale su se jednokorisnike, samostalne aplikacije pisane u jezicima i alatima kao
to su dBase, Clipper, ZIM itd. nakon ega je slijedio razvoj posluiteljskih aplikacija nad bazom
podataka (Informix, Oracle). Krajem 90-tih dolazi do razvoja klijentskih aplikacija u obliku debelih
klijenata (Microsoft Access, Visual Basic, Java) s bazom podataka odvojenom na serveru. 2000-te
donose razvoj internetskih aplikacija u obliku tankih klijenata (aplikacija unutar Internet preglednika)
ili depnih aplikacija (mobilni ureaji Pocket PC). Slijedi razvoj mobilnih i distribuiranih aplikacija
baziranih na web servisima i novim mobilnim platformama (Android, iOS, ). U dananje vrijeme
naglasak je na vieslojnim aplikacijama, iako u pojedinim sluajevima i debeli klijenti mogu biti dobar
odabir. O arhitekturama vie u jednom od narednih poglavlja.
1.2 Osnove programskog inenjerstva
Naziv programsko inenjerstvo (eng. software engineering) predloen je na konferencijama koje je
NATO organizirao 1968. i 1969. godine prilikom diskusije o problemu razvoja velikih sloenih sustava.
Predloena je primjena inenjerskog pristupa na programsku opremu kako bi se smanjili trokovi
razvoja i poveala kvaliteta i pouzdanost programske potpore. Prema ISO/IEC/IEEE rjeniku
programsko inenjerstvo je sistematian, discipliniran i mjerljiv pristup razvoju, primjeni i odravanju
softvera, to jest primjena inenjerskog pristupa na programsku opremu. Programsko inenjerstvo je
inenjerska disciplina koja obuhvaa sve aspekte izrade programske opreme [Somerville]. Podruje
programskog inenjerstva obuhvaa sve poslove kojima se oblikuje i razvija programska oprema i
sustavnu primjenu prikladnih alata i tehnika na itav razvoj programske potpore.
1.3 Programsko inenjerstvo i srodna podruja
Fred Brooks: A scientist builds in order to learn; an engineer learns in order to build.1
Programsko inenjerstvo se razlikuje od raunarske znanosti u tome to se raunarska znanost
fokusira na teorijske osnove dok je programsko inenjerstvo orijentirano na praktinu primjernu u
razvoju i isporuci programske potpore. Za razliku od raunalnog inenjerstva programsko inenjerstvo
se bavi svim aspektima raunalnog razvoja koji ukljuuje i hardver i softver te inenjerstvo procesa.
1 Gibbs, N.E. and Fairley, R.E. (Eds.). Software Engineering Education: Thr Educational Needs of the Software Community. Springer-Verlag, New York, 1987.
3
1.4 Modeli razvojnog procesa
Model procesa je plan razvoja koji navodi ope postupke razvoja programskog proizvoda. Preciznije,
modelom procesa definira se koje aktivnosti (potprocesi) se trebaju obaviti, tko ih treba obaviti i u
kojoj ulozi kojim redoslijedom, koji e proizvodi biti razvijeni te kako ih vrednovati. Pri tome suradnik
koji obavlja posao u nekoj ulozi (voditelj projekta, arhitekt, programer) koristi postojee
programske uratke (dokumenti, modeli, programi) te primjenom metoda, preporuke, obiaja, popisa
provjera, uzoraka te dostupne alati kreira novi ili izmijenjeni uradak (Slika 1). Programski proizvod je
tada skup programskih uradaka.
Slika 1. Aktivnosti razvojnog procesa
1.5 ivotni ciklus programske potpore
Software/Systems development life-cycle (SDLC) je model razvojnog procesa i predstavlja unaprijed
propisan proces razvoja. SDLC definira faze i zadatke (aktivnosti) koje treba obaviti tijekom razvoja.
Postojanje ivotnog ciklusa osigurava kontrolne toke za praenje napretka, procjenu postignutih
rezultata i donoenje odluka o daljnjim koracima.
Slika 2 prikazuje tipine faze ivotnog ciklusa bez implikacije da se nuno radi o diskretnim i/ili
slijednim aktivnostima.
4
Slika 2. Tipine faze ivotnog ciklusa
Planiranje
Planiranje treba dati odgovor na pitanje zato graditi sustav te odrediti poslovne ciljeve (koristi). U
studiji izvedivosti analizira se problemsko podruja, utvruju problemi, odreuju granice projekata o
procjenjuju kljuni aspekti predloenog projekta tehnika/ekonomska/organizacijska izvedivost.
Dolazi do ekipiranja projekta, odreuje se nain upravljanja i nadzora projekta te se izrauje plan
rada (plan sustava, plan informatizacije).
Analiza
Analiza je traenje odgovora na pitanje tko e koristiti sustav, to e sustav raditi te gdje i kada e biti
koriten. Prouavaju se postojei sustavi, ustanovljavaju mogua poboljanja i razvija koncept novog
sustava. Rezultat je poslovni model sustava, tj. prijedlog sustava, odnosno specifikacija zahtjeva.
Oblikovanje (projektiranje)
Oblikovanje odgovara na pitanje kako napraviti sustav za odreenu specifikaciju zahtjeva. Odreuje
se kako e sustav funkcionirati sa stanovita hardvera, softvera i mrene infrastrukture, korisnikog
suelja, programa te spremita podataka. Specifikaciju sustava je tehnika specifikaciju koja se sastoji
od dizajna arhitekture, dizajna baze podataka i datoteka, dizajna suelja i dizajna programa.
Specifikacija sustava predstavlja pogled projektanta (izvoaa).
Izrada
Izrada predstavlja ugradnju (implementaciju) i provjeru rjeenja. Na osnovu zadane specifikacije
konstrukcijom, testiranjem i instalacijom se isporuuje funkcionalni sustav.
Primjena i odravanje
5
Funkcionalni sustav se isporuuje korisniku ime postaje operabilni sustav koji se odrava i
poboljava.
Pregled
U ovoj fazi se utvruju popravci, dorade, prerade i nadogradnje koje treba izvriti na sustavu. Time
se vri revizija sustava, odnosno preispitivanje itavog sustava kada su potrebne vee izmjene uslijed
promjena u poslovanju ili promjena poslovnih ciljeva nakon ega se ide u novi projekt i novi razvojni
ciklus.
1.6 Vodopadni model
Vodopadni model naziv je dobio zbog svog vizualnog prikaza (Slika 3) i najstariji je model razvoja
nastao po uzoru na ostale inenjerske discipline. U klasinom vodopadnom modelu povratne veze
prema gore nisu doputene. Budui da je u takvom modelu potrebno planirati cijeli proces i sve
aktivnosti prije nego to posao zapone, postoje i varijante vodopadnog modela: pseudostrukturni u
kojem je dozvoljena povratna veza na aktivnosti koja je bila neposredno prije i radikalni koji
dozvoljava povratak na bilo koju prethodnu aktivnost.
Slika 3. Vodopadni model (klasini, pseudostrukturni, radikalni)
6
Faze vodopadnog modela su:
Definiranje zahtjeva (requirements analysis and definition) predstavlja fazu u kojoj se
definira funkcionalnost programske potpore prema zahtjevima korisnika.
Dizajn, projektiranje sustava (system and software design) predstavlja fazu u kojoj se
definira cjelokupna arhitektura programske podrke, a grubi model sustava razrauje se u
detaljni opis izvedbe.
Ugradnja i testiranje jedinica (implementation and unit testing) predstavlja fazu kodiranja
tijekom koje se zahtjevi prevode u programski kod nakon ega se programske jedinice
zasebno testiraju provjerom naspram specifikacije.
Integracija i testiranje sustava (integration and system testing) predstavlja fazu u kojoj se
programske jedinice povezuju se u cjelinu te se provjerava odgovara li programska potpora
zahtjevima korisnika
Primjena i odravanje (deployment/operation and maintenance) zapoinje predajom sustava
korisnicima na uporabu te se tijekom odravanja uklanjaju naknadno uoene neispravnosti
nakon ega se sustav proiruje i poboljava prema potrebama
1.7 Iterativni postupak razvoja
Izvorno razvijen pod nazivom Objectory, a danas pod nazivom IBM Rational Unified Process (RUP)
predstavlja ujedinjeni razvojni proces. RUP je primjer iterativnog i inkrementalnog razvoja u kojem se
softver razvija i objavljuje po dijelovima. Glavne faze obavljaju se kroz niz iteracija pri emu se svaka
iteracija obavlja standardnim ivotnim ciklusom koji ukljuuje analizu, oblikovanje, ugradnju i
provjeru to se grafiki moe prikazati kao na narednoj slici
(
Slika 4).
7
Rezultat iteracije je proizvod zavrne kakvoe (eng. production-quality), provjeren i integriran, koji
zadovoljava podskup ukupnih zahtjeva. Isporuke mogu biti interne ili prema korisnicima. Za razliite
modele razvoja i tipove projekata RUP sadri niz "predloaka" razvojnih procesa (eng. roadmaps).
Slika 4. Veze izmeu glavnih faza RUP procesa i faza standardnog ivotnog ciklusa
Faze su sljedee:
Faza poinjanja (eng. inception) ima svrhu opravdati razloge za pokretanje projekta. U ovoj
fazi prikupljaju se najvaniji zahtjevi (10% detaljno) te se odreuje doseg projekta.
U fazi elaboracije (eng. elaboration) detaljno se prikupljaju zahtjevi (80%) i vri se globalna
(eng. high-level) analiza i dizajn, ustanovljavanja se osnovne arhitekture i planira
konstrukcija.
U fazi konstrukcije (gradnje, eng. Construction) prikupljaju se ostali zahtjevi i evidentiraju
promjene zahtjeva. Razrauje se arhitektura te se izrauje sustav uz kontinuiranu integraciju.
U fazi prijelaza (eng. transition) obavlja se beta testiranje, podeavaju se performanse, vri se
poduka korisnika te se obavlja provjera prihvatljivosti i zadovoljstva korisnika.
Nakon isporuke zapoinje post implementacija (eng. post-deployment) a po potrebi dolazi do
nastavka evolucijskog razvoja uz ouvanje integriteta aplikacije.
1.8 Ekstremno programiranje
Ekstremno programiranje je agilni razvojni proces koji se temelji na 5 vrijednosti: komunikacija,
jednostavnost, povratne informacije, hrabrost, uvaavanje (eng. respect).
8
Slika 5. Faze ekstremnog programiranja
Slika 5 prikazuje faze u postupku ekstremnog programiranja.
U fazi istraivanja korisnici biljee svoje prie na kartice pri emu svaka kartica sadri jednu
mogunost programa. Faza istraivanja traje nekoliko tjedana do nekoliko mjeseci pri emu
se skup pria redovno nadopunjuje. U ovoj fazi projektni tim se poblie upoznaje s alatima,
tehnologijom i postupcima projekta te se radi prototip sustava za testiranje tehnologije i
varijanti arhitekture sustava.
Planiranje postavlja prioritete na korisnike prie, tj. svojstva programskog rjeenja.
Odreuje se prioriteti pria, odreuje se vrijeme potrebno za implementaciju pojedine prie
(kartice) te se planira doseg prvog malog izdanja, nakon ega se odreuje cjelokupni
vremenski raspored. Faza planiranja traje nekoliko dana, a rok za izdavanje prvog malog
izdanja obino je unutar dva mjeseca.
Vremenski raspored iz faze planiranja se razlae u vie iteracija do izdanja pri emu prije
prvog izdanja obino slijedi nekoliko iteracija sustava. Klijent odreuje kartice koje e se
koristiti pri svakoj narednoj iteraciji. Pojedina iteracija traje jedan do etiri tjedna, a testovi
prihvatljivosti izvode se na kraju svake iteracije. Prva iteracija stvara takav sustav koji
obuhvaa cijelu arhitekturu ciljanog sustava, a na kraju posljednje iteracije sustav je spreman
za produkciju.
U fazi produkcije vri se dodatno testiranje i provjera performansi sustava prije isporuke
klijentu. Razrjeavaju se primjedbe na sustav te se odluuje da li e se primjedbe rijeiti u
tekuem izdanju. Iteracije trajanja tri do najvie tjedan dana, a zakanjele nove ideje i
prijedlozi se dokumentiraju i njihova implementacija odgaa.
Odobrenje korisnika
Istraivanje Produkcija
Stalna integracija Prioriteti
Procjena napora
Redovne nadopune
Odravanje Planiranje Iteracije do izdanja Smrt
Prie
Prie za iduu iteraciju
Programiranje u paru
Analiza Dizajn Plan testa Test
Stalni pregled
Test Skupna baza
Povratne informacije
Malo izdanje
Nadopunjeno izdanje
Finalno izdanje
9
Nakon to je prvo izdanje puteno u produkciju, XP projekt mora istovremeno odravati
softver u primjeni i proizvoditi nove iteracije te se zbog toga brzina implementacije smanjuje.
Odravanje moe zahtijevati nove lanove projektnog tima i promjenu strukture tima.
Faza smrti je blizu kada klijent nema vie novih kartica s priama pri emu se podrazumijeva
da sustav zadovoljava sve zahtjeve (npr. pouzdanost i stabilnost). Faza smrti je prikladno
vrijeme u XP projektu da se konano napie sva korisnika dokumentacija budui da vie
nema promjena na arhitekturi, dizajnu i kodu sustava. Smrt moe nastupiti i kada sustav ne
ispunjava sva korisnika oekivanja, ili ako postane preskup za daljnji razvoj.
1.9 Zadaci
Zadatak 1. Koja je razlika izmeu raunarske znanosti i programskog inenjerstva?
Zadatak 2. to su izlazi pojednih faza ivotnog ciklusa?
Zadatak 3. U kojoj fazi ivotnog ciklusa programske potpore se
a) razvija specifikacija zahtjeva, b) odluuje o dizajnu arhitekture, suelja i baze podataka?
Zadatak 4. Koje su varijante vodopadnog modela razvoja?
10
2 Specifikacija zahtjeva
ISO/IEC/IEEE rjenik programskog inenjerstva definira zahtjev kao
1. uvjet ili sposobnost koje korisnik treba da bi rijeio neki problem ili ostvario neki cilj
2. uvjet ili sposobnost koju mora posjedovati ili zadovoljiti sustav, komponenta sustava,
proizvod ili usluga da bi zadovoljila ugovor, standard, specifikaciju ili neki drugi formalni
dokument.
Norma koja se odnosi na inenjerstvo zahtjeva tomu dodaje
3. izjavu kojom se prevodi ili izraava potreba i njoj pridruena ogranienja i uvjeti
Udruga Project Management Institute definiciju proiruje izjavom da zahtjevi ukljuuju nabrojane i
dokumentirane potrebe, elje i oekivanja sponzora, korisnika i ostalih dionika u projektu.
2.1 Vrste zahtjeva
Prema vrsti zahtjevi se dijele na poslovne, korisnike, funkcionalne i nefunkcionalne zahtjeve.
Poslovni zahtjevi
Poslovni zahtjevi odgovaraju na pitanje zato (se radi neki sustav) te su sadrani u dokumentima u
kojima se opisuje vizija i opseg projekta. Predstavljaju ciljeve organizacije ili korisnike zahtjeve na
vioj razini i ukratko opisuju problem koji treba rijeiti. Neki primjeri poslovnih zahtjeva su:
poboljanje usluge postojeim klijentima tvrtke i pridobivanje novih
evidencija lanstva i automatizacija postupka primanja novih lanova neke udruge
praenje financijskih podataka udruge i njenih lanova
poboljanje procesa prodaje
omoguavanje internetske prodaje
podrka organiziranju natjecanja i okupljanja
U idealnom sluaju zahtjevi vlasnika podudaraju se s poslovnim ciljevima. Npr. za sustav subvencionirane studetntske prehrane to moe biti oekivana novana uteda koja bi se ostvarila ako sustav bude tako koncipiran da prava na subvencioniranu prehranu moe koristiti samo student koji ih je stekao i da ih moe koristiti samo u svrhu prehrane. Da bi se to ostvarilo poslovni zahtjev je da sustav mora onemoguiti:
koritenje subvencije od strane osoba koje nemaju na to pravo
zaradu ilegalnih posrednika
koritenje subvencije za druge svrhe osim prehrane
naplatu usluga koje nisu pruene
Korisniki zahtjevi
Korisniki zahtjevi su zahtjevi krajnjih korisnika te opisuju zadatke koje korisnik mora moi obaviti.
Sadrani su u opisima sluajeva koritenja tj. opisima scenarija rada i obino se izraavaju u izjavama
oblika Korisnik eli/treba/mora moi obaviti.
Neki primjeri korisnikih zahtjeva u sustavu subvencionirane prehrane studenata (X-ice):
11
Korisnik mora moi ostvariti pravo na prehranu kod bilo kojeg pruatelja usluge - Novi sustav
mora omoguiti da student ostvaruje svoje pravo kod bilo kojeg pruatelja usluge
subvencionirane prehrane. Dosadanja praksa je bila da svaki pruatelj usluga izdaje svoje
bonove koji se mogu koristiti samo u odreenim restoranima
Korisnik treba plaati obroke nakon koritenja pojedinog obroka. - Treba izbjei bilo kakvo
plaanje od strane studenata za potrebe ostvarivanja prava, a posebice unaprijed.
Korisnik mora moi prijaviti gubitak kartice Potrebno je smanjiti rizik gubitka ostvarenih
prava te sustav mora onemoguiti zloporabu steenih prava.
Korisnik eli ostvariti i ostala prava iz studentskog standarda, npr. javni prijevoz po
povlatenoj cijeni, kazalita, kina, smjetaj u studentskim domovima, student-servis, itd.
Funkcionalni zahtjevi
Funkcionalni zahtjevi odgovaraju na pitanje to (se moe/mora napraviti koristei sustav).
Funkcionalni zahtjevi definiraju softversku funkcionalnost (oekivano ponaanje i operacije koje
sustav moe izvoditi) koju treba ugraditi u proizvod da bi omoguio korisnicima obavljanje njihovih
zadataka ili posebno zanimljivu mogunost programa (eng. feature) kao skup logiki povezanih
funkcionalnih zahtjeva koje korisniku omoguuju ispunjavanje poslovnih zahtjeva.
Primjer funkcionalnih zahtjeva za sustav subvencionirane prehrane:
Nakon to se studentu jednom zavedu prava na matinoj ustanovi, sustav mora proslijediti
informaciju svim pruateljima usluga, odnosno omoguiti distribuirane upite
Sustav treba dnevno kreirati izvjetaje sa statistikom prehrane po pruateljima usluge i vrsti
obroka.
Nefunkcionalni zahtjevi
Za razliku od funkcionalnih zahtjevi koji opisuju to sustav radi, nefunkcionalni zahtjevi odgovaraju na
pitanje kako (sustav mora raditi). Nefunkcionalni zahtjevi su posljedica standarda, pravila i ugovora
kojih se proizvod mora pridravati, opisi vanjskih suelja, zahtjevi na performanse, ogranienja na
dizajn i implementaciju te svojstva kvalitete (preciziraju opis proizvoda navodei karakteristike
proizvoda u razliitim dimenzija koja su vane ili korisniku, ili graditelju).
U sustavu prehrane nefunkcionalni zahtjevi primjerice mogu biti vezani za oblik korisnike kartice,
protokol povezivanja,obvezu fiskalizacije itd.
2.2 Primjeri loe definiranih zahtjeva
Zahtjevi ne smiju sadravati detalje dizajna ili implementacije, ali moraju biti dobro definirani kako bi
se izbjegli nepotpuni, neostvarivi ili neodreeni zahtjevi za koje nije mogue utvrditi da li je ugraen
ispravno u sustav ili ne. U nastavku je izloeno nekoliko primjera loe definiranih zahtjeva.
Nepotpuni zahtjev
Proizvod e dostaviti statusnu poruku u redovitim statusnim intervalima ne manjim od 60 sekundi.
Ovo je primjer nepotpunog zahtjeva, jer nije jasno to je statusna poruka i pod kojim uvjetima e biti
dostavljena, koliko dugo ostaje vidljiva, koliko dosljedni intervali moraju biti te koji dio proizvoda e
dostaviti poruku te nije mogue odrediti.
12
Ovaj zahtjev treba preciznije i detaljnije definirati, primjerice sljedeim reenicama:
Modul za nadzor e ispisivati statusnu poruku u za to odreeni dio suelja.
Poruka e se aurirati svakih 60 sekundi (plus minus 10 sekundi) nakon to zapone izvoenje
pozadinskog zadatka i bit e vidljiva cijelo vrijeme.
Ukoliko se pozadinski zadatak izvodi normalno, modul za nadzor e ispisivati postotak
obavljenog posla.
Modul za nadzor e ispisati "Zadatak obavljen." nakon to se zadatak obavi.
Modul e ispisati poruku o pogreci ukoliko doe do zastoja u izvoenju.
Problem je rastavljen u vie zahtjeva jer e svaki zahtijevati posebno testiranje.
Ukoliko je vie zahtjeva grupirano u jedan lake je previdjeti neki od njih tijekom izrade ili
testiranja.
Potrebno je naglasiti da u zahtjevu nije detaljno opisano kako e se poruka i gdje ispisivati. To e biti
odlueno tijekom dizajna.
Neostvarivi zahtjev
Proizvod e se trenutno prebaciti izmeu ispisivanja i skrivanja znakova koji se ne mogu tiskati. Ovo
je primjer neostvarivog zahtjeva jer raunala ne mogu nita napraviti trenutno i nije jasno da li
programska podrka sama odluuje kad e se prebaciti iz jednog stanja u drugo ili je to inicirano
akcijom korisnika. Takoer, nije jasno odreeno na koji dio teksta e se primijeniti promjena prikaza
(da li samo oznaeni tekst, cijeli dokument ili neto tree) te to su znakovi koji se ne mogu tiskati
(skriveni znakovi, posebne oznake, kontrolni znakovi, ).
Bolji zahtjev, kojim se moe ostvariti bi bio npr. Korisnik e posebno dogovorenom akcijom, odabrati
da li e se HTML oznake u trenutno otvorenom dokumentu prikazivati ili nee." Na ovaj nain bi bilo
jasno da je rije o HTML oznakama te da korisnik mora obaviti nekakvu akciju, ali nije tono
navedeno kakvu (npr. kombinacija tipki), to se preputa dizajnerima programa.
Neodreen i zahtjev
Parser e brzo generirati izvjee o pogrekama HTML oznaka, koje omoguava brzi ispravak
pogreaka kada program koriste poetnici u HTML-u.. Ovo je primjer neodreenog zahtjeva, jer se
koriste pojmovi koji nisu egzaktno mjerljivi ili se mogu razliito tumaiti od osobe do osobe. Primjeri
takvih pojmova su rije "brzo" koja nije odreena nekom mjernom jedinicom, generirati izvjee za
koje nije definirano kada se generira i to tvori izvjee i to ini zahtjev nekompletnim. Takoer
postavlja se pitanje kako bi se za ovaj zahtjev ovjerilo da li je zahtjev ispravno ugraen u sustav -
pronalo nekoga tko se smatra poetnikom u HTML-u i zatim vidjeti kako brzo e, uz pomo izvjea,
ispraviti pogreke?!
Bolja verzija zahtjeva bi bila: Nakon to je HTML analizator obradio datoteku generirat e izvjee
koje sadri broj linije i tekst pronaenih HTML pogreaka, te opis svake pogreke. Ukoliko nema
pogreaka prilikom analize, nee se generirati izvjee.
2.3 Prioriteti zahtjeva
Za sve vrste zahtjeva potrebno je postaviti prioritete pojedinih zahtjeva. Neovisno o ljestvici koja e
se koristiti (npr. 1-5, 1-10, ) prioriteti zahtjeva mogu se podijeliti u tri vrste: nuno, poeljno i
13
neobvezno svojstvo odgovarajui na pitanje koliko neko svojstvo (proizalo iz zahtjeva) treba
korisniku.
Nuno svojstvo (eng. must have) predstavlja ono to korisnik stvarno mora imati da bi mogao poeti
koristiti neki sustav. Po definiciji, ako sustav ne ukljuuje nune zahtjeve, taj sustav ne moe ispuniti
svoju svrhu. Postoji tendencija da se previe zahtjeva proglasi nunim! Stoga treba testirati svaki
zahtjev koji se smatra nunim i probati ga rangirati. Ako se zahtjev moe rangirati onda nije obvezan.
Potpuno obvezni zahtjevi se ne mogu rangirati jer su nuni za prvu verziju sustava.
Poeljno svojstvo (eng. should have) je funkcija sustava koju korisnik eli imati na kraju. Ranije verzije
sustava mogu pruiti (ne potpunu) funkcionalnost bez tih zahtjeva. Poeljni zahtjevi mogu i trebaju
biti rangirani.
Neobvezna svojstva (eng. could have) su mogunosti sustava nastale iz proizvoljnih zahtjeva
pojedinih korisnika bez kojih sustav moe raditi. Primjer neobveznog svojstva bi npr. bilo ostvarivanje
ostalih prava iz studentskog standarda iz primjera zahtjeva krajnjih korisnika. Iako bi ih lijepo bilo
imati, to nisu pravi zahtjevi. Ovi zahtjevi takoer mogu biti rangirani.
Po potrebi moe se navesti i nepotrebna svojstva (eng. wont have this time but potentially later), jer
se time dodatno precizira opseg projekta.
2.4 Dokumentiranje analize (zahtjeva)
Dokumentiranje analize vri se kroz definiciju zahtjeva (eng. requirements definition) i specifikaciju
zahtjeva (eng. requirements specification).
Definicija zahtjeva je izjava o stanju i ogranienjima sustava te potrebama unutar narativnog
dokumenta namijenjenog korisniku ili pisana od strane korisnika. U definiciji zahtjeva navedeni su
poslovni i korisniki zahtjevi te njihovi prioriteti, uoeni problemi, kljune pretpostavke i preporuke
rjeenja.
Specifikacija zahtjeva je strukturirani dokument s detaljnim opisom oekivanog ponaanja sustava.
esto se jo naziva i funkcionalnom specifikacijom te je namijenjena ugovarateljima i izvoditeljima
razvoja. Specifikacija zahtjeva predstavlja ugradbeno nezavisan pogled na sustav i sadri funkcionalne
i nefunkcionalne zahtjevi te njihovi prioritete, model organizacijske strukture (npr. strukturni
dijagrami), opis protoka dokumenata (npr. dijagrami toka), model procesa (npr. dijagram toka
podataka) i konceptualni model podataka (npr. dijagram entiteti-veze).
Primjer sadraja dokumenta specifikacije zahtjeva izvedenog iz IEEE predloka prikazan je na sljedeoj
slici.
14
Slika 6. Sadraj dokumenta specifikacije zahtjeva
2.5 Zadaci
Zadatak 1. to je specifikacija zahtjeva?
Zadatak 2. Na koje pitanje odgovaraju poslovni, na koje funkcionalni, a na koje nefunkcionalni
zahtjevi?
Zadatak 3. Preoblikujte loe definirane u dobro definirane korisnike zahtjeve:
a) "Sustav treba javiti svim korisnicima ako doe do pogreke."
b) "Sustav treba odmah prekinuti s radom ako doe do sumnjive situacije koritenja."
c) "Sustav se treba prilagoditi hendikepiranim korisnicima."
1. Uvod
1.1 Namjena
1.2 Konvencije dokumenta
1.3 Upute za itanje dokumenta
1.4 Opseg proizvoda
1.5 Reference
2. Sveobuhvatni pregled
2.1 Kontekst proizvoda
2.2 Funkcije proizvoda
2.3 Kategorije korisnika i svojstva
2.4 Okruje u kojem se izvodi proizvod
2.5 Ogranienja dizajna i ugradnje
2.6 Pretpostavke i ovisnosti
3. Zahtjevi za sueljem
3.1 Korisniko suelje
3.2 Hardversko suelje
3.3 Softversko suelje
3.4 Komunikacijsko suelje
4. Mogunosti proizvoda
4.x Svojstvo X
4.x.1 Opis i prioriteti
4.x.2 Slijed pobuda/odziv
4.x.3 Funkcijski zahtjevi
5. Ostali nefunkcionalni zahtjevi
5.1 Zahtjevi za performansama sustava
5.2 Zahtjevi za sigurnou korisnika
5.3 Zahtjevi za sigurnou podataka
5.4 Kvaliteta programske podrke
5.5 Poslovna pravila
5.6 Korisnika dokumentacija
6. Ostali zahtjevi
Dodatak A: Rjenik
Dodatak B: Modeli i dijagrami
Dodatak C: Lista nedovrenih/neodreenih zahtjeva
15
3 Projekt izrade aplikacije
Izrada aplikacije nije samo kodiranje. Prije nego projektni tim zapone pisanje programskog koda
aplikacije potrebno je izvriti niz radnji, kao na primjer prikupiti korisnike zahtjeve, pobrojati
projektne zadatke, procijeniti trajanje projekta i tako dalje. Tijekom implementacije potrebno je
voditi rauna o odstupanju od plana projekta, promjenama zahtjeva i slino, a poslije napisati
korisniku i tekniku dokumentaciju, organiziriati isporuku, plan odravanja te zatvoriti projekt.
3.1 Osnove upravljanja projektom
Neke od definicija projekta su:
Projekt je vremenski odreeno nastojanje da se proizvede jedinstven proizvod, usluga ili
rezultat.
Projekt je niz jedinstvenih, sloenih i povezanih aktivnosti koje imaju odreeni cilj i koji se
mora postii u zadanom vremenskom roku, u okviru zadanog prorauna i u skladu sa
specifikacijama.
Osnovna svojstva projekta su vremenska odreenost i jedinstvenost. Vremenska odreenost
podrazumijeva da projekt mora imati jasno odreen poetak i kraj. Projekti mogu biti kratki ili trajati
godinama, ali e svakako zavriti. Projekt zavrava u trenutku kada postane jasno da su ciljevi
projekta dostignuti ili kada se zakljui da ciljevi projekta ne mogu ili nee biti dostignuti.
Jedinstvenost znai da se projekt odnosi na rad na neemu to prije nije postojalo i to se razlikuje od
rezultata nastalih slinim projektima. Ipak, prisustvo odreenih ponavljajuih elementa unutar
razliitih projekata ne znai da projekt nije jedinstven.
Upravljanje ili rukovoenje projektom (eng. project management) je primjena znanja, vjetina, alata
i tehnika u projektnim aktivnostima da bi se ispunili projektni zahtjevi.
Osoba koja upravlja projektom i odgovorna je za postizanje ciljeva projekta je voditelj projekta (eng.
project manager). Upravljanje projektom obuhvaa:
Planiranje
o Utvrivanje zahtjeva
o Postavljanje jasnih i ostvarivih ciljeva
o Uravnoteenje zahtjeva na kvalitetu, doseg, vrijeme i troak
o Prilagodbu interesima i oekivanjima zainteresiranih strana dionika (eng.
stakeholders)
Organiziranje
o Formiranje projektnog tima
o Koordiniranje sudionika na projektu
o Rasporeivanje obaveza
o Tko, to i kada treba napraviti
Usmjeravanje
o Nadgledanje, omoguavanje izvrenja
Kontroliranje
o Provjera uinka i rezultata
16
Voditelj projekta odgovoran je i za identificiranje i upravljanje interesnim sudionicima projekta -
dionicima projekta (eng. stakeholders). Dionici projekta (uloge) su pojedinci ili organizacije koje su
aktivno ukljuene u projekt ili rezultati projekta imaju utjecaj na njih.
Korisnik, Korisnik usluga, Klijent (eng. User, Customer, Client) - osoba ili grupa, naruitelj ili
krajnji korisnik
Sponzor projekta (eng. project sponsor) - osoba ili grupa koja osigurava resurse za projekt
Voditelj projekta (eng. project manager) - osoba imenovana kako bi ostvarila ciljeve projekta
Projektna ekipa - Svi lanovi ekipe, ukljuujui voditelja, a u nekim sluajevima i sponzora
o sistem analitiar odreivanje potreba, specifikacija zahtjeva i dizajna
o projektant / arhitekt uspostava osnovne arhitekture
o razvojnik (developer, builder) kodiranje, testiranje
o administrator baze podataka administriranje sustava za upravljanje bazama
podataka
o sistem inenjer / sistem administrator administriranje OS i mree
Osim ljudskih resursa (osoba), ostali su resursi projekta su oprema, usluge, materijal, budet ili druga
sredstva, koje je takoer potrebno identificirati i njima tijekom projekta upravljati.
3.2 Integrirana razvojna okruenja i kontrola programskog koda
Integrirano razvojno okruenje (eng. Integrated Development Environment - IDE) je okruenje tj.
okolina za programiranje koje integrira:
ureiva izvornog koda (source code editor)
kompilator (compiler) i/ili interpreter (interpreter)
alat za izradu grafikog korisnikog suelja (GUI)
sustav za ispravljanje pogreaka (debugger)
pomagalo za kontrolu verzija (version control system)
alate za automatsku izgradnju (build-automation tools)
alate za objektno orijentirano programiranje (npr. Class Browser)
alate za testiranje
itd.
Prva razvojna okruenja bila su namijenjena jednom programskom jeziku npr. Visual Basic, Delphi,
Jbuilder itd. Moderna okruenja podravaju vie jezika, na primjer:
Visual Studio : C++, C#, Visual Basic.NET, ASP.NET
Eclipse - Eclipse (na slici) je primarno okruenje za Javu, ali sadri umetke (plugins) za C/C++,
Python, Perl, Ruby, Fortran, Cobol i dr.
Integriranja razvojna okruenja olakavaju pisanje koda i njegovo prevoenje (kompiliranje) i
povavaju uinkovitost u programiranju u odnosu na parcijalne alate. Osnovne funkcionalnosti i
namjene su:
Oznaavanje sintakse (eng. syntax highlighting)
Oznaavanje pogreaka (eng. error highlighting)
Pristup dokumentaciji (eng. documentation access)
17
Kretanje kodom (eng. code navigation)
Generiranje koda pomou predloaka koda (eng. code generation through code
templates)
Podrka za preradu, refaktoriranje (eng. refactoring)
Analiza programskog koda na razliitim razinama
Funkionalnosti razvojnog okruenja koritenog u okviru predmeta RPPP opisano je u uputama za
laboratorijske vjebe.
3.3 Plan projekta
Projekt se dokumentira tijekom razliitih projektih faza. U poetnoj fazi, vani dokumenti su povelja
projekta (eng. Project Charter) i plan projekta (eng. Project plan). Povelja projekta je dokument kojim
pokreta projekta ili sponzor odobrava projekt i ovlauje voditelja za primjenu organizacijskih
resursa u provedbi projekta.
Plan projekta (Plan upravljanja softverskim projektom) je dokument koji opisuje sveukupnu
organizaciju projekta. Format i sadraj plana projekta specificiran je u normi IEEE Standard for
Software Project Management Plans 1058-1998.
Plan projekta uobiajeno sadri sljedee elemente:
Svrha, cilj i doseg projekta
o Opis proizvoda bez ulaenja u detalje ugradnje
o Definiciju zahtjeva i ogranienja
Procjena projekta
o Procjena cijene, napora i vremena potrebnog za provedbu projekta.
o Procjena tehnika realizacije i njihovih rezultata
o Procjena resursa projekta
Raspored projekta
o Popis projektnih aktivnosti i zadataka
o Mreni plan meuzavisnot aktivnosti i zadataka
o Kontrolne toke (eng. milestones)
o Vremenski raspored (eng. schedule) dijelova plana
Organizacija projekta
o Dionici
o Struktura tima (uloge i odgovornosti lanova)
o Matrica odgovornosti i plan komunikacije
Mehanizmi praenja i kontrole
o Upravljanje promjenama
o Upravljanje kvalitetom
o
U praksi plan projekta moe naravno imati i dodatne dijelove ili dodatke kao to su plan upravljanja
nabavom, plan osiguranja kvalitete, plan upravljanja komunikacijom i drugi, a to nadilazi potrebe i
doseg ovog teksta.
18
3.3.1 Zadaci projekta
Osnovni gradbeni elementi svakog projekta su zadaci. Zadaci predstavljaju posao koji se mora obaviti
da bi se postigao cilj projekta te opisuju tijek dogaaja, trajanja i zahtjeva za resursima na projektu.
Razlikujemo tipove zadataka:
Primitivni zadaci - zadaci koji se dekompozicijom ne mogu podijeliti na jednostavnije zadatke
Skupni zadaci (eng. summary tasks) - zbrajaju trajanje i trokove primitivnih zadataka.
Trajanje, datum te izraunate vrijednosti se automatski izvode iz skupa primitivnih zadataka.
Prekretnice ili miljokazi (eng. milestones) - kljuni dogaaj ili krajnji rok odnosno cilj koji
treba postii. Miljokazi slue za provjeru stupnja dovrenosti drugih zadataka. Trajanje im je 0
(sati, dana). Pomak kljunog dogaaja ima za posljedicu vremenski preraspored.
Zadaci projekta mogu se organizirati hijerarhijski, grupiranjem u radne pakete, aktivnosti i faze.
Gledano s vrha prema dolje, struktura zadataka naziva se se hijerarhijskom ralambom posla (eng.
work breakdown structure, skraeno WBS), koja se moe se prikazati tablino ili grafiki.
Dva su pristupa razvoju hijerarhije posla:
Planiranje s vrha prema dolje (eng. top-down) - pristup od opeg prema specifinom.
Identificira glavne faze i rezultate projekta prije dodavanja zadataka potrebnih za zavretak
tih faza. Sloeni projekti mogu imati nekoliko slojeva razrade do zadataka na dnu hijerarhije.
Planiranje s dna prema dolje (eng. bottom-up) - pristup od specifinog prema opem.
Identificira to vie zadataka najnieg sloja prije grupiranja u vie razine, to se ponavlja do
vrha hijerarhije.
Za procijeniti trajanje cijelog projekta, potrebno je procijeniti trajanje pojednih zadatka projekta, tj.
odrediti oekivanu koliina vremena za zavretak zadataka. Trajanje se moe defiirati u minutama
(m), satima (h), danima (d), tjednima (w) ili mjesecima (mo).
Slika 7. Primjer hijerarhije zadataka projekta
Projekt moe zahtijevati da zadaci budu napravljeni u odreenom redoslijedu (iza jednog slijedi drugi
zadatak). Zadatak sljedbenik (eng. successor) moe biti izvren ako je dovren prethodnik (eng.
predecessor). Bilo koji zadatak moe biti prethodnik jednom ili vie sljedbenika.
Odnosi, to jest zavisnosti izmeu zadataka mogu biti:
19
Finish-to-start (FS) zavretak prethodnika odreuje poetak sljedbenika
o Npr. instalacija softvera moe zapoeti po nabavci hardvera
Start-to-start (SS) poetak prethodnika odreuje poetak sljedbenika
o Npr. unos podataka zapoinje s poetkom njihovog prikupljanja
Finish-to-finish (FF) zavretak prethodnika odreuje zavretak sljedbenika
o Npr. provjera instalacije zavrava s dovrenjem oienja
Start-to-finish (SF) - poetak prethodnika odreuje zavretak sljedbenika
o Npr. stari sustav prestaje s radom kad zapone rad novog
Ukoilko nije eksplicitno definirano, podrazumijeva se da je zavisnost dva povezana zadatka FS.
Slika 8. Zavisnost zadataka
Zavisnost zadataka prikazujej se mrenim dijagramom (eng. project network diagram). Jedna od
metoda za odreivanje trajanja projekta je metoda kritinog puta (eng. critical path method).
Sumiraju se trajanja zadataka po svim putanjama u mrei zadataka te se odreuje najdua koju
zovemo kritinim putom. Kritini put je niz zadataka koji moraju zavriti na vrijeme da bi projekt
zavrio u planiranom roku. Svaki zadatak na kritinom putu je kritini zadatak, ije kanjenje uzrokuje
kanjenje projekta. Sljedea slika prikazuje mreni dijagram zadataka (pobrojani krugovi s oznakom
trajanja izvan kruga) s oznaenim kritinim putom u trajanju 22 vremenske jedinice (suma svih
trajanja na tom putu). Kanjenje poetka ili dulje trajanje bilo kojeg kritinog zadatka odgodilo bi
zavretak projekta.
Slika 9. Primjer mrenog dijagrama
U praksi se radi preglednosti ee koristi Ganttov dijagram, kao u sljedeem primjeru. Tamno su
oznaene grupe zadataka (aktivnosti i faze), crveno zadaci na kritinom putu, a plavo ostali zadaci.
20
Slika 10. Primjer Gantograma
Vie o metodi kritinog puta i drugim metodama moe se nauiti na predmetu Upravljanje
projektima .
3.3.2 Resursi projekta
Resursi (eng. resouces) ili sredstva su ljudi, oprema i materijalna ili financijska sredstva potrebni za
obavljanje zadataka. Nama zanimljive vrste resursa su:
Resursi rada (eng. work resources) - ljudi (ogranieno vrijeme rada) i oprema (neogranieno
vrijeme rada)
Resursi materijala (eng. material resources) - potroni materijal koji predstavlja projektni
utrak i daje informaciju o brzini konzumiranja resursa
Dva vana pogleda na resurse su:
raspoloivost - u koje vrijeme odreeni resurs moe raditi na zadatku i koliko posla moe
obaviti i
troak koliko novca e biti potroeno na resurse.
Kod odreivanja rasporeda projekta potrebno je raspodijeliti resurse imajui na umu dostupnost i
troak resursa. Maksimalne jedinice (eng. max. units) prikazuju vrijednosti raspoloivosti resursa u
postocima, npr. 100% predstavlja jednog ovjeka punog radnog vremena, 300% predstavlja tri
ovjeka punog radnog vremena. Ako je projektni tim formiran, kao resurse moemo navesti lanove
hjihovim imenima (npr. Pero Peri za razliku od Sistem analitiar u primjeru Slika 7).
Osnova po kojoj je resursu dodijeljeno obavljanje posla je kalendar resursa. Za pojedinanu
prilagodbu kalendara (standardnog) uvaavaju se radni i neradni dani resursa. Na primjer, ako
kalendar evidentira radno vrijeme samo etvrtkom i petkom 13-17 sati, 100% raspoloivosti nekog
resursa ne znai 40 satno tjedno radno vrijeme, nego 8 sati rada tjedno.
Dodjelom resursa zadatku, dodjeljuje mu se odreeni posao. Treba razlikovati posao (work) od
trajanja (duration). Posao je stvarni rad i odnosi se na zadatak - stvarni rad potreban za zavretak
21
zadatka, dodijeljeni zadatak - stvarni rad nekog resursa na nekom zadatku i resurs - ukupni rad neke
osobe na svim zadacima. Trajanje je omjer posla i jedinica posla (eng. Duration = Work / Units) i ovisi
o kalendaru rada.
Metoda planiranja koja se koristi kod auriranja resursa zadatka jest rasporeivanje temeljem napora
(eng. effort-driven scheduling). Odnosi se samo na zadatke koji su automatski rasporeeni (eng.
Auto Schedule). Trajanje je obrnuto koliini resursa.
Ako su resursi prekapacitirani, problem se rjeava nekom od sljedeih metoda:
Pomaknuti rokove (trajanje)
Dodati dodatne resurse
Produiti radno vrijeme
Poveati jedinice posla
Smanjiti koliinu posla
3.3.3 Upravljanje konfiguracijom
Upravljanje konfiguracijom (eng. configuration management) igra kljunu ulogu u razvoju
tehnologije, pogotovo kada na projektu radi vie ljudi. Konfiguracija je imenovani skup
konfiguracijskih elemenata u odreenoj toki ivotnog ciklusa. Element konfiguracije je agregacija
hardvera i/ili softvera koja se tretira kao jedinka u procesu upravljanja konfiguracijom.
Sa stanovita ovog teksta kljuni elementi konfiguracije su oni koji se koriste u procesu razvoja i
odravanja programske opreme, dakle izvorni programski kod, koritene programske komponente,
model podataka, specifikacija testova, te razni oblici projektne, tehnike i korisnike dokumentacije.
Upravljanje softverskom konfiguracijom (eng. software configuration management SCM ili S/W
CM) obuhvaa postupke i tehnike upostave osnovice (eng. baseline) konfiguracije softvera i kontrolu
revizija (verzioniranje) sofvera.
Osnovica predstavlja specifikaciju proizvoda koja je formalno provjerena i usvojena, te koja slui kao
temelj razvoja i koja se mijenja samo kroz formalnu proceduru kontrole promjena. U odnosu na nju
moe postojati vie verzija konfiguracije:
verzija, inaica (version) odreeno izdanje (eng. issue, release) proizvoda
objava, isporuka (release) originalna verzija u primjeni, npr. zadnja v2.0
revizija (revision) ona koja se koristi umjesto originalne, podrazumijeva izmjene u
odreenim vremenskim intervalima, npr. V1.2
varijanta (variant) alternativa originalu (druga hardverska platforma, razliita jezina
prilagodba), ivi paralelno s njim, npr. v1.1.2.1
22
Slika 11. Primjer oznaka verzija konfiguracije
Verzioniranje aplikacija
Vana tehnika upravljanja sofverskom konfiguracijom je kontrola verzija (eng. version control)
izvornog koda, ali i drugih datoteka (podsjeamo, aplikaciju ine programski kod, podaci i
dokumenacija). Kada na projektu radi vie osoba, nekontrolirana istovremena izmjena istih
elemenata konfiguracije moe dovesti do nekonzistentnosti pojedinih dijelova. Stoga se koriste
sustavi za kontrolu verzija koji, izmeu ostalog, omoguavaju kontrolu pristupa zakljuavanjem
dateoteka. Kao primjer takvih sustava mogu posluiti Apache Subversion (s takozvanim SVN
klijentima) i Microsoft Team Foundation Server (TFS).
Mogunosti sustava kontrole verzija:
baza projekata (eng. project database) ili riznica (eng. repository) - pohranjuje sve relevantne
objekte konfiguracije
verzioniranje - razlikovanje pohranjenih inaica objekata konfiguracije
pomagalo za izradu (eng. make facility) - prikuplja relevantne objekte i proizvodi odreenu
verziju softvera
praenje problema (eng. issue tracking), praenje pogreki (eng. bug tracking) - biljeenje i
praenje statusa tema koje se odnose na pojedine objekte konfiguracije
Na razvojnoj platformi Microsoft .NET, verzija objektne datoteke (eng. assembly) odreena je s etiri
broja (definira se u razvojnoj okolini Visual Studio jedno od svojstava projekta):
...
major version - mijenja se prilikom znatne promjene u (npr. kod redizajna koji prekida
vertikalnu kompatibilnost sa starijim verzijama)
minor version - mijenja se prilikom znatne promjene, ali uz zadravanje kompatibilnosti s
prethodnim verzijama
build number - predstavlja ponovno prevoenje istog koda (npr. prilikom promjene
platforme, procesora i slino)
revision - primjenjuje se npr. prilikom izdavanja sigurnosnih zakrpa i slinih manjih promjena
Pr