Upload
zoran-jeremic
View
846
Download
2
Embed Size (px)
Citation preview
Modelovanje ponašanja korišćenjem UML dijagrama interakcije Analiza i specifikacija informacionih sistema
dr Zoran Jeremić [email protected]
1
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami
Konstrukcije toka
Modularnost
2
Proces razvoja sistema
Faza Aktivnost Izlaz
Započinjanje Utvrđivanje poslovnih potreba Biznis dokumenta
Analiza Intervjuisanje stejkholdera, istraživanje sistemskog okruženja
Organizovana dokumentacija
Dizajn i specifikacija
Analiza inženjerskih aspekata sistema, definisanje koncepata sistema
Logički model sistema
Implementacija Programiranje, testiranje jedinica, integrisanje, dokumentovanje
Proverljiv sistem
Testiranje & Integracija
Integrisanje svih komponenti, verifikacija, validacija, instalacija, obuka
Resultati testiranja, funkcionalan sistem
Održavanje Popravljanje bagova, modifikacije, adaptacija Verzije sistema
3
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
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
Modelovanje ponašanja
7
Redosled akcija • Kako se kreira
redosled operacija • Putanje izvršenja:
– Sekvencijalne – Paralelne – Petlje
Preduslovi • Kada se izvršavaju
operacije • Kako rezultat
operacija utiče na izvršenje
Efekti • Koji je rezultat
operacija • Kako operacije
menjaju stanje sistema
Send message
Get Status Resend
[if getStatus == err]
Resend
Message queue
Adds a new msg
Vrste dijagrama interakcije
Postoje dva tipa dijagrama interakcije: Dijagram sekvence:
• Naglašava redosled (sekvencu) ili konkurentnost interakcije Dijagram kolaboracije:
• Naglašava interakciju objekata
8
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami
Konstrukcije toka
Modularnost
9
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
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
Smešan primer iz stvarnog života
12
Smešan primer: sekvencijalni dijagrami
13
Smešan primer: sekvencijalni dijagrami
14
Smešan primer: dijagram kolaboracije
15
Kreiranje sekvencijalnog dijagrama
Sekvencijalni dijagrami predstavljaju ponašanje slučaja upotrebe koristeći kao osnovu klase.
16
Class A Class C
Class B Class D
Use Case 1
Use Case 2 Use Case 3
Sekvenca = Objekti + poruke
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)
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.
19
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
Poruke između objekata
Različite vrste poruka
Sinhrona poruka
Asinhrona poruka
Povratna 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.
20
Sinhrone i asinhrone poruke
sensor alarm
Asynchronous Flow
unknown
ring
unknown
log
Primer
manager sensor eye
Nested Flow
check
check
operate
manager
Primer
21
Ž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
Sekvencijalni dijagrami
p : Product : ShooppingCart
addProduct (p)
customer display()
getPrice()
checkout ()
sd Product Buying objekti
poruka
Linija života
aktivacija (fokus
kontrole)
Ime dijagrama
24
Kontrola objekata
obj1 : Class1 obj2 : Class2
do (…)
: Class3 create (…)
obj1 : Class1
user operate() Kreiranje
objekata
Destrukcije objekata
Povratna poruka
foo() Poruke
samom sebi
25
Primer
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.
26
Sekvence i slučajevi upotrebe
p : Product : ShooppingCart
addProduct (p)
: Order create (…)
customer display()
getPrice()
checkout ()
Skriveni deo Vidljivi deo
27
Atributi poruke
C3.1: res := getLocation (fig)
Broj sekvence
Povratna vrednost Ime poruke Lista argumenata
[sequence-expression] [return-value :=] [message-name] [(argument-list)]
28
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami
Konstrukcije toka
Modularnost
29
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
Kolaborativni dijagram
: kupac
prodavnica model
broj
1: odlazak
6: kupovina
2: biras model
4: vraca model
3: biras broj5: vrati cipele
31
Kolaborativni dijagram
32
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami
Konstrukcije toka
Modularnost
33
Konstrukcije toka
Kada kreiramo scenario, koje alternative su nam potrebne?
If Else Loop
Repeat Jump 34
Opcije
archive(msg)
msg : Message : Database
opt
Do something...
[msg.status=confirmed]
Fragment
Uslov
Koristi se za modelovanje jednostavnih opcionih blokova. Ima jedan operand i nema “else” opciju.
35
Alternative
archive(msg)
msg : Message : Database
Uslov
: Admin
alt
notify(msg.getID())
wait()
[msg.status=confirmed]
[msg.status=error]
[else]
Else uslov (opcioni)
Alternativa Grupa fragmenta
Regioni izvršenja. Najviše jedan će se izvršiti.
36
Petlja
Display()
: OS : Folder : File
loop
loop
Display()
[for each Folder]
[for each File]
Fragment petlje
Uslov
Ugnježdeni fragment petlje
37
Prekidi (break)
isLooged = login(name,pass)
: User : User Manager : Policy
addBadLogin(name)
break
[¬isLooged]
Do something…
Do something …
Ukoliko je uslov ispunjen, fragment prekida se izvršava, a ostatak sekvence se ignoriše.
38
Primeri definisanja uslova
[for each Object]
[5]
[i=1..5]
[status = okay]
Nepostojanje uslova znači beskonačnu petlju
39
Sadržaj
Uvod
Sekvencijalni dijagrami
Kolaborativni dijagrami
Konstrukcije toka
Modularnost
40
MODULARNOST
41
Potrebno je pronaći načine za kreiranje modularnih scenarija
Referenciranje dijagrama
login(name,pass)
: User : User Manager : Policy
Login Handling(user,pass) :
bool
ref
Do something…
Do something …
Referenca Gate
42
Referenciranje dijagrama
: User Manager : UserAccount
sd Login Handling
loop
cName -= getUseNamer()
[for each UserAccount] login(name,pass)
opt
[cName = name]
cName -= getUseNamer()
isInSystem(true) true
false
Ime dijagrama
Input poruka
Output poruka
43
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
Primer: Logon scenario
45
• 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())
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
Rešenje - sekvencijalni dijagram
47
Rešenje kolaborativni dijagram
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 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
51