SOFTVER I SOFTVERSKI INŽINJERING
 Softver predstavljaju kompjuterski programi i pridružena mu dokumentacija (zahtjevi, modeli dizajniranja,
korisnička dokumentacija)
 Vrste softvera:
 Korisnički (namijenjen specifičnom korisniku)
 Generički (proizveden da bi se prodao širem krugu različitih korisnika)
 Ugradivi (ugrađuje se u hardver i teško ga je mijenjati)
 Real-time (koristi se za upravljanje i nadzor sistema, mora djelovati trenutno)
 Softver za obradu podataka (koristi se za upravljanje poslovanjem, ključni su tačnost i sigurnost)
 Softverski inžinjering je disciplina koja razmatra sve aspekte razvoja (proizvodnje) softvera. Uključuje
teorijske osnove, metode i alate za razvoj profesionalnog softvera. Ima za cilj proizvesti kvalitetan softver,
isporučen na vrijeme, unutar raspoloživog budžeta i zadovoljavajući sve korisničke zahtjeve i želje.


PROBLEMI I MOGUĆA RJEŠENJA
 Uzroci neuspjeha
 Složenost problema
 Nedostatak usmjerenosti korisniku
 Zanemarivanje okruženja organizacije
 Pretjerani optimizam
 Izostanak praćenja napretka
 Nedostatak komunikacije u timu
 Loša organizacija i vođenje projekta
 Loša izvedba projekta
 Poboljšanje uspješnosti
 Projektiranje
 Planiranje, upravljanje i praćenje projekta
 Uključivanje korisnika u razvoj
 KORISNIK POZNAJE
 INFORMATIČAR UPOZNAJE


SOFTVERSKI PROCESI
 Softverski proces predstavlja skup aktivnosti čiji je cilj razvoj i evolucija softvera
 Aktivnosti u softverskom procesu su:
 Specifikacija (šta sistem treba raditi i koja su njegova ograničenja)
 Razvoj (proizvodnja softverskog sistema)
 Validacija (provjera da li softver zadovoljava korisničke zahtjeve, odnosno zahtjeve kupaca)
 Evolucija (mijenjanje softvera kao odgovor na zahtjeve kupaca)
 Atributi dobrog softvera:
 Održivost (softver se mora razviti kako bi zadovoljio promjene zahtjeva)
 Pouzdanost (softver mora uživati povjerenje od strane korisnika)
 Efikasnost (softver ne treba rasipnički koristiti sistemske resurse)
 Prihvatljivost (softver mora biti prihvatljiv od krajnjih korisnika, razumljiv, upotrebljiv i komptibilan sa drugim
sistemima)


ŽIVOTNI CIKLUS RAZVOJA SOFTVERA
 Životni ciklus razvoja softvera (SDLC – System Development Life Cycle) opisuje „životni vijek“ od
nastanka potrebe za softverom, preko implementacije, održavanja, pa sve dok se ne prestane koristiti.
 Model procesa razvoja softvera definira redoslijed razvojnih faza.
 Postoji više varijanti SDLC-a, a to su:
 Tradicionalni linearni (sekvencijalni) “vodopadni” (eng. “waterfall”)
 Paralelni model,
 Iterativni model ili evolucijski model,
 Spiralni model,
 Agilne metode itd.


VODOPADNI MODEL
 Pri korištenju sekvencijalnih metodologija razvoja analitičar sistema i članovi razvojnog tima napreduju
sekvencijalno od jedne do druge faze projekta. Svaka faza se u cjelosti završi i potom se prelazi na
sljedeću fazu. Nije uobičajeno vraćati se na prethodnu fazu.
 Prednosti:
 Unaprijed identifikovani zahtjevi (prije početka razvoja)
 Promjene u zahtjevima su minimalne
 Nedostaci:
 Dizajn mora biti u potpunosti završen prije početka implementacije
 Vrijeme provedeno na svakoj od faza


PARALELNI PRISTUP
 Metodologija paralelnog razvoja nastoji smanjiti vrijeme između faze analize i isporuke softverskog
proizvoda. Prvo se napravi dizajn cjelokupnog proizvoda a zatim se projekt dijeli na više podprojekata.
Svi podprojekti, ukoliko ne postoji međusobna ovisnost među njima, se realiziraju paralelno. Rezultati
svakog od podprojekata potom se integriraju u jednu cjelinu, projekt.
 Prednosti:
 Znatno se smanjuje vrijeme razvoja
 Manje su šanse za prepravke
 Nedostaci:
 Potrebno više resursa
 Ponekad je teško integrisati podprojekte


ITERATIVNI PRISTUP
 Iterativni ili evolucijski model je model u kojem korištenje softverskog proizvoda mijenja perspektivu korisnika
u odnosu na softverski proizvod. Svaka promjena perspektive može rezultirati generiranjem novih korisničkih
zahtjeva. Na taj način softverski proizvod raste zajedno sa organizacijom u kojoj se koristi. Ovakav pristup
razvoja podrazumjeva brzo prototipiranje, odnosno, gradnju dijelova softverskog proizvoda u inkrementima.
 Prednosti:
 Softver se proizvodi u ranim fazama životnog ciklusa
 Korisnici u ranim fazama probaju rezultate
 Pojednostavljeno testiranje
 Nedostaci:
 Izmjene zahtjeva
 Duže vrijeme razvoja


SPIRALNI MODEL
 Na početku svake faze radi se analiza rizika i nastoje se utvrditi mogući rizici. Cilj analize rizika je eliminirati
