t 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija

Post on 20-May-2015

846 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Modelovanje ponašanja korišćenjem UML dijagrama interakcije Analiza i specifikacija informacionih sistema

dr Zoran Jeremić zoran.jeremic@gmail.com

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

top related