Introducció

Una interacció és l'especificació del comportament d'un cas d'ús o d'una operació en termes de seqüència de missatges entre objectes. Aquests missatges contenen estímuls que poden ser peticions d'execució d'operacions o senyals. S'anomena fil d'execució a una seqüència d'imatges.

Col·laboracions

Una col·laboració és un conjunt de rols, de classificadors o d'instàncies, i de rols d'associacions entre els objectes que intervenen en una interacció. Les col·laboracions s'utilitzen per coherència entre les meves classes i associacions definides en el model estàtic i les associacions i els objectes definits en el cas d'ús. Les col·laboracions es poden definir a partir de classificadors o d'instàncies.

A vegades ens interessarà representar multiobjectes, que representen un conjunt d'objectes d'un rol amb multiplicitat més gran que 1 dins d'una associació.

L'UML ofereix 3 diagrames per representar interaccions i col·laboracions:

  • El diagrama de comunicació, posa èmfasi en la descripció de la col·laboració.
  • El diagrama de seqüència, que posa èmfasi en la successió temporal de missatges en una interacció.
  • El diagrama d'activitats, que serveix per descriure l'estat d'una activitat.

Diagrama de comunicació

El diagrama de col·laboració és la representació d'una interacció.

Parteix del diagrama estàtic, sobre el qual es representen els missatges de la interacció.

Cada missatge té la següent especificació:

PREDECESSORS GUARDA EXPRESSIONS_SEQÜÈNCIA VALORS_RETORN SIGNATURA

PREDECESSORS: Llista de missatges predecessors '('NUM_SEQ, NUM_SEQ ')'

GUARDA: Condició que s'ha de complir perquè s'enviï el missatge.

EXPRESSIONS_SEQÜÈNCIA: Num_seq '['RECURRÈNCIA''],...,':'

RECURRÈNCIA: '*' '['CLÀUSULA_ITERACIÓ']'

VALORS_RETORN: Valors de retorn com a conseqüència del procés activat pel missatge VALORS_RETORN ',' VALORS_RETORN ... ':='

SIGNATURA: Nom de l'estímul i llista d'arguments.

Es pot indicar també la creació d'objectes (new), destrucció (destroyed) i enllaços (transient).

Missatges simples: corresponen a una simple execució dins d'un fil d'execució.

Missatges asíncrons: aquests missatges es donen quan el client envia un missatge al subministrador i aquest accepta el missatge. La classe que emet s'espera a rebre el resultat de l'operació associada al missatge.

Missatges asíncrons: en aquest cas, la classe meva emissora envia un missatge al subministrador i es continua executant sense esperar que arribi el resultat de la classe receptora. En aquests casos habitualment la classe receptora posarà en cua l'execució de la petició rebuda.

Missatge de resposta:

<- - - - - - - - - - - - -

Diagrames de seqüència

A diferència dels diagrames de col·laboració, els de seqüència no representen explícitament el rol de les associacions. En canvi, sí que representen el pas del temps i la durada dels missatges.

El temps es representa cap avall, i no està necessàriament a escala.

En horitzontal, i en franges successives, es representen els diferents rols dels classificadors que participen en la interacció.

Els missatges circulen d'esquerra a dreta i les respostes al revés.

S'anomena línia de vida a un element que simbolitza l'existència del rol en un cert període de temps. Es representa per una línia vertical discontínua que va des de la creació fins a la destrucció de l'objecte.

Per representar la destrucció d'un objecte es posa una x al final de la línia de vida.

Durant la vida d'un objecte hi pot haver diversos constructors segons les condicions que emet el missatge.

Una activació és una part de la línia de vida durant la qual un determinat rol executa una acció o bé altres rols executen altres accions com a conseqüència d'una acció executada pel primer.

Les activacions coincideixen amb l'enviament d'un missatge i la recepció d'una resposta.

Si fas crides reflexives, aquestes es representen amb un altre requadre lleugerament desplaçat.

Els missatges poden ser del mateix tipus que els diagrames de col·laboració, i les fletxes es representen igual.

L'ordre d'execució es representa de dalt a baix en el temps.

No s'identifiquen els números de seqüència perquè estan implícits.

Poden sortir dues fletxes d'un mateix punt d'activació si s'envien dos missatges a la vegada.

