





































































Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u
Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan
Pripremite ispite
Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u
Nabavite poene za preuzimanje
Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan
Softversko inzenjestvo - Skripta
Tipologija: Rezime
1 / 77
Ova stranica nije vidljiva u pregledu
Ne propustite važne delove!






































































Robert Manger
SOFTVERSKO INˇZENJERSTVO
skripta
ii
iv
Jedan od ciljeva ovog kolegija je da poveˇze i sistematizira znanje koje smo ve´c stekli u prethodnim “softverskim” kolegijima, kao ˇsto su kursevi programskih jezika, raˇcunarski praktikumi, kursevi o algoritmima, bazama podataka, mreˇzama raˇcunala i sliˇcno. Osnovni pojmovi u ovom kolegiju odnose se na problematiku razvoja softvera i ve´c smo ih susretali u spomenutim prethodnim kolegijima. Ipak, sad tim istim pojmovima nastojimo dati preciznije znaˇcenje.
Softverski produkt je skup raˇcunalnih programa i pripadne dokumentacije, stvoren zato da bi se prodao. Moˇze biti razvijen za sasvim odredenog korisnika (engleski bespoke product, customized product) ili op´cenito za trˇziˇste (engleski generic product). Softverski produkt ˇcesto ´cemo kra´ce nazivati softver ili (softverski) sustav.
Za danaˇsnji softver se podrazumijeva da on mora biti kvalitetan. Preciznije, od softverskog produkta se oˇcekuje da se on odlikuje sljede´cim atributima kvalitete.
Softversko inˇzenjerstvo je znanstvena i struˇcna disciplina koja se bavi svim aspektima proizvodnje softvera. Dakle, softversko inˇzenjerstvo bavi se modelima, metodama i alatima koji su nam potrebni da bi na ˇsto jeftiniji naˇcin mogli proizvoditi ˇsto kvalitetnije softverske produkte.
Softversko inˇzenjerstvo poˇcelo se razvijati krajem 60-tih godina 20-tog stolje´ca, kao odgovor na takoz- vanu “softversku krizu”. Naime, pojavom raˇcunala tre´ce generacije (na primjer IBM serija 360) stvorila se potreba za sloˇzenijim softverom (na primjer multi-tasking operacijski sustav). Pokrenuti razvojni projekti viˇsestruko su premaˇsili planirane troˇskove i rokove. Vidjelo se da se dotadaˇsnje neformalne
tehnike individualnog programiranja ne mogu uspjeˇsno “skalirati” na velike programe gdje sudjeluje velik broj programera. Osje´cala se potreba za sloˇzenijim metodama razvoja softvera, koje bi liˇcile na metode iz tradicionalnih tehniˇckih struka (na primjer mostogradnja) te bile u stanju kontrolirati kompleksnost velikog softverskog projekta.
Od 60-tih godina do danas, softversko inˇzenjerstvo uspjelo se etablirati kao vaˇzni dio tehnike i raˇcunar- stva. Softver se danas proizvodi daleko predvidljivije i efikasnije nego prije. Ipak, joˇs uvijek postoji prostor za poboljˇsanje. Softversko inˇzenjerstvo se i dalje intenzivno razvija, disciplina joˇs nije dosegla svoju zrelu fazu, te u njoj nema “jednoumlja”.
Softverski proces je skup aktivnosti i pripadnih rezultata ˇciji cilj je razvoj ili evolucija softvera. Os- novne aktivnosti unutar softverskog procesa su: specifikacija, oblikovanje, implementacija, verifikacija i validacija, te odrˇzavanje odnosno evolucija.
Model za softverski proces je idealizirani prikaz softverskog procesa, kojim se odreduje poˇzeljni naˇcin odvijanja i medusobnog povezivanja osnovnih aktivnosti. Na primjer, model moˇze zahtijevati sekven- cijalno odnosno simultano odvijanje aktivnosti.
Metoda razvoja softvera je profinjenje i konkretizacija odabranog modela za softverski proces. Metoda uvodi specifiˇcnu terminologiju. Takoder, ona dijeli osnovne aktivnosti u pod-aktivnosti te propisuje ˇsto se sve mora raditi unutar pojedine pod-aktivnosti. Dalje, metoda uvodi konkretan naˇcin doku- mentiranja rezultata pod-aktivnosti (dijagrami, tabele, pseudo-jezik,... ), te daje naputke vezane uz organizaciju rada, stil oblikovanja, stil programiranja, itd.
Starije funkcionalno-orijentirane metode poput Yourdonove ili Jacksonove JSD (80-te godine 20- tog stolje´ca) slijede logiku starijih funkcionalno-orijentiranih programskih jezika (Cobol, C, Fortran). Novije objektno-orijentirane metode predstavljaju nadgradnju objektno-orijentiranih programskih jezi- ka (Java, C++) i danas su se integrirale u zajedniˇcki standard RUP (engleski Rational Unified Process
CASE alati (engleski Computer Aided Software Engineering) su softverski paketi koji daju automa- tiziranu podrˇsku za pojedine aktivnosti unutar softverskog procesa. Obiˇcno su napravljeni u skladu s odredenom metodom razvoja softvera, implementiraju pravila iz te metode, sadrˇze editore za odgo- varaju´ce dijagrame, te sluˇze za izradu odgovaraju´ce dokumentacije.
Takozvani upper-CASE alati daju podrˇsku za poˇcetne aktivnosti unutar softverskog procesa, kao ˇsto su specifikacija i oblikovanje. Lower-CASE alati podrˇzavaju samu realizaciju softvera, dakle programi- ranje, verifikaciju i validaciju, te eventualno odrˇzavanje.
Na vjeˇzbama iz ovog kolegija obradit ´cemo funkcionalno-orijentiranu metodu SADIE, te ´cemo raditi s odgovaraju´cim upper-CASE alatom Select Yourdon (podrˇska za funkcionalnu specifikaciju i obliko- vanje). U jednom dijelu vjeˇzbi simulirat ´cemo primjenu objektno-orijentiranih metoda, te ´cemo se sluˇziti upper-CASE alatom za objektno oblikovanje i crtanje UML dijagrama ArgoUML. Na vjeˇzbama iz drugih kolegija koristi se lower-CASE alat Microsoft Visual Studio (podrˇska za implementaciju, testiranje, debugiranje,... ).
1.2 Modeli za softverski proces
U svim modelima viˇse ili manje su prisutne sljede´ce osnovne aktivnosti koje ˇcine softverski proces:
Pribliˇzni opis
Simultane aktivnosti
Implementacija
Specifikacija
Verifikacija, validacija
Oblikovanje
Polazna verzija
Privremene verzije
Konaˇcna verzija