3. Proces razvoja sistema
Faza Aktivnost Izlaz
Biznis
Započinjanje Utvrđivanje poslovnih potreba
dokumenta
Intervjuisanje stejkholdera, istraživanje Organizovana
Analiza sistemskog okruženja dokumentacija
Dizajn i Analiza inženjerskih aspekata sistema, Logički model
specifikacija definisanje koncepata sistema sistema
Programiranje, testiranje jedinica, Proverljiv
Implementacija integrisanje, dokumentovanje sistem
Resultati
Testiranje & Integrisanje svih komponenti, verifikacija, testiranja,
Integracija validacija, instalacija, obuka funkcionalan
sistem
Popravljanje bagova, modifikacije,
Održavanje adaptacija
Verzije sistema
3
4. Slanje poruka
Kada jedan objekat šalje poruku drugom objektu, on
poziva operaciju u pozvanom objektu.
4
5. Zadatak modela interakcije
Osnovni zadatak modela interakcije je definisanje
najpogodnijeg načina komunikacije između objekata da
bi se podržao svaki zahtev posebno.
Interakcija sadrži skup parcijalno uređenih poruka gde
svaka poruka specificira jednu komunikaciju (signal koji
treba poslati ili operacija koju treba pozvati).
5
6. Zašto modelovati ponašanje?
Kako koristimo interfejs SMS Servera? Koji je redosled
izvršenja operacija?
sendMessage, getStatus, Resend?
getStatus, sendMessage, checkForMessages?
Kada koristimo operaciju resend?
6
7. Modelovanje ponašanja
Redosled akcija Preduslovi Efekti
• Kako se kreira • Kada se izvršavaju • Koji je rezultat
redosled operacija operacije operacija
• Putanje izvršenja: • Kako rezultat • Kako operacije
– Sekvencijalne operacija utiče na menjaju stanje
– Paralelne izvršenje sistema
– Petlje
Send message [if getStatus == err]
Resend
Resend
Get Status Adds a new msg
Message queue
7
8. Vrste dijagrama interakcije
Postoje dva tipa dijagrama interakcije:
Dijagram sekvence:
• Naglašava redosled (sekvencu) ili konkurentnost interakcije
Dijagram kolaboracije:
• Naglašava interakciju objekata
8
10. Sekvencijalni dijagrami u analizi i dizajnu
Sekvencijalni dijagrami u toku analize se razlikuju od
sekvencijalnih dijagrama modelovanih u fazi dizajna u
sledećem:
Analitički dijagrami sekvence normalno ne sadrže projektne
objekte niti specificiraju detalje signature poruke.
10
11. Sekvencijalni dijagrami
Sekvencijalni dijagrami prikazuju interakciju između
objekata uređenih u vremensku sekvencu.
Najopštija primena sekvencijalnih dijagrama je
predstavljanje detaljne interakcije objekata koje se
pojavljuju u jednom slučaju upotrebe ili jednoj operaciji.
11
16. Kreiranje sekvencijalnog dijagrama
Sekvencijalni dijagrami predstavljaju ponašanje slučaja
upotrebe koristeći kao osnovu klase.
Use Case 1
Class C
Class A
Use Case 3
Use Case 2
Class D
Class B
Sekvenca = Objekti + poruke
16
17. Osnovni elementi sekvencijalnog dijagrama
učesnik: objekat ili entitet koji učestvuje u
sekvencijalnom dijagramu
Sekvencijalni dijagram započinje neprikačenom strelicom “found
message"
poruka: komunikacija između objekata učesnika
Ose u sekvencijalnom dijagramu:
horizontalna: koji objekat/učesnik vrši aktivnost
vertikalna: vreme (odozgo na dole)
17
18. Predstavljanje objekata
Kvadrat sa tipom objekta, kome opciono može prethoditi
ime objekta i dvotačka
Pišite ime objekta ako doprinosi pojašnjenju dijagrama
Linija života objekta predstavlja se isprekidanom vertikalnom
linijom.
18
19. Poruke između objekata
poruka (poziv metode) predstavlja se horizontalnom linijom prema
drugom objektu
Pišite ime poruke i argument iznad strelice
Isprekidana strelica nazad označava povratnu poruku
Različiti vrhovi strelica se koriste za normalne i konkurentne (asinhrone)
metode
19
20. Različite vrste poruka
Sinhrona poruka izaziva da pozvana
operacija suspenduje izvršavanje dok joj
Sinhrona poruka se fokus kontrole ne vrati.
Asinhrona poruka ne izaziva prekid
izvršenja dok se čeka na povratak. Kada
se pošalje asinhrona poruka, operacije u
Asinhrona poruka oba objekta mogu da vrše obradu
istovremeno.
Povratna poruka
20
21. Sinhrone i asinhrone poruke
Nested Flow Asynchronous Flow
manager sensor eye sensor manager alarm
check unknown
check ring
operate log
Primer Primer
21
22. Život objekata
• Kreiranje: strelica sa
'new' iznad nje
– Objekat kreiran nakon
početka scenarija se
nalazi niže
• Brisanje: X na dnu
linije života objekta
– Java ne briše
eksplicitno objekte već
koristi garbage
collector
22
23. Prikazivanje poziva metoda
aktivacija: pravougaonik iznad linije života objekta; crta
se kada se metoda objekta izvršava ili je u steku
Objekat izvršava svoj kod, ili je u steku i čeka drugu metodu da
se završi
Ugnježdavanjem se prikazuje rekurzija
Activation
Nesting
23
24. Sekvencijalni dijagrami
objekti
sd Product Buying
Ime
dijagrama p : Product : ShooppingCart
customer
display()
poruka
getPrice()
aktivacija addProduct (p)
(fokus
checkout ()
kontrole)
Linija
života
24
25. Kontrola objekata
obj1 : Class1 obj2 : Class2
user
operate() Kreiranje
objekata
do (…)
create (…)
: Class3
Povratna
poruka
foo()
Poruke
samom sebi Destrukcije
objekata
25
26. Odgovarajući dijagram klasa
Gde god se razmenjuju
poruke između instanci Zavisnost se može
klasa, postoji i zavisnost zameniti
između tih klasa asocijacijama,
agregacijama i
slično.
Primer
26
27. Sekvence i slučajevi upotrebe
p : Product : ShooppingCart
customer
display()
getPrice()
addProduct (p)
checkout ()
create (…)
: Order
Vidljivi deo Skriveni deo
27
30. Kolaborativni dijagrami
Služe za prikaz složenijih interakcija između objekata i
njihove međusobne povezanosti.
Fokusira se na kolaboracionoj strukturi i organizaciji
između objekata.
Modeluje link između objekata
Sastoji se od objekata, linkova, poruka
30
31. Kolaborativni dijagram
1: odlazak 2: biras model
prodavnica
model
6: kupovina 4: vraca model
: kupac
5: vrati cipele
3: biras broj
broj
31
34. Konstrukcije toka
If Loop
ElseRepeat
Jump
Kada kreiramo scenario, koje alternative su nam
potrebne?
34
35. Opcije
msg : Message : Database Fragment
opt
[msg.status=confirmed]
Uslov
archive(msg)
Do something... Koristi se za
modelovanje
jednostavnih opcionih
blokova. Ima jedan
operand i nema “else”
opciju. 35
36. Alternative
msg : Message : Database : Admin
alt
[msg.status=confirmed]
Alternativa
archive(msg) Grupa fragmenta
Uslov
[msg.status=error]
notify(msg.getID())
[else]
wait()
Regioni izvršenja. Najviše
Else
jedan će se izvršiti.
uslov
(opcioni)
36
37. Petlja
: OS : Folder : File
loop
[for each Folder]
Fragment Display()
petlje
loop
[for each File]
Display()
Uslov
Ugnježdeni
fragment
petlje
37
38. Prekidi (break)
: User : User Manager : Policy
isLooged = login(name,pass)
break Ukoliko je uslov
ispunjen, fragment
[¬isLooged]
addBadLogin(name) prekida se izvršava, a
ostatak sekvence se
ignoriše.
Do something…
Do something …
38
44. Primer: Funkcionisanje bankomata
• Korisnik unosi karticu u ATM
• ATM zahteva PIN
• Korisnik unosi PIN
• Uneti PIN proverava sistem
banke
• Sistem vraća poruku o
validnosti ATM sistemu
• ATM nudi korisniku opcije
• Korisnik bira podizanje
novca
• ATM zahteva unos iznosa
44
45. Primer: Logon scenario
• Klijent zahteva Logon (requestLogon()) sa
SecurityLogon interfejsa koji zatim prikazuje
Logon ekran (displayLogonScreen())
• Klijent unosi name, pass u LogonScreen-u
• Izvršava se petlja pod sledećim uslovom
[while valid==false]:
Interfejs SecurityLogon šalje na proveru user i pass
(isValid(name, pass)) ka bazi account-a
(AccountDB)
AccountDB proverava da li naziv postoji u bazi
(isInDatabase(name) u Sistemu (System)
Sistem vraća tip korisnika (userType)
AccountDB vraća info o validnosti (valid)
Interfejs SecurityLogon prikazuje poruku o grešci
(displayErrorMessage())
Ponovo otvara tj. prikazuje Logon ekran
(displayLogonScreen())
• SecurityLogon proverava uslov:
Ukoliko je [userType==admin] onda prikazuje Admin
(displayAdmin())
Ukoliko je [userType==user] onda prikazuje user-a
(displayUser())
45
46. Zadatak: sportska kladionica
Nacrtati UML sekvencijalni i kolaborativni dijagram za
slučaj upotrebe popunjavanje tiketa za sportsko klađenje
koji popunjava radnik sportske kladionice. Bitni koncepti
koje je potrebno uzeti u obzir su tip klađenja i kvota.
46
49. Primer: Slučaj upotrebe „Upis godine“ u IS studentske
službe
Učesnik u ovom slučaju upotrebe je radnik studentske službe koji pokreće
formu IS (klasa Forma) kako bi izvršio upis određenog studenta u narednu
godinu. Od radnika se traži da unese broj indeksa za studenta koga želi da
upiše u narednu godinu. Nakon unosa broja indeksa, Sistem vrši proveru da
li postoji student u bazi podataka. Ukoliko student ne postoji u bazi
podataka, radniku se prosleđuje poruka o grešci. Ukoliko student postoji u
bazi, Sistem traži u bazi podataka podatke o položenim ispitima za datog
studenta, nakon čega vrši proveru broja nepoloženih ispita. Ukoliko je broj
nepoloženih ispita veći od 2, sistem vraća poruku korisniku o nepostojanju
uslova za upis naredne godine. Ukoliko broj nepoloženih ispita nije veći od
2, Sistem upisuje studenta u narednu godinu u bazi podataka, a korisniku
se vraća poruka o tome. Osim toga, ukoliko je student položio sve ispite pre
01.09. u bazu podataka student se automatski upisuje na budžet, a radniku
se šalje potvrda o tome.
Napraviti dijagram sekvence za navedeni primer
Napraviti dijagram kolaboracije (dijagram komunikacije)
49