Please enable JavaScript.
Coggle requires JavaScript to display documents.
SOFTVERSKO INŽENJERSTVO - kolokvijum - Coggle Diagram
SOFTVERSKO INŽENJERSTVO -
kolokvijum
UVOD
Uvod (slajd 7)
slika slajd 7
Značaj softvera (slajd 8)
Ugnježden je u sisteme svih vrsta: transportne, medicinske, telekomunikacione, vojne, industrijske procese, održavanje, kancelarijske proizvode,... Lista je skoro beskonačna.
Softver je praktično neizbežan u modernom svetu.
Ulaskom u 21. vek, polako će postati pokretač novih napredaka u svim oblastima od osnovnog obrazovanja do genetskog inženjerstva.
Problemi u razviju softvera (slajd 9)
Finalni softverski proizvod ne ispunjava očekivanja korisnika.
Teško ga je proširiti i unaprediti: Ukoliko kasnije želite da dodate novu funkcionalnost to je skoro nemoguća misija.
Loša dokumentacija.
Loš kvalitet: česte greške, komplikovano korišćenje,...
Više vremena i veći troškovi nego što je očekivano.
slika slajd 10
Vrste softvera (slajd 11)
Aplikativni softver
specifična svrha
nije u direktnoj vezi sa hardverom
oslanja se na sistemski softver (OS)
kupuje se odvojeno od hardvera
Sistemski softver
programi na niskom nivou(low-level)
kontrola operacija nad računarskom opremom
Ponekad nema jasne granice između sistemskog i aplikativnog softvera.
slika slajd 11
Rešavanje problema (slajd 12)
Analiza sistema
veze između potproblema su izuzetno važne, jer mogu biti ključni faktor u nalaženju rešenja
razlaganje problema na delove, tj. potprobleme (PP) koje možemo da razumemo i rešimo
Sinteza rešenja
sklapanje parcijalnih rešenja (R) u cilju nalaženja kompletnog rešenja problema
Važni aspekti (slajd 13)
Nema softvera bez nedostataka.
Neočekivana upotreba sistema
usled zloupotrebe
usled nestručnog rukovanja
Tržište diktira brz razvoj softvera
brza isporuka ostavlja malo vremena za testiranje, pa su greške češće
ponekad je teže ispraviti uočene nedostatke, nego napisati kompletan novi softver
Kvalitet je neophodan
što je nedostatak duže neotkriven, njegovo otklanjanje više košta
Učesnici u razvoju (slajd 14)
Softver
Namenjen konkretnom naručiocu
Namenjen otvorenom tržištu
slika slajd 14
Razvojni tim (slajd 15)
Analitičar
obavlja prve korake u razvoju, definiše zahteve sa korsinikom, sa projektantima generiše opis funkcija sistema
Projektant
projektuje sistema prema zahtevima
Programer
prema projektu, piše programski kod na nekom programskom jeziku koristeći odgovarajuće razvojno okruženje
Inženjer za testiranje
detaljno testira napisani programski kod u cilju verifikacije i validacije sistema
Inženjer za isporuku i održavanje
isporučuje i instalira softver u radnom okruženju, obučava korisnike i održava sistem
PROCES RAZVOJA SOFTVERA
Uvod
Proces razvoja
.. je uređeni skup zadataka koje treba uraditi da bi se napravio proizvod ili pružila usluga
definisanje aktivnosti i resursa
definisanje ograničenja (budžet, vremenski rokovi, prostor, redosled aktivnosti, raspoloživost alata,...)
Životni siklus softvera = Proces razvoja softvera
od početka izrade softvera do isporuke i održavanja
Metodologija razvoja
.. je disciplina u razvoju u cilju veće efikasnosti
Faze u razvoju softvera (slajd 3)
Analiza i definisanje zahteva
saradnja sa kupcem i korisnikom
analiza zahteva (entiteti, aktivnosti i ograničenja)
interakcija sistema sa okruženjem
rezultat faze - lista korisničkih zahteva
2 Projektovanje (dizajn) sistema
prema zahtevima, pravi se projekat sistema koji daje plan rešenja
plan - arhitektura sistema, komponente i algoritmi
Projektovanje programa
generisanje potprojekata (modula) pogodnih za programsku realizaciju
veze između modula i načini razmene podataka
Implementacija programa
izrada programskog koda prema projektu
Testiranje programa
nalaženje i ispravljanje grešaka
jedinično testiranje
integraciono testiranje
sistemsko testiranje
Isporuka sistema
instaliranje softvera u radnom okruženju
obuka korisnika
Održavanje sistema
ispravljanje grešaka nakon isporuke
unapređivanje sistema (novi zahtevi ili promene u okruženju)
Proces razvoja softvera - je svaki opis razvoja softvera koji sadrži neke od nabrojanih faza, organizovanih tako da proizvode odgovarajući ispravan i proveren kôd.
Modelovanje (slajd 5)
Razlozi za modelovanje
opis sistema postaje zajedničko shvatanje svih učesnika; lakša komunikacija, retka su pogrešna tumačenja
modelovanje odražava ciljeve razvoja ; pre implementacije se procenjuje usklađenost predviđenih aktivnosti sa postavljenim zahtevima
modelovanje pomaže u nalaženju nedoslednosti, suvišnih ili izostavljenih elemenata; bolje efikasnost
model odgovara konkretnoj, ali se može primeniti i u drugim situacijama; dobro je da ostane trag o projektu
slika slajd 5
Tradicionalne metode (slajd 6)
Kaskadni model - model vodopada (slajd 7)
Royce 1970. g., najstariji model
Osobine
veoma visok nivo apstrakcije
kaskadna veza faza
kritične tačke i međuproizvodi
Prednosti
jednostavnost - olakšava
komunikaciju sa kupcima
lako praćenje projekta
laka primena modela - jedna iteracije, pogodan kada u krtkom roku treba zameniti stari sistem novim
Mane
ne podržava povratne sprege koje postoje u stvarnosti (više iteracija, dopuna zahteva, greške u završnim fazama,..)
ne ukazuje na način povezivanja faza (kako izlaz jedne faze transformisati u rezultat sledeće faze)
razvoj softvera se ne posmatra kao rešavanje problema - model koristi industrijski pristup, a razvoj softvera je stvaralački a ne proizvođački proces
ograničena interakcija sa korisnikom (samo u prvoj i poslednjoj fazi, što je malo)
slika slajd 7
V model (slajd 9)
Nemačko ministarstvo odbrane, 1992. g.
Osobine
modifikovan kaskadni model
jedan od najčešće korišćenih
eksplicitne povratne sprege
Kako se koristi V model?
analiza zahteva, projektovanje sistema i programa, kodiranje
testiranje
ako se pojavi problem u nekoj fazi testiranja, ponavljaju se prethodne faze prema zadatim povratnim spregama
nakon unosa potrebnih izmena, koriguje se programski kôd,
a onda se ponovo sprovodi testiranje
razvoj obično ima više ovakvih iteracija do konačne verzije sistema
Prednosti
podržava povratne sprege - pogodan za razvoj složenih, realnih sistema
omogućava verifikaciju i validaciju sistema
daje kvalitetan proizvod - zbog strogo kontrolisanog procesa razvoja
vodi računa o testiranju u ranim fazama projekta
Mane
nedovoljna fleksibilnost - pri povratku na ranije faze nije dovoljno samo uneti izmene, već treba ažurirati sve naredne faze zajedno sa dokumentacijom
zahteva obimne resirse i veća novčana sredstva jer je razvojni tim brojan
slika slajd 9
Fazni razvoj - ikrementalni i iterativni (slajd 12)
velika konkurencija na tržištu diktira kraći razvoj; najveći prihod od novijih softvera
ubrzanje se postiže isporukom u fazama
svakoj fazi odgovara poseban skup funkcija; neke funkcije su u upotrebi, a neke u razvoju.
Inkrementalni razvoj (slajd 13)
podela sistema na podsisteme (faze, verzije) prema funkcijama
svaka nova verzija nadograđuje sistem do pune funkcionalnosti
Prednosti:
brza iporuka operativnog skupa funkcija - već nakon prve faze, korisnik ima skup funkcija
vidljiv napredak na projektu - progres na projektu vidljiv ne samo preko dokumenata, već i u praktičnom radu
permanentni odziv korisnika - stalna interakcija sa korisnikom vodi stabilnijim međurezultatima i sistemu uopšte
mali projektni tim - manji troškovi, ali to može da utiče na kvalitet (prelazak sa jednog na drugi posao)
primer slajd 13
Iterativni razvoj (slajd 15)
podela sistema na podsisteme (faze, verzije) prema funkcijama
u svim verzijama se isporučuje ceo sistem, uz menjanje funkcija svakog podsistema
Prednosti:
mogućnost rane obuke - već nakon prve faze delimična obuka može da počne (organizacija interfejsa, načini izvršavanja funkcija,...), korisnici sugerišu moguća poboljšanja
česte isporuke - korisnici brže uočavaju probleme koji se onda lakše otklanjaju, velika odgovornost razvojnog tima po pitanju kvaliteta verzije
mogućnost specijalizovanih verzija - u različitim verzijama, razvojni tim se može posvetiti usavršavanju tazličitih aspekata sistema
primer slajd 15
slika slajd 12
Prototipski model (slajd 17)
zasniva se na izradi prototipova (nekompletna verzija programa koji se razvija)
pomoću prototipova, za kratko vreme može se generisati ceo sistem ili njegovi delovi radi razjašnjenja otvorenih pitanja
svrha prototipova je da smanje rizik prilikom razvoja
prototipovi mogu da budu uključeni u finalni proizvod, ali i ne moraju
Prednosti
redukovanje vremena i troškova - detaljna analiza pri izradi prototipa zahteva u ranoj fazi utvrđuje šta korisnik zaista želi, a time se ubrzava razvoj i smanjuju troškovi
intenzivna interakcija sa korisnicima
Mane
nedovoljna analiza - fokusiranje na prototipove odvraća od analize na nivou celog sistema, posledice mogu biti: predviđanje boljih rešenja, nekompletna specifikacija, konačna rešenja teška za održavanje
konfuzija između prototipova i finalnih sistema - prototipovi nisu finalni proizvodi koje treba "samo malo doraditi", potreban je veliki napor za uvođenje provere grešaka ili mehanizama zaštite, korisnici prihvataju svojstva prototipa kao finalna iako će biti izbačena, pa nastaje konflikt sa razvojnim timom
slika slajd 17
Spiralni model (slajd 21)
Boehm 1986. g.
vodi računa o postojećim rizicima
uobičajene aktivnosti u razvoju softvera se kombinuju
sa analizom rizika
kombinuje kaskadni i prototipski model
namenjen razvoju velikih, složenih i skupih sistema
Model predstavlja iterativni razvoj u četiri iteracije:
zahtevi i planiranje životnog ciklusa
planiranje razvoja
planiranje integracije i testiranja
implementacija
Svaka iteracija obuhvata pun
krug i prolazi kroz četiri kvadranta (slajd 22):
kvadrant 1:
odeređivanje ciljeva, alternativa i ograničenja
kvadrant 2:
evaluacija alternativa, identifikacija i procena rizika
kvadrant 3:
razvoj i verifikacija putemtestiranja
kvadrant 4:
planiranje sledće iteracije
Spiralni model slika slajd 23
Prednosti:
redukovanje rizika - sistem se razvija izradom prototipa za najvažnije karakteristike, a onda se po testiranju prototipa unose izmene u sistem; tako su rizici najmanji
dobra kontrola troškova - pošto su prototipovi mali, troškovi se lako procenjuju
aktivno učešće korisnika
Mane:
ograničena primena - model nije pogodan za manje projekte, već najbolje radi u slučaju velikih i složenih projekata
neophodno znanje o rizicima - potreba velika veština u radu sa rizicima, uvošenje rizika uvećava troškove i to uvećanje može da bude veće od troškova izrade sistema
složenost modela - striktno definisan protokol razvoja je nekada teško ispoštovati
Transformacioni model (slajd 19)
Balzer 1985. g.
pokušaj automatskog modelovanja procesa razvoja softvera
smanjuje se mogućnost greške uvođenjem niza unapred definisanih transformacija kojima se formalna specifikacija prevodi u proizvod koji se isporučuje
modelovanje se svodi na izbor sekvence transformacija (sekvenca se čuva u formalnom zapisu u okviru projekta) radi postizanja cilja projekta
tipične transofrmacije:
prelazak sa jednog na drugi način predstavljanja
podataka
različiti algoritmi
metode optimizacije
prevođenje
model je mnogo obećavao
problem: formalnu specifikaciju nije lako napraviti
slika slajd 19
RUP (slajd 25)
Rational Software (IBM),1996.g.
Rational Unified Process je adaptivni proces razvoja opšte namene
razvojna organizacija selektuje elemente RUP a i formira proces razvoja koji joj najviše odgovara
iterativni postupak orijentisan ka arhitekturi i vođen slučajevima korišćenja
dobro strukturiran proces u kome je jasno ko , šta i kako treba da radi na projektu
lako se prilagođava i malim i velikim projektima i razvojnim timovima
rado korišćena metodologija od strane iskusnih razvojnih timova
Gradivni elementi RUP-a
uloge (KO) - definišu skup povezanih veština, sposobnosti i
odgovornosti
prizvodi rada (ŠTA) - predstavljaju rezultat nekog zadatka, uključujući proizvode, modele, dokumentaciju,..
zadaci (KAKO) - opisuju posao dodeljen koji proizvodi neki koristan rezultat
U svakoj iteraciji zadaci su organizovani u 9 disciplina
Inženjerske discipline:
poslovno modelovanje
zahtevi
analiza i projektovanje
implementacija
testiranje
isporuka
discipline za podršku
konfiguracija i upravljanje izmenama
upravljanje projektom
okruženje
RUP posmatra životni proces kroz 4 faze:
faza započinjanja –razumevanje ciljeva i obima projekta,definisanje funkcionalnosti i slučajeva korišćenja, predlog bar jednog rešenja, razmatranje troškova i rizika; rezulat faze: kritična tačka u kojoj se odlučuje da li je projekat izvodljiv i finansijski prihvatljiv (dalje |odustajanje)
faza razrade –definisanje arhitekture sistema, cilj je smanjenje rizika u vezi sa zahtevima, arhitekturom i izborom alata; rezulat faze: kritična tačka u kojoj se gleda da li postoji detaljan plan o vođenju projekta i minimizaciji rizika (dalje | odustajanje ili suštinskeizmene)
faza konstrukcije –razvoj komponenata, testiranje, izrada dokumentacije; rezulat faze: kritična tačka u kojoj se odlučuje da li je finalna verzija spremna zaisporuku(dalje | odustajanje ili povratak na neku prethodnufazu)
faza tranzicije –isporučivanje gotovog proizvoda; rezulat faze: kritična tačka u kojoj se odlučuje da li je sistem stabilan, kompletan i potpuno spreman za isporuku(novi razvoj | povratak na neku prethodnufazu)
slika slajd 29
Prednosti:
visok nivo prilagodljivosti - RUP samo preporučuje, ništa ne zahteva
iterativnost procesa - postepen razvoj vodi smanjenju troškova i vremenskimuštedama
upravljanje rizicima - usmerava razvoj ka nižimtroškovima
Mane:
neprilagođenost malim projektima - kod kojih faze započinjanja i razrade gube na značaju
iterativnost procesa - može da bude i mana ukoliko su rukovodioci i razvojni timovi neiskusni, pa može da dođe do velikih propusta, čak i odustajanja od projekta
Agilne metode (slajd 31)
Agilna alijansa, 2001. g.
nastale kao otpor tradicionalnim metodama modelovanja
naglašavaju ulogu fleksibilnosti u spretnom i brzom razvoju softvera
Primeri aglinih metoda
XP (Extreme Programming) - skup tehnika kojima se naglašava kreativnost timskog rada uz minimalno administriranje
Scrum - propisuje načine upravljanja zahtevima,
iteracijama razvoja, implementacijom i isporukom
Crystal - familija metodologija fokusirana na razvojni tim, a
ne na procese i proizvode; dobar razvojni tim najviše utiče na kvalitet proizvoda, a česte isporuke smanjuju potrebu
za međuproizvodima
Manifest agilnog razvoja softvera, principi i vrednovanje
slika slajd 31
Ekstremno programiranje (slajd 33)
Kent Beck, 1996. g.
koriste ga srednji i manji razvojni timovi (6 do 20
članova)
neophodna odlična saradnja sa korisnicima
kratke iteracije koje korisnicima daju koristan i konkretan rezultat na uštrb planiranja i dokumentacije
ne propisuje strogu metodologiju, već samo daje
uzore
XP razvoj uvodi
4 elementa koji se dopunjuju
osnovne vrednosti - osnovni kriterijumi za sagledavanje uspešnosti posla; međusobno povezane, poštuju agilne vrednosti i dalje ih nadograđuju; suviše opšte da bi se na osnovu njih definisali praktični mehanizmi; zato se uvode principi
slika slajd 35
principi - otkrivaju različite alternative za odlučivanje koje uključuju osnovne vrednosti; konkretniji su; lakše se prevode u skup mehanizama koji se koristi u praksi
slika slajd 36
prakse - skup praktičnih mehanizama pomoću kojih se izvode aktivnosti; razvojni tim mora vrlo disciplinovano da primenjuje obavezne prakse
slika slajd 37
aktivnosti - iz principa proističu odluke koje se obaveznim praksama prevode u aktivnosti razvojnog tima; usmerene ka dobijanju kvalitetnog proizvoda u što kraćem vremenu i uz što manje troškove
slika slajd 38
Prednosti:
fokusiranje tima na razvoj softvera - nema mnogo dokumentacije i sastanaka
prijatna radna atmosfera - mogućnosti za učenje i napredovanje, 8 časovno radno vreme, nema nezamenljivih
dobar softver po prihvatljivoj ceni - smanjen rizik jer se sve izmene prihvataju
Mane:
metod se teško sprovodi
nije lako naći dovoljno programera za rigorozno sprovođenje praksi
klijenti možda ne žele da se uključe u projekat zbog drugih obaveza
teško uklopiti karaktere u savršenu celinu
ANALIZA ZAHTEVA
Uvod
analiza zahteva je prvi , vrlo složen korak u procesu razvoja softvera
skup zahteva je rezultat intenzivne saradnje sa naručiocima u cilju razumevanja njihovih osnovnih problema i potreba
ishod celog projekta mnogo zavisi od rezultata analize
Grupa Standish, 1994. g.
slika slajd 2
Boehm & Papaccio, 1998. g.
slika slajd 3
Na analizu zahteva utiče razlog zbog koga se softver pravi:
automatizacija poslova koji su se ranije obavljali ručno (elektronsko plaćanje, elektronsko naručivanje,...)
proširivanje ili poboljšanje postojećeg sistema (nove telefonske usluge, novi načini kreditiranja,...)
izrada novog sistema koji obavlja posao koji do tada nije bio rađen (doziranje leka, elektronsko izdavanje…)
Zahtevi (slajd 4)
Zahtev je izraz željenog ponašanja softvera
Cilj analize zahteva:
precizno utvrđivanje ponašanja koje naručilac očekuje od softvera (ne vodeći računa o realizaciji)
identifikuju objekte i entitete u sistemu ((“Radnik je osoba koja radi u kompaniji.”
definišu ograničenja za pojedine entitete ( (“Radnik ne može biti plaćen više od 40
sati nedeljno.”
opisuju odnose između entiteta ( (“Radnika X nadgleda radnik Y, ukoliko je Y
ovlašćen da izmeni zaradu koju prima X.”
pokazuju način interakcije sistema sa okruženjem
Primer: Softver za obračun plata
Zahtevi:
svakog meseca se štampaju liste sa obračunom zarade za svakog radnika
radnici koji se posebno ističu mogu dobiti stimulacije
svakom radniku ostaviti mogućnost korišćenja godišnjeg odmora
sistemu se može pristupati sa više lokacija u kompaniji
Postupak Analize
slika slajd 6
Aktivnost u analizi (slajd 7)
prikupljanje zahteva - (razgovor sa naručiocem, čitanje dokumentacije, posmatranje aktuelnih ponašanja u okruženju)
modelovanje ponašanja - (formiranje modela ili prototipa ponašanja sistema, prema zahtevima koji pomaže boljem razumevanju zahteva i njihovih veza mogu se otvoriti nova pitanja koja treba razmotriti sa naručiocem)
specifikacija zahteva - (izrada specifikacije u kojoj se definiše koji delovi zahtevanog ponašanja će biti implementirani u softveru)
verifikacija i validacija zahteva - (provera da li specifikacija odgovara očekivanjima naručioca; ako ima propusta, sledi povratak na neku raniju aktivnost)
Prikupljanje zahteva (slajd 8)
uzeti u obzir poglede svih učesnika na sistem
uskladiti terminologiju
izgraditi dobre međuljudske odnose
ako je problem poznat
upoznati se sa procesom obavljanja posla
postavljati prava pitanja (čiji se odgovori mogu pretočiti u zahteve)
ako je problem nov
intenzivnija saradnja, jer ni kupac nema praktičnih iskustava
ne ulagati previše napora i ne insistirati na potpunom definisanju skupa zahteva, jer će vremenom svi bolje razumeti problem, pa će zahtevi biti bolje definisani
Vrste zahteva (slajd 10)
funkcionalni zahtevi (opisuju ponašanje sistema šta sistem treba da radi, koje usluge pruža, kakav je format ulaznih i izlaznih podataka, kako sistem reaguje na neki ulazni podatak, kako se menja ponašanje u vremenu)
zahtevi u pogledu kvaliteta (opisuju osobine koje softver treba da ima da bi bio prihvatljiv sa stanovišta kvaliteta)
projektna ograničenja (ograničenja nastala kao posledica donetih odluka na projektu na pr. zbog izbora neke platforme)
procesna ograničenja (odnose se na tehnike i resurse koji će biti korišćeni u izgradnji sistema osoblje, materijali, metode modelovanja,...)
Tehnike prikupljanja (slajd 9)
razgovor (pojedinačni, u grupama inspiracija idejama drugih)
pregled dokumentacije (uputstva za rad, dokumentovane procedure, šeme)
upoznavanje postojećeg sistema (sagledavanje sistema u celini i aktivnosti koje se zaista obavljaju)
učenje posla od korisnika (posmatranje korisnika kako radi konkretan posao)
upotreba strategija specifičnih za datu oblast (korišćenje poznatih teorijskih znanja)
poređenje sa sličnim, ranije razvijenim sistemima (ranija iskustva poboljšavaju kvalitet)
Zahtevi u pogledu kvaliteta (slajd 11)
performanse sistema (vreme izvršenja, vreme odziva, protok podataka,...)
upotrebljivost sistema (lakoća korišćenja, moguće vrste obuke, mogućnost neadekvatne upotrebe,...)
bezbednost sistema (kontrola pristupa, šifrovanje, fizička bezbednost,...)
pouzdanost i raspoloživost sistema (detekcija grešaka, srednje vreme između otkaza, vreme oporavka, pamćenje kopija podataka,...)
održavanje sistema (ispravljanje grešaka, lakoća izvođenja izmena, mogućnost većih izmena, mogućnost prelaska na novu platformu,...)
preciznost i tačnost podataka
Projektna ograničenja (slajd 12)
fizičko okruženje (lociranje opreme, potrebni atmosferski radni uslovi, napajanje, klimatizacija,...)
povezivanje sistema sa okolinom (format ulaznih i izlaznih podataka, interakcija sa drugim sistemima, način preuzimanja i slanja podataka,...)
implementacija (izbor platforme, izbor programskog jezika, korišćene tehnologije,...)
Razrešavanje konflikata (slajd 13)
različiti subjekti na projektu mogu da imaju različita mišljenja o zahtevima koje sistem treba da ispuni, pa se mora definisati mehanizam za razrešenje ovakvih konflikata
da bi konflikt bio lakše rešen, od naručioca se zahteva da definiše prioritete zahteva
Vrste zahteva prema prioritetima
suštinski - moraju da budu ispunjeni u konačnoj verziji softvera
poželjni - nije neophodno da budu ispunjeni, ali bi bilo dobro
opcioni - mogu se ispuniti, ali se mogu i izostaviti iz konačne verzije
Primer slajd 13
najčešće su u konfliktu zahtevi po pitanju kvaliteta (na pr. prilagođavanje sistema za efikasan rad na jednoj platformi ugrožava njegovu prenosivost, lako održavanje se postiže razdvajanjem nadležnosti, što daje duže vreme odziva)
ako se konflikt ne može rešiti pomoću prioriteta, prelazi se na pregovaranje i ponovno ocenjivanje različitih pogleda
pregovaranje zahteva strpljenje, toleranciju i iskustvo
treba utvrditi razloge nepopustljivosti i o njima obavestiti sve subjekte; tako će jedni shvatiti probleme drugih i proceniti da li su oni veći ili manji od njihovih sopstvenih
na kraju dobro vođenog pregovaranja, obično se dobije rešenje prihvatljivo za sve
Prototipovi zahteva (slajd 15)
kada naručilac nije siguran šta tačno želi, lista zahteva ima malo detalja
međutim, kada je proizvod gotov, korisnik dobro zna da li zadovoljava njegove potrebe (lakše je kritikovati postojeći proizvod nego osmisliti novi)
u ovom slučaju, jedini način da se sazna više detalja o proizvodu jeste da se napravi njegov prototip
prototip je delimično razvijen proizvod koji omogućava sagledavanje različitih aspekata sistema
Uloga prototipa:
korisnik uočava koja funkcionalnost nedostaje, koje osobine nisu dovoljno korisne, koja su poboljšanja neophodna
projektant ispituje izvodljivost rešenja i mogućnosti optimizacije
Vrste prototipova (tabela slajd 16):
Ilustrativni prototip
softver koji se razvija radi boljeg upoznavanja sa problemom
ne ulazi u konačni proizvod
ne mora se voditi računa o kvalitetu, efikasnosti, proveri grešaka
brzo dovodi do suštine problema ili rešenja
kad se dobiju odgovori, odbacuje se i prelazi na razvoj softvera
Evolutivni prototip
razvija se sa ciljem da bude deo gotovog proizvoda
pažljivo se razvija, vodeći računa o kvalitetu, odzivu, modularnosti,...
Primer prototipa (slajd 17)
Modelovanje ponašanja (slajd 18)
Modelovanje ponašanja sistema na osnovu prikupljenih zahteva doprinosi:
boljem razumevanju zahteva
lakšem uočavanju pitanja koja treba postaviti naručiocu/korisniku
lakšem nalaženju nedostataka (nepoznato ponašanje u pojedinim situacijama)
lakšem otkrivanju nedoslednosti u zahtevima (na pr. isti ulaz daje različite izlaze)
Metode modelovanja (slajd 19)
ER dijagrami (Entity relationship diagrams) (slajd 20)
Chen, 1976. g.
grafička notacija za predstavljanje konceptualnih modela koja daje strukturiran pogled na problem
identifikuje objekte i entitete u sistemu, njihove osobine i međusobne odnose
osim za modelovanje zahteva, koristi se i za modelovanje dizajna sistema, strukture softvera, baze podataka,...
stabilan model (promene zahteva se uglavnom odnose na izmene u ponašanju entiteta, dok se skup entiteta ne menja)
nivo detalja modelovanja nije lako odrediti (šta su entiteti, a šta atributi)
koriste se u složenijim slučajevima
Primer Jackson i Zave, 1995. g., slajd 21
Tragovi događaja (slajd 22)
grafički opis niza događaja koji se razmenjuju između entiteta (ponašanje)
opis se sastoji od vertikalnih i horizontalnih linija
Vertikalne linije
vremenske ose, vreme teče na dole
na vrhu ose je naziv entiteta na koji se linija odnosi
Horizontalne linije
predstavljaju same događaje, tj. interakciju između entiteta
mogu se shvatiti kao poruke koje entiteti razmenjuju
zahtev se dekomponuje na scenarije, a onda se za svaki scenario napravi trag
svaki dijagram predstavlja jedan trag od više mogućih
precizna i razumljiva semantika, pa se tragovi događaja često primenjuju
ne koriste se za kompletno modelovanje, jer bi broj tragova bio preveliki, već samo u početnoj fazi za ključne zahteve
Primer slajd 23
Konačni automati (slajd 24)
grafički opis komunikacije između sistema i okruženja
definišu dinamičko ponašanje, tj. promene u ponašanju sistema usled nekih događaja
posebno pogodni za modelovanje različitog ponašanja izlaza sistema kada se na njegov ulaz dovede fiksna vrednost (sistemi kod kojih izlaz ne zavisi samo od ulaza, već i od trenutnog stanja sistema)
mogu se naći u određenom broju stanja
stanju odgovara stabilan skup uslova koji važe u intervalu između dva događaja
do promene stanja dolazi usled pojave događaja koji menja uslove u sistemu (pobudni događaj)
prelazi bez efekta se ne modeluju, da ne bi opterećivali model
Priemer slajd 25
Formulisanje zahteva (slajd 26)
Da bi zahtevi bili dobro formulisani, potrebno je obezbediti:
dobru organizaciju zahteva
jasne tekstualne opise zahteva
preciznu prateću dokumentaciju u vidu raznih dijagrama i ilustracija
Dokumentovanje zahteva (slajd 27)
Definicija zahteva
dokument namenjen poslovnom auditorijumu (kupcima, naručiocima, korisnicima)
kompletan spisak zahteva naručioca
interakcija sa okruženjem
entiteti iz okruženja i ograničenja vezana za entitete
Specifikacija zahteva
dokument namenjen tehničkom auditorijumu (projektantima, rukovodiocima projekta, timovima za testiranje, održavanje)
zahtevi o ponašanju softvera
samo entiteti iz okruženja kojima se pristupa putem nekog interfejsa
Analitičar mora da uspostavi jednoznačnu vezu između svakog zahteva u Definiciji i Specifikaciji zahteva.
Primer slajd 28
Definicija zahteva (slajd 29)
Način izrade dokumenta sadržaj
skicirati opštu namenu sistema, uključujući ciljeve, veze sa drugim sistemima, uz uvođenje terminologije, oznaka, skraćenica i sl.
navesti razloge za razvoj sistema (zašto je postojeći sistem nezadovoljavajući, pa treba razvijati novi, koje delove postojećeg sistema treba zameniti, a koje ne i dr.)
opisati rešenje koje se predlaže kroz prikaz osnovnih funkcionalnosti na nivou slučajeva korišćenja
opisati okruženje u kome će sistem da radi (navođenje svih hardverskih i softverskih komponenata sa kojima će sistem biti u interakciji)
navesti pretpostavke vezane za ponašanje okruženja (uslovi koji mogu dovesti do otkaza sistema, kao i eventualne promene u okruženju koje mogu dovesti do promena zahteva)
Specifikacija zahteva (slajd 30)
Način izrade dokumenta sadržaj
detaljno opisati sve ulaze i izlaze (interfejs sistema), uključujući izvore ulaza, odredišta izlaza, dozvoljene opsege i formate ulaznih i izlaznih veličina, protokole razmene podataka, vremenska ograničenja, i sl.
prikazati zahtevanu funkcionalnost pomoću ulaza i izlaza korisničkog interfejsa, uključujući provere ispravnosti ulaznih i izlaznih veličina; za sve moguće vrednosti na ulazu, mora biti poznata vrednost na izlazu; ovde se mogu koristiti različite tehnike modelovanja (konačni automati, tragovi događaja i dr.)
utvrditi usklađenost svakog zahteva sa kriterijumom koji naručilac postavlja u pogledu kvaliteta
IEEE Standrad za specifikaciju (slajd 31)
Kvalitet zahteva (slajd 32)
Procena kvaliteta se zasniva na odgovorima na pitanja:
Da li su zahtevi ispravni? (odgovaraju shvatanjima naručioca)
Da li su zahtevi dosledni? (zahtevi mogu biti istovremeno ispunjeni)
Da li su zahtevi nedvosmisleni? (više osoba isto interpretira zahteve) Primer : “...odstupanje položaja osovine je malo"
Da li su zahtevi kompletni? (uzete u obzir sve moguće kombinacije ulaza) Primer: neplaćeno odsustvo, odmor, povišica, akontacija,...
Da li su zahtevi izvodljivi? Primer: oprečni zahtevi kao jeftin sistem, brz, sa obradom velike količine podataka
Da li je svaki zahtev relevantan? Primer: simulator tenka posada šalje e mail poruke (teška realizacija)
Da li je zahteve moguće testirati? (testiranje pre realizacije softvera) Primer: test za proveru mogućeg broja korisnika
Da li zahtevi mogu da se prate? (označavanje u dokumentima)
Validacija zahteva (slajd 33)
je provera da li definicije zahteva tačno odražavaju zahteve naručioca.
Kriterijumi:
ispravnost zahteva (subjektivna procena)
doslednost zahteva (automatska procena)
nedvosmislenost zahteva (subjektivna procena)
potpunost zahteva (subjektivna procena)
relevantnost zahteva (subjektivna procena)
mogućnost praćenja zahteva (automatska procena)
Tehnike validacije (slajd 34)
čitanje dokumenata
formiranje izveštaja o uočenim greškama
prolazak kroz dokumenta
jedan od autora izlaže zahteve zainteresovanim subjektima
zainteresovani subjekti daju mišljenja i komentare
tehnika je pogodna kad ima mnogo zainteresovanih subjekata (da ne bi svi čitali pojedinačno)
formalna inspekcija
revizori se stavljaju u konkretne uloge (računovođa,...) i prate propisana pravila
ocenjivanje zahteva
po raznim aspektima
ocenjuju svi učesnici na projektu (projektanti, naručioci,...) razne aspekte: ciljeve, namenu, funkcije, rizike,...
Verifikacija specifikacije (slajd 35)
je provera da li specifikacija zahteva odgovara definiciji zahteva.
daje sigurnost da će sistem realizovan po datoj specifikaciji zadovoljiti zahteve korisnika
složen proces u kome treba dokazati da specifikacija obuhvata sve funkcije, događaje, aktivnosti i ograničenja iznete u zahtevima
često se, osim specifikacije, uključuju i pretpostavke o ponašanju okruženja
koriste se specijalizovani programi koji pretražuju prostor izvršavanja specifikacije; ovi programi su složeni i troše značajne resurse
PROJEKTOVANJE SISTEMA
Uvod
Projektovanje sistema je kreativni iterativni proces prevođenja problema u njegovo rešenje.
osnova za projektovanje: specifikacija zahteva
cilj projektovanja : generisanje rešenja koje zadovoljava potrebe naručioca
broj mogućih rešenja je obično veliki (može i beskonačno)
sva rešenja ispunjavaju isti cilj
rešenja se razlikuju po aspektima kojima posvećuju veću pažnju
projektovanjem se utvrđuje skup komponenata od kojih će biti sastavljen sistem i njihovih međusobnih vezaurse
Vrste projekata slajd 3
Metode projektovanja (slajd 4)
modularnost na nivou funkcionalnosti . Izdvajaju se komponente tako da svaka ima svoju funkcionalnost, a sve zajedno u potpunonosti opisuju funkcionalnost sistema. Za svaku komponenetu se utvrđuju: ulaz, izlaz, sadržaj, veze sa drugim komponentama.
modularnost na nivou podataka . Zasniva se na strukturama podataka. Projektant definiše globalnu strukturu podataka i opisuje kako će podaci biti korišćeni i kakve su veze među njima.
modularnost na nivou događaja . Definiše se skup mogućih stanja sistema. Uočavaju se događaji u sistemu, a onda se analizira kako oni menjaju stanje sistema.
projektovanje “spolja ka unutra”. Zasniva se na podacima koje korisnik unosi u sistem. Objašnjava se koji su podaci, šta se sa njima dešava sve do dobijanja rezultata
objektno orijentisano projektovanje . Definišu se klase objekata i njihove veze.
Modularnost (slajd 5)
Sistem je modularan ako svaku aktivnost u njemu obavlja jedna komponenta sa dobro definisanim ulazima, izlazima i osobinama
rezultat bilo koje metode je hijerarhija komponenata ili modula na više nivoa
slika slajd 5
Strategije projektovanja (slajd 6)
Projektovanje na tri nivoa (Shaw i Garlan, 1996.g.):
projektovanje arhitekture sistema . Povezuju se mogućnosti sistema iz specifikacije zahteva sa komponentama (modulima) koje će biti implementirane. Arhitektura opisuje modularnu strukturu i načine povezivanja podsistema u sistem.
projektovanje programskog kôda . Obuhvata izbor programskog jezika , struktura podataka i algoritama za obradu. Utvrđuje se skup programskih modula , procedure i funkcije u njima.
završno projektovanje . Detaljnije opisuje implementaciju kroz formate podataka, protokole, upravljanje memorijom,...
Stilovi projektovanja (slajd 7)
Stil podrazumeva strukturalnu organizaciju softverskog sistema koja uključuje izbor komponenata, definisanje njihovih uloga i međusobnih veza.
Stilovi:
cevi i filtri (slajd 8)
koriste se u sistemima baziranim na tokovima podataka
svaki korak u postupku procesiranja podataka izdvojen je u jednu filtarsku komponentu (krug na dijagramu)
filtri rade nezavisno i nisu svesni postojanja drugih filtara u sistemu
podaci prolaze kroz cevi koje povezuju filtre (linije sa strelicama)
cevi se mogu koristiti za memorisanje ili za sinhronizaciju
Primer slajd 8
Prednosti:
sistem se lako modifikuje dodavanjem novih filtara, ili uklanjanjem postojećih
filtri predstavljaju nezavisne komponente koje se lako samostalno razvijaju
filtri se mogu koristiti više puta , tj. moguće je generisati različite tokove kombinovanjem datog skupa filtara
stil omogućava konkurentno procesiranje zato što filtri rade nezavisno i obavljaju svoju funkciju kada prime potrebne podatke, ne čekajući da se svi podaci učitaju ili obrade drugim filtrima
jednostavna analiza ponašanja sistema
Mane:
podstiče se paketna obrada, pa stil nije dobar za interaktivne aplikacije
nepotrebni gubitak vremena u transformacijama podataka (na pr. ulaz tekstualni, a filtar procesira realne brojeve)
može se desiti da filtri ponavljaju pripremne funkcije drugih filtara, što utiče na pad performansi i povećanje stepena složenosti sistema (na pr. provera ispravnosti datuma)
slojevita arhitektura (slajd 11)
dekomponuje aplikaciju u više apstraktnih nivoa
svaki nivo predstavlja jedan sloj koji sadrži grupu zadataka
slojevi su hijerarhijski raspoređeni tako da svaki sloj pruža usluge sledećem višem sloju u hijerarhiji
usluge u jednom sloju implementiraju se korišćenjem usluga koje pruža prvi niži sloj u odnosu na posmatrani
Primer slika slajd 11
Prednosti:
niži slojevi mogu biti više puta korišćeni od strane različitih viših slojeva
postojanje slojeva čini lakšom standardizaciju zadataka
razvoj i testiranje jednog sloja se obavljaju nezavisno od drugih slojeva, pošto se veze (interfejsi) između slojeva ne menjaju, već se sve promene obavljaju unutar sloja
klijent-server arhitektura (slajd 13)
klijentske komponente zahtevaju usluge od servera
serverska komponenta pruža usluge većem broju
klijentskih komponenata
serveri su stalno aktivni i osluškuju da li ima
zahteva od klijenata
zahtevi se šalju komunikacionim kanalima koji zavise od mašina na kojima se server i klijent nalaze
Primeri slajd 13
prispeli zahtevi se obično opslužuju u odvojenim nitima na serveru
u komunikaciji često ima „ praznog hoda"
zbog saobraćaja na mreži
zbog neophodnog transformisanja zahteva i rezultata u formate koji su često različiti na serverskoj i klijentskog strani
u distribuiranim sistemima sa više servera koji obavljaju istu funkciju, mora se obezbediti transparentnost (primer Google pretraživač)
ravnopravan pristup (slajd 15)
može se shvatiti kao simetrična klijent server arhitektura
ista komponenta može da radi i kao klijent (zahteva usluge od drugih komponenata) i kao server (pruža usluge drugim komponentama)
komponenta može i da zadrži samo jednu funkcionalnost, bilo klijentsku ili serversku
komponenta može dinamički da menja svoju ulogu između navedene tri
Prednosti:
komponente mogu da koriste ne samo svoje, već i kapacitete kompletne mreže
administriranje je jednostavnije, zato što su ovakve mreže samoorganizujuće
skalabilan i otporan sistem na otkaze pojedinih komponenata
konfiguracija sistema se može menjati dinamički u toku rada (uključivanje i isključivanje komponenata)
Mane:
nema garancije u pogledu kvaliteta pruženih usluga, pošto komponente sarađuju na dobrovoljnoj osnovi
teško je obezbediti sigurnost mreže
performanse ovakvih sistema rastu sa povećanjem broja komponenata, ali i opadaju sa njegovim smanjenjem
arhitektura zasnovana na događajima (slajd 17)
radi na principu difuzionog emitovanja poruka
komponente (izvori događaja) šalju poruke o tome da je nastupio neki događaj na magistralu događaja
ostale komponente na magistrali mogu događajima da pridružuju procedure (registrovanje procedura)
zatim sistem poziva sve registrovane procedure
Primer slajd 17
objektno orijentisani pristup (slajd 18)
veliki broj savremenih sistema koristi delimično ili u celosti ovaj pristup
problem i njegovo rešenje se organizuju kao skup objekata kojima se opisuju ne samo podaci, već i ponašanja
pristup koristi enkapsuliranje informacija, pa mnogi projektanti posmatraju klase i objekte sa stanovišta mogućnosti njihovog ponovnog korišćenja u drugim projektima
pristup se koristi u celom procesu razvoja (definisanje zahteva, projektovanje, programiranje, testiranje)
Karakteristike:
identitet. Podaci su organizovani u diskretne celine koje se nazivaju objektima. Objekat ima ime, svoja stanja i ponašanja (na primer, objekat brana , stanja potpuno_otvorena i potpuno_zatvorena , ponašanje zvučno_upozorenje kada branu treba otvoriti).
apstrakcija. Predstavlja različite aspekte sistema . Skup apstrakcija formira hijerarhiju koja prikazuje međusobne odnose različitih pogleda na sistem.
klasifikacija. Grupisanje objekata sa zajedničkim svojstvima i ponašanjem. Jedna grupa odgovara klasi koja može da ima svojstva (atributi) i ponašanja (operacije). Načini grupisanja mogu biti različiti (na primer, avioni i bicikli zasebne grupe, ili grupa prevozna sredstva). Objekat je instanca neke klase . Svaka instanca ima svoje vrednosti atributa , a sa ostalim instancama iz klase ima samo zajednička imena atributa.
enkapsulacija. Pakovanje informacija tako da se spolja vidi ono što treba da bude vidljivo, a ostalo je sakriveno. Klasa enkapsulira atribute i ponašanja objekta skriva implementacione detalje.
nasleđivanje. Organizovanje klasa u hijerarhiju na osnovu njihovih sličnosti i razlika. Na vrhu je klasa sa opštim osobinama , koja se rafinira u specijalizovane potklase. Potklasa nasleđuje strukturu, atribute i ponašanje nadređene klase.
polimorfizam. Osobina da se isto ponašanje različito manifestuje kod različitih klasa i potklasa. Metod klase predstavlja implementaciju operacije klase. U sistemu sa polimorfizmom, više različitih metoda implementira istu operaciju.
perzistencija . Sposobnost da ime, stanje i ponašanje objekta opstanu u vremenu, tj. da se očuvaju i nakon promene objekta. Takav objekat je trajan. Ovo se koristi ukoliko se vrednost nekog atributa često menja, a potrebno je sačuvati sve njegove vrednosti.
UML MODELOVANJE
Uvod (slajd 2)
UML dijagrami - slika (slajd 3)
Slučajevi korišćenja - primer tri scenarija (slajd 4)
Sadržaj slučaja korišćenja - primer (slajd 5)
Uključeni slučajevi korišćenja - primer (slajd 6)
Dodatne informacije - saveti (slajd 7)
Učesnici (slajd 8)
Dijagram slučajeva korišćenjai - slika (slajd 9)
Nivoi slučajeva korišćenja (slajd 10)
Dijagrami klasa- model i primer klase (slajd 11)
Svojstva klase - slika (slajd 12)
Kardinalnost - primer (slajd 13)
Atributi klase - priemri (slajd 14,15)
Asocijacije - slika (slajd 16)
Operacije klase - slika (slajd 17,18)
Generalizacija - slika (slajd 19)
Zavisnosti - primer (slajd 20)
Ograničenja - primer (slajd 21)
Dijagrami sekvence - slika, primer (slajd 22,23)
PRIMER (slajd 23)
Centralizovano upravljanje - slika (slajd 24)
Distribuirano upravljanje - slika (slajd 25)
Petlje i uslovi - slika (slajd 26)
Kreiranje i brisanje učesnika - slika (slajd 27)
Dijagrami aktivnosti - slika, primer (slajd 28,29)
PRIMER (slajd 29)
Razlganje akcija - slika (slajd 30)
Specifikacija spajanja - primer (slajd 31)
Particije - slika (slajd 32)
Signali - primeri (slajd 33)
Tokovi - slika (slajd 34)
Nožice i transformacije - primer (slajd 35)
Oblast primene akcija - primer (slajd 36)
Završetak toka - primer (slajd 37)
Dijagrami komponenata - slika (slajd 38)
Komponente i klase - slika (slajd 39,40)
Artefakti - slika (slajd 41)
Interfejsi - slika (slajd 42,43)
Zavisnosti - slika (slajd 44)
Portovi i podsistemi - slika (slajd 45)
PRIMER dijagrama - slika (slajd 46)
Dijagram raspoređivanja - slika (slajd 47)
Čvorovi - slika (slajd 48,49)
Artefakti i veze - slika (slajd 50)
PRIMER dijagrama - slika (slajd 51)