Sunteți pe pagina 1din 18

Diagrame de interactiune

Cazurile de utilizare constituie o descriere funcional a cerinelor,


structurat n raport cu unul sau mai muli actori.

Trecerea ctre o structurare obiect se realizeaz asociind o "colaborare"


fiecrui

scenariu.

Colaborarea

evideniaz

obiectele

domeniului,

conexiunile dintre aceste obiecte i mesajele schimbate de ctre obiecte n


cadrul scenariului.

Scenariile, care au fost ntocmite la nceputul etapei de analiz, sunt


reprezentate n continuare prin diagrame de interaciune: 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 abstracie sau un lucru avnd 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 coninnd numele
obiectului si clasa din care face parte sau numai numele obiectului, subliniat(e).
De exemplu:
Mihai : Persoana

Mihai

IBM: Calculator
1

Notaia 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 stimulri externe, este


reprezentat prin operaii.
Operaiile unui obiect sunt declanate prin mesaje trimise de alte obiecte.

Diagramele de secventa
Diagramele de secven ilustreaz interaciunile 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 sgei orizontale orientate de la emitorul mesajului ctre
destinatar. Ordinea de trimitere este dat de poziia pe axa vertical. Timpul se
scurge de sus n jos. Axa vertical poate fi gradat n scopul exprimrii mai
exacte a constrngerilor temporale n cazul modelrii unui sistem de timp real.

:Apelant

:Linie telefonica

:Apelat

Deschide telefonul
Ton
Formeaz numar
Indicator de sonerie

Sun
Deschide telefonul

Alo

Diagram de secven

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; interaciunea este descris
n termeni apropiai utilizatorului i fr a intra n detalii de sincronizare.
Sgeile corespund evenimentelor care survin n domeniul aplicaiei. De
exemplu, diagrama din figura anterioara reprezint nceputul unei comunicaii
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.

:Obiect2

:Obiect1

:Obiect3
Apel operatie Obiect2

<<creaza>>

intoarcere dupa exec. operatie

Apeluri de operatii, crearea si distrugerea obiectelor.

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 execuia expeditorului.
Expeditorul trimite mesajul fr sa stie cnd, nici chiar dac mesajul va fi tratat de
ctre destinatar. In figura urmatoare este redata si confirmarea destinatarului
dupa tratarea mesajului.

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, comunicaia prin pot corespunde unei trimiteri asincrone.

Mihai

Monica
Scrisoare prin pot

Diagramele de secventa redau modul de transfer al controlului intre obiecte:

Control centralizat

Control descentralizat

Pentru a indica bucle i salturi se pot aduga notaii de tip pseudocod pe partea
stng a diagramei:

A
while [X] loop

end loop
Iteraie.

A
if X

mesaj 1

else

mesaj 2

end if

sau

[X]

[not X]

Decizie.

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 cutrii obiectelor. Ele ilustreaz n acelai timp interaciuni ntre
obiecte i relaiile structurale care permit aceste interaciuni.

Relatiile structurale sunt reprezentate prin legaturi linii care conecteaza


obiectele.
Mesajele schimbate ntre obiecte sunt reprezentate de-a lungul legturilor.
Ordinea de trimitere a diferitelor mesaje este indicat printr-un numr
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}

A
C
{tranzitoriu}

D
{distrus}

Obiectele i legturile create sau distruse n cursul unei interaciuni pot purta
constrngerile {nou}, respectiv {distrus}. Obiectele care sunt create i distruse n
cursul aceleiai interaciuni sunt identificate prin constrngerea {tranzitoriu}.
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 ctre toate obiectele unei clase, existente la un moment dat:

:X

*: mesaj

:Y

In diagramele de colaborare pot fi introdui actori, pentru a reprezenta


declanarea interaciunilor de ctre un element extern sistemului. Datorit acestui
artificiu, interaciunea poate fi descris ntr-o manier mai abstract, fr a se intra
n detaliile obiectelor de interfa utilizator. Primul mesaj de interaciune este
trimis de actor. Un exemplu este prezentat in figura urmatoare:

1: Apel la al doilea etaj

:Ascensor

:Cabina

2: Adaug destinaia 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

reprezentand modulul central al sistemului,

imprumutului,

Sistem-

Fisierul de abonati, Fisele

abonatilor, Fisierul de carti, Fisele cartilor si Fereastra-mesaj in care


sistemul afiseaza datele necesare imprumutului.

10

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.
Numeroase editoare UML permit conversia automata de la o diagrama de
secventa la cea de colaborare corespunzatoare sau invers.

11

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

1: attach(o1)
2: attach(o2)
3: Notify
4: update()
5: getState()
6: update()
7: getState()

3: Notify

s:Subject

4: update()

o1:Observer

5: getState()
1: attach(o1)
6: update()
7: getState()
2: attach(o2)
o2:Observer

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.
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.

13

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

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
14

Diagrama de secventa in UML 2.


Diagramele de comunicare, permit specificarea unei comunicari in
descrierea unei alte comunicari, ceea ce conduce la reutilizarea comportarilor.

Diagrama de comunicare

15

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.

16

UML 2 Timing diagram

17

18