Diagrame de interactiune - Home - Cursuri Automatica...
Click here to load reader
-
Upload
nguyentuyen -
Category
Documents
-
view
217 -
download
0
Transcript of Diagrame de interactiune - Home - Cursuri Automatica...
Diagrame de interactiune
Cazurile de utilizare constituie o descriere funcţională a cerinţelor,
structurată în raport cu unul sau mai mulţi actori.
Trecerea către o structurare obiect se realizează asociind o "colaborare"
fiecărui scenariu. Colaborarea evidenţiază obiectele domeniului,
conexiunile dintre aceste obiecte şi mesajele schimbate de către obiecte în
cadrul scenariului.
Scenariile, care au fost întocmite la începutul etapei de analiză, sunt
reprezentate în continuare prin diagrame de interacţiune: diagrame de
colaborare şi diagrame de secvenţă.
o Diagramele de colaborare redau relatiile structurale dintre obiecte
si mesajele prin care ele comunica.
o Diagramele de secventa evidentiaza ordonarea in timp a mesajelor.
Diagramele de interactiune includ actori, obiecte sau componente implicate intr-o
interactiune si redau mesajele schimbate in cursul interactiunii.
Obiecte
Un obiect este un concept, o abstracţie sau un lucru având limite foarte clare şi
un sens precis în contextul problemei studiate. Fiecare obiect are o identitate şi
poate fi distins de celelalte.
In UML, un obiect se reprezintă sub forma unui dreptunghi conţinând numele
obiectului si clasa din care face parte sau numai numele obiectului, subliniat(e).
De exemplu:
Mihai : Persoana Mihai IBM: Calculator
1
Notaţia permite de asemenea desemnarea de obiecte anonime, specificand
numai numele clasei din care face parte. De exemplu:
:Student :Profesor
Comportamentul unui obiect, ca urmare a unei stimulări externe, este
reprezentat prin operaţii.
Operaţiile unui obiect sunt declanşate prin mesaje trimise de alte obiecte.
Diagramele de secventa
Diagramele de secvenţă ilustrează interacţiunile dintre obiecte sau actori si
obiecte din punct de vedere temporal. Un obiect este reprezentat printr-un
dreptunghi şi o bară verticală numită linia de via ţă a obiectului . Mesajele sunt
reprezentate prin săgeţi orizontale orientate de la emiţătorul mesajului către
destinatar. Ordinea de trimitere este dată de poziţia pe axa verticală. Timpul se
scurge de sus în jos. Axa verticală poate fi gradată în scopul exprimării mai
exacte a constrângerilor temporale în cazul modelării unui sistem de timp real.
Deschide telefonul
Ton
Formează numar
Indicator de sonerie Sună
Deschide telefonul
Alo
Diagramă de secvenţă
2
:Apelant :Linie telefonica :Apelat
Diagramele de secven ţă se construiesc plecand de la cazurile de utilizare . Ele se
pot folosi în două scopuri, care corespund la doua nivele diferite ale procesului
de dezvoltare:
1) Ca mijloc de documentare a cazurilor de utilizare ; interacţiunea este descrisă
în termeni apropiaţi utilizatorului şi fără a intra în detalii de sincronizare.
Săgeţile corespund evenimentelor care survin în domeniul aplicaţiei. De
exemplu, diagrama din figura anterioara reprezintă începutul unei comunicaţii
telefonice.
2) Ca mijloc de reprezentare exact ă a mesajelor schimbate î ntre obiecte .
Perioada de activitate a unui obiect este reprezentat ă cu ajutorul unei benzi
rectangulare suprapuse pe linia de via ţă a obiectului.
In exemplul din figura urmatoare, obiectul 1 apeleaza o operatie a obiectului
2. Obiectul 2 creaza obiectul 3 care exista pana cand este distrus tot de
obiectul 2. Obiectul 3 apeleaza o operatie proprie.
Apel operatie Obiect2 <<creaza>>
intoarcere dupa exec. operatie
Apeluri de operatii, crearea si distrugerea obiectelor.
3
:Obiect1 :Obiect2
:Obiect3
Sagetile se folosesc pentru a reprezenta mesaje care corespund unui apel de
proceda intr-un flux de executie cu un singur fir de executie.
UML permite si reprezentarea de mesaje intre obiecte care sunt active in
fire de executie diferite. Intre astfel de obiecte pot fi trimise mesaje
sincrone sau asincrone.
Atunci cand un obiect trimite un mesaj sincron, el ramane in asteptare pana cand
destinatarul trateaza mesajul. De aceea, revenirea dupa tratarea unui mesaj
sincron nu este necesar sa fie reprezentata.
Un apel de procedura este un apel sincron. De aceea nici revenirea dupa
executia unei proceduri nu este reprezentata intotdeauna.
Trimiterea asincrona a unui mesaj nu întrerupe execuţia expeditorului.
Expeditorul trimite mesajul fără sa stie când, nici chiar dacă mesajul va fi tratat de
către destinatar. In figura urmatoare este redata si confirmarea destinatarului
dupa tratarea mesajului.
4
Apel cu timeout.
Trimitere mesaj cu timeout = trimitere sincrona cu blocarea expeditorului pe un
timp limitat (care poate fi specificat). Expeditorul asteapta ca destinatarul sa
primeasca mesajul un timp limitat. Comunicatia nu are loc daca in intervalul de
timp dat destinatarul nu ia in considerare mesajul.
Scopul unui mesaj asincron poate fi:
- Crearea unui obiect nou
- Crearea unui fir de executie
- Comunicarea cu un fir de executie existent
Alegerea formei de sincronizare are loc de regulă în etapa de proiectare, pentru a
realiza de exemplu o excludere mutuală în utilizarea unei resurse critice. Forma
de sincronizare poate fi importantă de asemenea în etapa de analiza. De
exemplu, comunicaţia prin poştă corespunde unei trimiteri asincrone.
Mihai Monica Scrisoare prin poştă
Diagramele de secventa redau modul de transfer al controlului intre obiecte:
5
Control centralizat
Control descentralizat
Pentru a indica bucle şi salturi se pot adăuga notaţii de tip pseudocod pe partea
stângă a diagramei:
6
A B C D
A B C D
while [X] loop
end loop
Iteraţie.
if X mesaj 1
else mesaj 2
end if
sau
[X]
[not X]
Decizie.
7
A B C
A B
A B C
Diagrama de secventa cu mesaje asincrone
O asistenta medicala trimite 2 mesaje asincrone: catre laboratorul medical, pentru a rezerva o data pentru un test, si catre o societate de asigurari, pentru
aprobarea testului. Ordinea in care sunt trimise cele 2 mesaje nu este
importanta. Daca societatea de asigurari aproba testul, atunci asistenta
planifica testul la data furnizata de laboratorul medical. Reprezentarea
intoarcerii dupa tratarea mesajului asincron nu este obligatorie.
Diagrame de colaborare
Diagramele de colaborare sunt în particular indicate pentru faza exploratorie,
care corespunde căutării obiectelor. Ele ilustrează în acelaşi timp interacţiuni între
obiecte şi relaţiile structurale care permit aceste interacţiuni.
8
Relatiile structurale sunt reprezentate prin “legaturi” – linii care conecteaza
obiectele.
Mesajele schimbate între obiecte sunt reprezentate de-a lungul legăturilor.
Ordinea de trimitere a diferitelor mesaje este indicată printr-un număr
amplasat in fata mesajului, ca în figura urmatoare:
1:X
3:Z
2:Y
“Scenariul incepe cu un obiect A care trimite un mesaj X unui obiect B. Acesta trimite un mesaj Y obiectului C care-si trimite un mesaj Z.”
{nou}
Obiectele şi legăturile create sau distruse în cursul unei interacţiuni pot purta
constrângerile {nou}, respectiv {distrus}. Obiectele care sunt create şi distruse în
cursul aceleiaşi interacţiuni sunt identificate prin constrângerea {tranzitoriu}.
9
A
B
C {tranzitoriu}
B
A
C
D{distrus}
Pentru a indica trimiterea in mod repetat a unui mesaj, se utilizeaza caracterul *
in fata mesajului. De exemplu, in figura urmatoare s-a reprezentat trimiterea unui
mesaj către toate obiectele unei clase, existente la un moment dat:
:X *: mesaj
:Y
In diagramele de colaborare pot fi introduşi actori, pentru a reprezenta
declanşarea interacţiunilor de către un element extern sistemului. Datorită acestui
artificiu, interacţiunea poate fi descrisă într-o manieră mai abstractă, fără a se intra
în detaliile obiectelor de interfaţă utilizator. Primul mesaj de interacţiune este
trimis de actor. Un exemplu este prezentat in figura urmatoare:
1: Apel la al doilea etaj
2: Adaugă destinaţia al doilea etaj
Figura urmatoare reda o posibila diagrama de colaborare, corespunzatoare unui
scenariu al cazului de utilizare „Imprumut”. Scenariul corespunde secventei tipice
de evenimente a cazului de utilizare, adica: utilizatorul este inregistrat ca abonat,
el nu a imprumutat numarul maxim admis de carti, cartea este gasita si
imprumutul inregistrat. Obiectele redate in diagrama sunt: “Fereastra-Abonati”, in
care utilizatorul completeaza datele necesare imprumutului, “Sistem”-
reprezentand modulul central al sistemului, “Fisierul de abonati”, “Fisele
10
:Cabina
:Ascensor
X
abonatilor”, “Fisierul de carti”, “Fisele cartilor” si “Fereastra-mesaj” in care
sistemul afiseaza datele necesare imprumutului.
Diagrama de colaborare
Echivalenta diagrame de interactiune – diagrame de colaborare
Cele doua categorii de diagrame reprezinta vederi diferite asupra aceleiasi
informatii.
In cazul diagramelor de secventa accentul este pus pe secventialitatea
mesajelor.
In cazul diagramelor de colaborare accentul cade pe colaborarile dintre
obiecte.
Formele grafice utilizate in cadrul fiecarei categorii de diagrame accentueaza
aceste aspecte.
11
Numeroase editoare UML permit conversia automata de la o diagrama de
secventa la cea de colaborare corespunzatoare sau invers.
Figura urmatoare reda sablonul de proiectare „Subiect-observator” printr-o
diagrama de secventa si prin diagrama de colaborare echivalenta:
s:Subject o1:Observer o2:Observer
2: attach(o2)1: attach(o1)
3: Notify
4: update()5: getState()
6: update()
7: getState()
s:Subject
o1:Observer
o2:Observer
1: attach(o1)
2: attach(o2)
3: Notify4: update()
5: getState()
6: update()
7: getState()
12
Un alt exemplu:
Urmatoarea diagrama reda secventa de operatii pentru rezervarea unei camere
de hotel. Obiectul care initiaza secventa de mesaje este o fereastra de rezervare.
Fereastra de rezervare trimite mesajul makeReservation() unui obiect HotelChain, care trimite mesajul makeReservation() unui obiect Hotel. Daca obiectul Hotel are
camere disponibile, atunci el face o Rezervare si o Confirmare.
In aceasta diagrama mesajele sunt reprezentate prin apeluri de operatii din
clasele obiectelor participante.
13
Semnul * din fata apelului propriu available() inseamna iteratie. Expresia dintre []
este o conditie. Diagrama contine si o nota explificativa. Astfel de note pot fi
incluse in orice diagrama UML.
Diagrama de colaborare echivalenta:
Ordinea mesajelor este indicata prin secvente de numere: mesajele de la acelasi
nivel (trimise in timpul aceluiasi apel) au acelasi prefix, sufixele indicand
secventa in care au loc.
Diagramele de interactiune in UML 2 sunt:
- Diagrame de secventa
14
- Diagrame de comunicare, care corespund diagramelor de colaborare din
versiunile anterioare
- Diagrame de evolutie in timp (Timing diagrams)
- Diagrame de interactiune generale – descriu fluxul controlului intr-o
maniera generala. Utilizeaza notatii specifice diagramelor de activitate
Diagrama de secventa in UML 2.
Diagramele de comunicare, permit specificarea unei comunicari in
descrierea unei alte comunicari, ceea ce conduce la reutilizarea comportarilor.
15
Diagrama de comunicare
16
Diagrama de comunicare care refera colaborarea “getPerformances”.
O diagrama de evolutie in timp (Timing diagram) reda derularea in timp a unei
activitati cu constrangeri de timp (in care timpul este un element critic). Diagrama
cuprinde: o linie de viata, starile in timp, constrangeri de durata, schimbarile de
stare, mesaje sau evenimente, linia timpului. Figura reda inregistrarea la un curs
intr-o universitate.
17
UML 2 Timing diagram
18
19