rizike ili barem ih svesti na najmanju moguću mjeru. Ako je rizik nastavka projekta prevelik, tada se projekat
prekida.
 Faze spiralnog modela su:
 Analiza rizika i procjena alternativa
 Razvoj i verifikacija sljedećeg “proizvoda„
 Planiranje sljedeće faze
 Pregled – Određivanje ciljeva, alternativa i ograničenja.
 Prednosti
 Visok stepen analize rizika
 Softver se proizvodi u ranim fazama životnog ciklusa
 Nedostaci
 Može biti veoma skup model
 Zahtjeva visok stepen ekspertize u analizi rizika
 Nije dobar za male projekte


AGILNE METODE
 Agilne metode podrazumijevaju iteracije u kratkim vremenskim intervalima. Obavezan timski rad u
stalno prisustvo naručioca projekta (klijenta).
 Metodologija zasnovana na principu kontinuirane isporuke manjih ali funkcionalnih dijelova sistema
 SCRUM
 Ekstremno programiranje (XP)
 Izbjegava se proces modeliranja softvera.


ANALIZA I DIZAJN
 Analiza je tehnika kojom rastavljamo sistem na njegove komponente s ciljem proučavanja kako te
komponente međusobno funkcionišu. Predstavlja istraživanje problema i zahtjeva sistema (ne i rješenja).
 Cilj je prikupiti što više informacija o sistemu. Tom prilikom koristimo različite tehnike prikupljanja
činjenica:
 Pregled postojeće dokumentacije
 Intervjuisanje osoba koje dobro poznaju sistem
 Posmatranje korisnika u realnom okruženju
 Anketiranje budućih korisnika
 Analiza sličnih sistema
 Dizajn predstavlja identifikaciju konceptualnog rješenja, odnosno identifikaciju dijelova sistema iodnosa
među njima.
 Ako analiza znači definiranje problema, onda dizajn je proces definiranja rješenja problema.


MODELIRANJE SOFTVERA
 Centralna aktivnost proizvodje dobrog softvera.
 Model je apstrakcija nekog problema (pojednostavljena realnost).
 Modeliranjem reduciramo domenu problema i fokusiramo se u svakom momentu samo na jedan aspekt.
 Konstruiramo modele kompleksnih sistema da bismo razumjeli sistem kao cjelinu.
 Modeli su vodič koji se koristi pri izgradnji sistema.
 U kojoj mjeri ćemo modelirati ovisi o kompleksnosti problema
i veličini projekta,,


UML
 UML (Unified Modeling Language) je grafički jezik za predstavljanje, specifikaciju, konstrukciju i
dokumentaciju komponenti softverskog sistema.
 Standardnu definiciju UML-a je postavio OMG (Object Managment Group). OMG je osnovana 1989.
godine kao neprofitabilna organizacija sa ciljem kreiranja tržišta softvera na bazi komponenti,
standardiziranja objektno – orijentiranog pristupa, pružanja odgovarajućeg okruženja za razvoj softvera,
itd.
 Riječnik UML-a obuhvata tri osnovna tipa gradivnih blokova:
 Stvari
 Relacije
 Dijagrame


UML STVARI
 Postoje četiri vrste stvari:
 Strukturalne stvari (engl. structural things) su imenice u UML modelima i najčešće su statički dijelovi modela.
Predstavljaju konceptualne ili fizičke elemente. U UML-u postoji sedam strukturalnih stvari: klasa, interfejs,
saradnja, slučaj korištenja, aktivne klase, komponente i čvorovi.
 Stvari sa ponašanjem (engl. behavioral things) su dinamički dijelovi UML-a. To su glagoli modela i predstavljaju
ponašanje kroz prostor i vrijeme. Postoje dva tipa stvari sa ponašanjem: interakcija i automat stanja.
 Grupirajuće stvari (engl. grouping things) su organizacijski dio UML-a i postoji samo jedan tip, paketi.
 Označavajuće ili opisne stvari (engl. annotational things) daju neku vrstu objašnjenja i postoji samo jedan tip, opis
(engl. note).


UML RELACIJE
 Postoje četiri vrste relacija:
 Ovisnost (engl. dependency) je semantička relacija između dvije stvari u kojoj promjena u jednoj, neovisnoj stvari,
može uticati na semantiku druge ovisne stvari.
 Asocijacija (engl. association) je strukturalna relacija koja opisuje skup veza između objekata. Kombinacija ili
agregacija je specijalni oblik asocijacije i predstavlja strukturalnu relaciju između cjeline i njenih dijelova.
 Generalizacija (engl. generalization) je relacija specijalizacije/generalizacije u kojoj se objekti specijaliziranih
elemenata mogu zamijeniti objektima generaliziranih elemenata.
 Realizacija (engl. realization) je semantička relacija između klasifikatora, gdje jedan klasifikator specificira ugovor
koji drugi klasifikator garantira izvršiti. Realizacija se susreće na dva mjesta: između interfejsa i klasa ili
komponenata koje ih realiziraju, i između slučajeva korištenja i saradnji koje ih realiziraju


UML DIJAGRAMI
 Dijagram je grafička prezentacija skupa elemenata, najčešće prikazanih kao povezani graf stvari i relacija.
Dijagrami se crtaju da bi se predstavio sistem iz različitih perspektiva, pa to dijagram čini jednom vrstom
projekcije sistema.


CASE ALATI ZA MODELIRANJE
 CASE alati pružaju automatsku podršku aktivnostima softverskog procesa.
 Upper-CASE sistemi za podršku ranim aktivnostima procesa (zahtjevi i dizajn)
 Lower-CASE sistemi za podršku kasnijim aktivnostima (programiranje, debagiranje i testiranje)
 Primjeri CASE alata koji podržavaju UML modeliranje:
 Open ModelSphere – http://www.modelsphere.com/org/
 Power Designer
 Rational Rose
 Visual Paradigm
 Architect
 Star UML