sveuč iliš te u zagrebu fakultet elektrotehnike i rač unarštva razvoj

258
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.

Upload: phamhuong

Post on 31-Dec-2016

239 views

Category:

Documents


7 download

TRANSCRIPT

  • 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