Els missatges de retorn es representen amb una línia discontínua.

Concrecions i exemples:

Els diagrames de casos d'ús presenten una vista externa del sistema. Els diagrames d'interacció, que inclouen els de seqüència, descriuen com els casos d'ús es realitzen (es fan realitat) com a interacció entre conjunts d'objectes.

Els diagrames de seqüència mostren el flux de missatges (events) entre diverses instàncies al llarg del temps. De fet, ofereixen una manera formal d'especificar un escenari.

Es pot veure immediatament l'ordre en què s'envien els missatges perquè el temps és una dimensió explícita del diagrama (eix vertical).

Cada instància es representa mitjançant un recorregut vertical diferent.

És una vista gràfica d'un escenari (un camí concret d'un diagrama de casos d'ús) que il·lustra les interaccions entre objectes com a seqüència temporal. De fet, es pot crear a partir del cas d'ús que es descriu.

Actors i objectes: són els elements que es comunican. Com que tant els objectes com els actors són instàncies, es fa ús de la nomenclatura de l'objecte amb dos punts i el nom subratllat.

Línies de vida: són unes línies que representen la vida dels objectes (o actors) al llarg del temps. El temps va de dalt cap a baix. La línia es fa gruixuda quan aquest objecte està executant una operació. Diem que l'objecte és actiu en aquell moment. Sovint, els objectes deixen d'existir. Per indicar el punt on un objecte es destrueix, es posa una aspa o creu al final de la línia.

Missatges: es representen amb fletxes que van d'emissor a receptor i estan etiquetades amb el missatge que envien. La recepció d'un missatge fa que l'objecte iniciï la seva activitat. El retorn de la crida s'indica amb una fletxa a trossos. Només és necessari posar-ho si volem fer explícit el que es retorna. Si no, es pot suposar que retorna quan la zona activa del receptor acaba.

Els diagrames de seqüència permeten fer ús d'algunes estructures de control, que van molt bé per simplificar-los.

Quan fem ús d'estructures de control no estem representant només un escenari concret, sinó que estem generalitzant.

Exemple de missatge entre dos objectes:

Exemple d'execució condicional del diagrama de seqüència.

El diagrama indica dues maneres d'expressar alternatives. Una fent una part de la vida condicional i una altra condicionant l'enviament del missatge amb una guarda.

Si fes falta un missatge a cadascun del conjunt d'objectes, podem simplificar el diagrama representant el conjunt d'objectes amb un objecte múltiple com es mostra a la figura superior.

A vegades un objecte pot crear o eliminar un altre objecte.

Això es pot representar com a missatges especials.

Un missatge de creació no apunta a una zona activa de la línia de vida, sinó que apunta a l'objecte mateix (ha d'estar més avall que els altres).

El missatge de destrucció apunta cap a una aspa al final de la línia de vida que representa el final de la vida de l'objecte.

Exemple de creació, destrucció i crides a mètodes propis.

Diagrames de seqüència vs col·laboració

El diagrama de col·laboració és, com el diagrama de seqüència, una altra realització dels casos d'ús. Són una combinació dels diagrames d'objectes i els de seqüència. Mostra el flux de successos entre objectes.

Exemple de diagrama de col·laboració:

Recordem que el diagrama de col·laboració mostra com els objectes treballen els uns amb els altres enviant missatges i intercanviant dades. Els diagrames de col·laboració i seqüència són dues vistes diferents de les interaccions entre objectes. Les dues vistes representen exactament la mateixa informació.

El diagrama de seqüència reforça la vista temporal, però cal seguir el diagrama per saber qui es relaciona amb qui.

El diagrama de col·laboració reforça les relacions que s'estableixen entre els objectes, però cal seguir el diagrama per saber l'ordre dels missatges.

Diagrama d'activitats

El diagrama d'activitats és una variant del diagrama d'estat i del diagrama d'interacció perquè serveix per descriure l'estat d'una activitat que és el conjunt d'accions seqüencials o concurrents en la qual poden intervenir diversos classificadors.

Aquests diagrames tenen molts elements en comú amb els diagrames de col·laboració i amb els estats. Els conceptes de transició, estat, esdeveniment, senyal, flux de control i objectes són el mateix.

