Klasičen model razvoja programskih aplikacij
Bojan Kverh, Peter Peer
Fakulteta za računalništvo in informatiko, Ljubljana

- Faza analize: definicija
problema (specifikacija zahtev uporabnika) in analiza
problema (specifikacija zahtev programske opreme)
- Faza načrtovanja
(podroben načrt)
- Faza implementacije
(aplikacija)
- Faza testiranja
- Faza vzdrževanja: prenos in vzdrževanje
Vsaka faza se zaključi z V&V: Validacija: Ali gradimo sistem
pravilno?, Verifikacija: Ali gradimo pravi sistem?
1.1. Definicija problema
Namen:
- natančno določiti cilje, obseg in obliko dela,
- zagotoviti je treba upoštevanje zahtev glede podpore uporabnikom in
vzdrževanja.
Aktivnosti:
- ugotavljanje in dokumentiranje uporabnikovih zahtev (čimbolj popolne in
stabilne zahteve),
- določiti okolje, v katerem bo aplikacija delovala,
- najti najširše soglasje o zahtevah.
Uporabnikove
zahteve lahko razvrstimo v 3 kategorije:
- funkcionalnost aplikacije (operacije, ki jih uporabnik želi imeti
implementirane),
- omejitve (protokoli, standardi, strojna oprema),
- podpora (uvajanje, nivo in tip podpore).
Atributi zahtev
uporabnika:
- identifikacijska koda,
- potrebnost zahteve (relativna),
- stabilnost (skozi cikel razvoja),
- preverljivost,
- prioriteta (pri inkrementalnem razvoju),
- vir.
Ponoven pregled:
sodelujejo uporabniki, operaterji, razvijalci, upravljalci,... Na tem nivoju se
med uporabniki in razvijalci podpiše formalna pogodba. Pred tem je potrebno
soglasje o:
- terminologiji (metafora),
- kriterijih za prevzem aplikacije,
- možnostih sprememb v uporabnikovih zahtevah,
- ravnanju s problemi, ki nastanejo med razvojem,
- definiciji podpore in ostalih aspektih vzdrževanja.
Output:
- dokument Specifikacije zahtev uporabnika,
- načrt za upravljanje/vodenje projekta, verifikacijo in zagotavljanje
kvalitete,
- načrt za demonstracijo.
1.2. Analiza problema
Namen:
Izraziti zahteve
uporabnika v smislu, ki je bližje programski opremi s stališča realizacije
(analiza uporabnikovih zahtev in izdelava zahtev programske opreme, ki jasno
specificirajo, kaj mora programska oprema narediti).
Aktivnosti:
Izdelava implementacijsko neodvisnega logičnega modela
iz katerega lahko izpeljemo specifične zahteve programske
opreme.
Specifikacija na osnovi logičnega modela vsebuje:
- funkcionalne zahteve,
- izvedbene zahteve,
- zahteve vmesnikov (hardware, software, komunikacijski protokoli),
- uporabniški vmesnik,
- zahteve virov,
- verifikacijske zahteve,
- zahteve po dokumentaciji,
- varnostne zahteve,
- zahteve po prenosljivosti.
Atributi zahtev programske
opreme:
- identifikacijska koda,
- potrebnost,
- stabilnost,
- preverljivost,
- prioriteta
- vir.
Output:
- specifikacija zahtev s stališča programske opreme (pomembno je, da zajame
vse zahteve uporabnika, se izogne implementacijskim detajlom in posamezne
operacije opiše v smislu kaj in ne kako),
- plan za naslednjo fazo.
2. Načrtovanje
Namen:
Iz logičnega, implementacijsko neodvisnega modela narediti fizičen,
implementacijsko odvisen model.
Aktivnosti:
Izvedba fizičnega modela aplikacije (razčlenitev aplikacije na komponente
in opis le-teh).
Kvalitetno načrtovanje:
- maksimizirati stopnjo medsebojnih aktivnosti znotraj komponent,
- minimizirati število različnih elementov, ki prehajajo med komponentami,
- odstraniti podvajanje med komponentami z uvedbo novih komponent, ki
opravijo skupno funkcijo,
- pregled vsake komponente tudi glede na nefunkcionalne zahteve,
- prototipni pristop.
Specifikacije v dokumentu podrobnega
načrta:
- definicija vseh komponent in vmesnikov (vsaka zahteva programske opreme
mora biti vidna v kateri izmed komponent),
- definicija vseh zunanjih vmesnikov med programsko opremo in okoljem.
Vsaka komponenta je opisana najmanj z:
- vhodnimi podatki,
- opis operacije,
- izhodnimi podatki.
Vsak vmesnik je opisan z:
- opis elementov,
- odnosi med elementi,
- obseg vrednosti za vsak element,
- začetna vrednost vsakega elementa.
Output:
- dokument podrobnega načrta,
- dokument načrta podpore.
3. Implementacija
Namen:
- izdelati delujočo aplikacijo,
- izdelati ustrezno dokumentacijo.
Aktivnosti:
- programiranje,
- dokumentiranje,
- integracija,
- implementacija podpore,
- (testiranje).
Pred začetkom programiranja, se je
potrebno dogovoriti o:
- imenih programov, podprogramov, datotek, spremenljivk,
- obliki komentarjev, opisov,
- omejitvah velikosti modulov,
- uporabi knjižnic,
- definiciji konstant,
- upravljanju z napakami.
Output:
- komentirana koda,
- navodila za uporabo,
- dokumenti za podporo izvajanju.