Modelovanje ponašanja korišćenjem UML
dija dij aigr gra in A An n al ali zaai ma s p ec eciintera i f i terakci k ac acii j akcije i n fje in o r m ac acii o n i h s i s t em ema a dr Zoran Jeremić Jeremić
[email protected]
1
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami Konstrukcije toka
Modularnost
2
roces ces razvoj razvoja a sistema sist ema Pro Faza Fa za
Aktitivn Ak vnos ostt
Izla zlazz
Utvrđivanje poslovnih potreba
Biznis dokumenta
Intervjuisanje stejkholdera, istraživanje sistemskog okruženja
Organizovana dokumentacija
Dizajn i specifikacija
Analiza inženjerskih inženjerskih aspekata sistema, definisanje koncepata sistema
Logički model sistema
Implementacija
Programiranje, testiranje jedinica, integrisanje, dokumentovanje
Testiran estiranje je & Integracija
Resultati Integrisanje svih komponenti, verifikacija, testiranja, validacija, instalacija, obuka funkcionalan sistem
Započinjanje Započinjanje Analiza
Održavanje
Popravljanje bagova, modifikacije, adaptacija
Proverljiv sistem
Verzije sistema 3
por uka Slanje poruka
Kada jedan objekat šalje poruku drugom objektu, on poziva operaciju u pozvanom objektu.
4
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
m odelovati ati ponašanje? Zašto modelov
Kako koristimo interfejs SMS Servera? Koji je redosled izvršenja operacija?
sendMessage, getStatus, Resend?
getStatus, sendMessage, checkForMessages?
Kada koristimo operaciju resend?
6
ode elov lova anj nje e pona pon ašanja Mod Redosled akcija
Preduslovi
Efekti
• Ka Kako ko se se krei kreira ra redosled operacija
• Kad Kada a se izvrša izvršavaj vaju u operacije
• Koji je je re rezultat operacija
• Put Putanj anje e izvrš izvršenj enja: a:
• Ka Kako ko rez rezul ulta tatt operacija utiče na izvršenje
• Kako operacije menjaju stanje sistema
– Sekvencijalne Sekvencijalne – Paralelne Paralelne – Petlje
Send message
[i[iff getStatus getStatus == err] Resend
Get Status
Resend A Add ddss a new n ew msg m sg
Message queue 7
rste e dijagra dij agrama ma intera in terakci kcije je Vrst
Postoje dva tipa dijagrama interakcije:
Dijagram sekvence: • Nagla Naglašava šava redos redosled led (sekve (sekvencu) ncu) ili ili konkurentn konkurentnost ost interak interakcije cije
Dijagram kolaboracije: • Nag Naglaš lašava ava int intera erakci kciju ju obj objeka ekata ta
8
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami Konstrukcije toka
Modularnost
9
ekvenci ncijalni jalni dijagrami d ijagrami u analizi i dizajn dizajnu u Sekve
Sekvencijalni dijagrami u toku analize se razlikuju od sekvencijalnih dijagrama modelovanih u fazi dizajna u sledećem: sledećem:
Analitički dijagrami dijagrami sekvence normalno normalno ne sadrže projektne projektne objekte niti specificiraju detalje signature poruke.
10
Sekvencijalni dijagrami
Sekvencijalni dijagrami prikazuju interakciju između objekata uređenih u vremensku sekvencu. sekvencu.
Najopštija primena sekvencijalnih dijagrama je predstavljanje detaljne interakcije objekata koje se pojavljuju u jednom slučaju upotrebe ili jednoj operaciji. operaciji.
11
mešan n pri p rimer mer iz stvarnog živo ivota ta Smeša
12
Smeša mešan n prim pr ime er: se s ekv kve enci ncijalni jalni dijagra di jagrami mi
13
mešan n prim pr ime er: se s ekv kve enci ncijalni jalni dijagra di jagrami mi Smeša
14
Smeša mešan n prim pr ime er: dij dija agr gra am kolaboracij k olaboracije e
15
Kreiranje sekvencijalnog dijagrama
Sekvencijalni dijagrami predstavljaju ponašanje slučaja slučaja upotrebe koristeći kao osnovu klase. klase. Use Case 1 Class C
Class A
Use Case 3
Use Case 2 Class D Class B
Objekti
Sekvenca =
+
poruke 16
Osnovni elementi sekvencijalnog dijagrama
učesnik: objekat ili entitet koji učestvuje u učesnik: sekvencijalnom dijagramu
Sekvencijalni dijagram započinje neprikačenom strelicom “found message"
poruka: komunikacija između objekata učesnika učesnika
Ose u sekvencijalnom dijagramu:
17
horizontalna: koji objekat/učesnik vrši aktivnost aktivnost vertikalna: vreme (odozgo na dole)
Predstavlj redstavlja anje ob objeka jekata ta
Kvadrat sa tipom objekta, kome opciono može prethoditi ime objekta i dvotačka dvotačka
18
Pišite ime objekta ako doprinosi pojašnjenju dijagrama Linija života objekta predstavlja se isprekidanom vertikalnom linijom.
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
19
Različiti vrhovi strelica se koriste k oriste za normalne i konkurentne (asinhrone) metode
Različite vrste poruka
Sinhrona poruka
Asinhrona poruka
Sinhrona poruka izaziva da pozvana operacija suspenduje izvršavanje dok joj 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 oba objekta mogu da vrše obradu istovremeno.
Povratna poruka 20
inhrone one i asinh asinhrone rone poruke poru ke Sinhr Nested Nes ted Flow manager
synchronous Flow
sensor
eye
sensor
check
manager
alarm
unknown ring
check
operate
log
Primer
Primer
21
21
ivott obj o bje ekata Živo Kreiranje: nje: strelica sa • Kreira 'new' iznad nje – Objekat kreiran nakon početka scenarija se nalazi niže niže
• Brisanje: X na dnu linije života života objekta objekta – Java ne briše
eksplicitno objekte već koristi garbage collector
22
Pri rikaz kazivanje ivanje poziva p oziva metoda metod a
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 Ac ti vatio vat ion n
Nesting
23
Sekvencijalni dijagrami objekti
sd Product Buying
Ime dijagrama
p : Product
: ShooppingCart
customer
display()
poruka
getPrice()
aktivacija (fokus kontrole) Linija života
addProduct (p) checkout ()
24
Kontrola rola objeka objekata ta Kont
obj1 : Class1
obj2 : Class2
user
Kreiranje objekata
operate() do (…) create (…)
: Class3
Povratna poruka foo()
Poruke samom sebi
Destrukcije objekata
25
Odgovarajući dijagram klasa
Gde god se razmenjuju poruke između instanci klasa, postoji i zavisnost između tih klasa
Zavisnost se može zameniti asocijacijama, agregacijama i slično.
Primer
26
Sekvence i slučajevi upotrebe p : Product
: ShooppingCart
customer
display() getPrice() addProduct (p) checkout () create (…) : Order
Vidljivi idlj ivi deo
Skriveni deo
27
Att r i b u t i p o r u k e A [ seq sequencece- expr xpr essi on] [ r et ur n- val ue : =] [ messag ssage- name] [ ( ar gument - l i st ) ]
C3.1: res := getLocation (fig)
Broj sekvence
Ime poruke
Povratna vrednost
Lista argumenata
28
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami Konstrukcije toka
Modularnost
29
Kolaborativni dija dij agrami
Služe za prikaz složenijih interakcija između objekata i njihove međusobne povezanosti. povezanosti.
Fokusira se na kolaboracionoj strukturi i organizaciji između objekata. objekata.
Modeluje link između objekata objekata
Sastoji se od objekata, linkova, poruka
30
Kolaborativni dijagra m di jagram
1: odlaz odla zak
2: biras model prodavnica
6: kupovina
model 4: vraca vraca mo model del
: kupac 5: vrati vrati cipe cipele le 3: biras broj
broj
31
Kolaborativni dijagra m di jagram
32
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami Konstrukcije toka
Modularnost
33
Konstrukcije e toka Konstrukcij
If Loop ElseRepeat Jump
Kada kreiramo scenario, koje alternative su nam potrebne?
34
Opcije
msg : Message
: Database
Fragment
opt
[msg.status=confirmed]
Uslov
archive(msg)
Do something...
Koristi se za modelovanje jednostavnih opcionih opcionih blokova. Ima jedan operand i nema “else”
opciju.
35
All t er ern n at atii v e A msg : Message
: Database
: Admin
alt
[msg.status=confirmed] archive(msg)
Alternativa Grupa fragmenta
Uslov [msg.status=error] notify(msg.getID())
[else] wait()
Else uslov (opcioni)
Regioni izvršenja. Najviše jedan će se izvršiti izvršiti..
36
Petlja : OS
: Folder
: File
loop
Fragment petlje
[for each each Folder] Display()
loop [for ea each ch File]
Uslov Ugnježdeni fragment petlje
Display()
37
Preki kidi di (brea (break) k) Pre : User
: User Manager
: Policy
isLooged = login(name,pass)
Ukoliko je uslov ispunjen, fragment prekida se izvršava, a ostatak sekvence se ignoriše.
break [ isLooged] ¬
addBadLogin(name)
Do something…
Do something …
38
uslo va Primeri definisanja uslova
[for each Object]
[5]
[i=1..5] [status = okay]
Nepostojanje uslova znači beskonačnu petlju petlju
39
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami Konstrukcije toka
Modularnost
40
MODULARNOST Potrebno je pronaći načine za kreiranje modularnih scenarija
41
Referenciranje dijagrama : User
: User Manager
login(name,pass)
ref
: Policy
Login Handling(user,pass) : bool
Referenca Gate
Do something…
Do something …
42
Referenciranje dijagrama Ime dijagrama
sd Login Handling : User Manager
: UserAccount
loop
Input poruka
login(name,pass)
[for each UserAccount] UserAccount] cName -= getUseNamer()
opt
Output poruka
[cName = name] isInSystem(true) true
false
43
Primer: Funkcionisanje bankomata
• Korisnik unosi karticu u ATM • ATM zahteva zahteva PIN PIN • Korisnik unosi PIN proverava sistem sistem • Uneti PIN proverava banke
• Sistem vraća poruku o validnosti ATM sistemu sistemu
• ATM nudi korisniku opcije • Korisnik bira podizanje novca novca
• ATM zahteva unos iznosa
44
Lo gon scena s cenario rio Primer: Logon • Klije Klijent nt zahte zahteva va Logo Logon n (reque (requestL stLogo ogon() n())) sa SecurityLogon interfejsa koji zatim prikazuje Logon ekran (displayLogonScreen()) • Kl Klije ijent nt unosi unosi nam name, e, pass pass u Log LogonS onScre creenen-u 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 n aziv postoji u bazi (isInDatabase(name) u Sistemu (System) Sistem vraća tip korisnika (userType) (userType) AccountDB vraća info o validnosti (valid) (valid) Interfejs SecurityLogon prikazuje poruku o grešci (displayErrorMessage()) Ponovo otvara tj. prikazuje Logon ekran (displayLogonScreen())
• Se Secu curi rityL tyLog ogon on prov prover erav ava a uslov uslov:: Ukoliko je [userType==admin] onda prikazuje Admin (displayAdmin()) Ukoliko je [userType==user] onda prikazuje user-a (displayUser())
45
datak: k: sport sp ortska ska kladionica kladion ica Zadata
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. kvota.
46
Rešenje šenje - sekvenci sekvencijalni jalni dij dija agr gra am Re
47
Rešenje šenje kol kola abo borativn rativnii dijagram dij agram Re
48
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 Ukolik o 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
50