Els elements específics són:

  • Estats d'acció.
  • Fluxos d'objectes.
  • Estats de fluxos d'objectes.
  • Estats de subactivitats.
  • Swimlanes
  • Icones de control.

Els diagrames d'activitats s'utilitzen per capturar fluxos d'activitats i seqüències de decisions. Són ideals per representar el comportament intern:

  • d'un mètode (la realització d'una operació).
  • d'un cas d'ús.
  • d'un procés de negoci (workflow).

Es poden entendre com una extensió dels diagrames d'estat, on cada estat es caracteritza per estar executant una activitat i, on totes les transicions són automàtiques quan s'acaba l'activitat. Ara bé, s'enriqueix amb altres elements:

  • Punts de decisió: condicions que canvien el flux de les accions.
  • Camins d'execució concurrents.
  • Senyals, amb punts d'enviament i recepció explícits.
  • Objectes afectats per les accions.

En UML 2.0 és possible representar condicions, sincronitzacions, senyals, tokens...

Les activitats s'enllacen mitjançant transicions automàtiques, i a través d'aquestes passaran d'una activitat a una altra.

Quan una activitat acaba, es desencadena el pas a la següent activitat, automàticament.

Les activitats no tenen transicions internes ni transicions desencadenades per esdeveniments. Podríem dir que les transicions es dispara de manera automàtica quan finalitza una activitat.

És una variació d'una màquina d'estats en la qual els estats representen l'execució d'accions o subactivitats i les transicions es dispara per la finalització de les accions o subactivitats.

El diagrama d'activitats representa la màquina d'estats d'un procediment.

Ramificacions i fusions:

Una ramificació (branch) és una divisió del flux d'activitats en dos fils alternatius. Cada vegada que s'executi el diagrama, s'optarà per l'un o l'altre depenent de la condició.

La condició està especificada com a guarda a cadascuna de les connexions que surten.

Una fusió (merge) és la unió de dos fils alternatius en un sol fil.

Les ramificacions i les fusions es representen amb un rombe buit.

Divisions i unions:

Les barres de sincronització permeten, igual que les ramificacions i fusions, dividir el flux d'activitats en diversos fils i després adjuntar-los de nou. La diferència està en el fet que ara no són fils alternatius, sinó fils concurrents. Això vol dir que sempre s'executaran tots dos fils i sempre s'executaran a la vegada.

A la barra que separa els fils l'anomenem barra de fork, i a la barra que adjunta els fils l'anomenem barra de join. Cal dir que la barra de join té una conseqüència: si un fil arriba abans que l'altre al punt de join, necessitarà esperar que l'altre arribi, per tant és un punt de sincronització.

Carrils o swimlanes

Els carrils serveixen per separar les activitats que realitzen diferents objectes o actors. Unes línies gruixudes a manera de corxera divideixen en carrils el diagrama. A cada carril hi posarem solament les activitats que farà l'actor o objecte al qual pertany el carril.

Flux d'objectes: Entrades i productes

Sovint, les activitats requereixen de l'existència d'objectes o generen objectes o canvien el seu estat. Aquests objectes es poden afegir al diagrama amb les convencions del diagrama d'objectes. Podem relacionar els objectes amb les activitats fent ús de fletxes que indiquen el flux de l'objecte.

  1. Partint del següent diagrama de seqüència, respon a les preguntes:

a) Quins objectes (nom i classificador) intervenen en el diagrama?

Objecte: Q1:C1

  • Nom: Q1
  • Classificador: C1

Objecte: Q2:C2

  • Nom: Q2
  • Classificador: C2

Objecte: Q3:C3

  • Nom: Q3
  • Classificador: C3

Objecte: :C4

  • Nom: / Qualsevol
  • Classificador: C4

b) Quins objectes són creats i destruïts durant la interacció?

Creats: Q2:C2

Destruïts: Q3:C3

c) Dibuixa el diagrama de comunicació equivalent.

a) Quin tipus de diagrama UML és?

Diagrama d'activitats.

b) Segons el que es representa en el diagrama, en el cas que es produeixi un error en el processament d'una comanda, què pot fer l'usuari? Què li passa al sistema?

L'usuari no pot fer res.

c) Dibuixa el diagrama d'estats d'una comanda a partir de la informació representada en aquest.