Llenguatge de modelatge unificat (UML) és un llenguatge de modelatge en l'àmbit de l'enginyeria del programari que pretén establir maneres estàndard de visualitzar el disseny d'un sistema. UML guia la creació de diversos tipus de diagrames, com ara diagrames d'interacció, estructura i comportament. A diagrama de seqüència és el més utilitzat interacció diagrama.

Diagrama d'interacció
S'utilitza un diagrama d'interacció per mostrar comportament interactiu d'un sistema. Com que visualitzar les interaccions en un sistema pot ser difícil, fem servir diferents tipus de diagrames d'interacció per capturar diverses característiques i aspectes de la interacció en un sistema.
- Un diagrama de seqüència simplement representa la interacció entre els objectes en un ordre seqüencial, és a dir, l'ordre en què es produeixen aquestes interaccions.
- També podem utilitzar els termes diagrames d'esdeveniments o escenaris d'esdeveniments per referir-nos a un diagrama de seqüència.
- Els diagrames de seqüència descriuen com i en quin ordre funcionen els objectes d'un sistema.
- Aquests diagrames són àmpliament utilitzats pels empresaris i desenvolupadors de programari per documentar i comprendre els requisits dels sistemes nous i existents.
Temes importants per als diagrames de seqüències
- Notació del diagrama de seqüència
- Actors
- Com crear diagrames de seqüència?
- Casos d'ús dels diagrames de seqüències
- Reptes de l'ús de diagrames de seqüències
1. Notació del diagrama de seqüències
1.1. Actors
Un actor en un diagrama UML representa un tipus de rol on interactua amb el sistema i els seus objectes. És important tenir en compte aquí que un actor sempre està fora de l'àmbit del sistema que volem modelar mitjançant el diagrama UML.

Utilitzem actors per representar diversos rols, inclosos usuaris humans i altres subjectes externs. Representem un actor en un diagrama UML mitjançant una notació de persona pal. Podem tenir diversos actors en un diagrama de seqüència.
Per exemple:
Aquí l'usuari del sistema de reserva de seient es mostra com un actor quan existeix fora del sistema i no forma part del sistema.

1.2. Línees de vida
Una línia de vida és un element amb nom que representa un participant individual en un diagrama de seqüència. Així, bàsicament, cada instància d'un diagrama de seqüència està representada per una línia de vida. Els elements de la línia de vida es troben a la part superior en un diagrama de seqüència. L'estàndard en UML per anomenar una línia de vida segueix el format següent:
Nom de la instància: Nom de la classe

inseriu una marca d'aigua a Word
Mostrem una línia de vida en un rectangle anomenat cap amb el seu nom i tipus. El cap es troba a la part superior d'una línia discontínua vertical (anomenada tija), tal com es mostra a dalt.
- Si volem modelar una instància sense nom, seguim el mateix patró, excepte que ara la part del nom de la línia de vida es deixa en blanc.
- Diferència entre una línia de vida i un actor
- Una línia de vida sempre representa un objecte intern al sistema, mentre que els actors s'utilitzen per representar objectes externs al sistema.
El següent és un exemple de diagrama de seqüència:

1.3. Missatges
La comunicació entre objectes es representa mitjançant missatges. Els missatges apareixen en un ordre seqüencial a la línia de vida.
- Representem missatges amb fletxes.
- Les línies de vida i els missatges formen el nucli d'un diagrama de seqüència.

Els missatges es poden classificar a grans trets en les categories següents:
Missatges sincrònics
Un missatge sincrònic espera una resposta abans que la interacció pugui avançar. L'emissor espera fins que el receptor hagi completat el processament del missatge. La persona que truca continua només quan sap que el receptor ha processat el missatge anterior, és a dir, rep un missatge de resposta.
- Un gran nombre de trucades en programació orientada a objectes són sincròniques.
- Fem servir a cap de fletxa sòlid per representar un missatge sincrònic.

Missatges asíncrons
Un missatge asíncron no espera una resposta del receptor. La interacció avança independentment de si el receptor processa el missatge anterior o no. Fem servir a cap de fletxa folrat per representar un missatge asíncron.

1.4. Crear missatge
Utilitzem un missatge Crea per crear una instancia d'un objecte nou al diagrama de seqüència. Hi ha situacions en què una trucada de missatge particular requereix la creació d'un objecte. Es representa amb una fletxa puntejada i crea una paraula etiquetada per especificar que és el símbol de crear missatge.
Per exemple:
La creació d'una nova comanda en un lloc web de comerç electrònic requeriria la creació d'un nou objecte de la classe Order.

1.5. Suprimeix el missatge
Utilitzem un missatge d'eliminació per eliminar un objecte. Quan un objecte es desassigna la memòria o es destrueix dins del sistema, fem servir el símbol d'eliminació del missatge. Destrueix l'aparició de l'objecte al sistema. Es representa amb una fletxa que acaba amb una x.
Per exemple:
En l'escenari següent, quan l'usuari rep la comanda, la classe d'objecte de la comanda es pot destruir.

1.6. Missatge propi
Poden sorgir certs escenaris en què l'objecte ha d'enviar-se un missatge a si mateix. Aquests missatges s'anomenen missatges propis i es representen amb a Fletxa en forma d'U .

Un altre exemple:
trobar a la cadena c++
Penseu en un escenari en què el dispositiu vol accedir a la seva càmera web. Aquest escenari es representa mitjançant un missatge propi.

1.7. Missatge de resposta
Els missatges de resposta s'utilitzen per mostrar el missatge que s'envia des del receptor a l'emissor. Representem un missatge de retorn/resposta mitjançant un cap de fletxa obert amb una línia de punts . La interacció avança només quan el receptor envia un missatge de resposta.

Per exemple:
Considereu l'escenari en què el dispositiu sol·licita una foto a l'usuari. Aquí el missatge que mostra la foto que s'envia és un missatge de resposta.

1.8. Missatge trobat
Un missatge trobat s'utilitza per representar un escenari on una font desconeguda envia el missatge. Es representa amb un fletxa dirigida cap a una línia de vida des d'un punt final.
Per exemple:
Considereu l'escenari d'una fallada de maquinari.

Pot ser degut a múltiples motius i no estem segurs de què va causar la fallada del maquinari.

autòmats finits no deterministes
1.9. Missatge perdut
Un missatge perdut s'utilitza per representar un escenari on el sistema no coneix el destinatari. Es representa mitjançant una fletxa dirigida cap a un punt final des d'una línia de vida.
Per exemple:
Considereu un escenari en què es genera un avís.

L'avís es pot generar per a l'usuari o un altre programari/objecte amb el qual la línia de vida està interactuant. Atès que la destinació no es coneix per endavant, utilitzem el símbol Missatge perdut.

1.10. Guàrdies
Per modelar les condicions fem servir guàrdies en UML. S'utilitzen quan necessitem restringir el flux de missatges amb el pretext que es compleix una condició. Els guàrdies tenen un paper important perquè els desenvolupadors de programari coneguin les limitacions que s'adjunten a un sistema o a un procés concret.
Per exemple:
Per poder retirar efectiu, tenir un saldo superior a zero és una condició que s'ha de complir tal com es mostra a continuació.


El diagrama de seqüència anterior mostra el diagrama de seqüència d'un reproductor de música basat en emocions:
- En primer lloc, l'usuari obre l'aplicació.
- Aleshores, el dispositiu té accés a la càmera web.
- La càmera web captura la imatge de l'usuari.
- El dispositiu utilitza algorismes per detectar la cara i predir l'estat d'ànim.
- A continuació, demana una base de dades per al diccionari de possibles estats d'ànim.
- L'estat d'ànim es recupera de la base de dades.
- L'estat d'ànim es mostra a l'usuari.
- La música es demana a la base de dades.
- La llista de reproducció es genera i finalment es mostra a l'usuari.
2. Com crear diagrames de seqüència?
La creació d'un diagrama de seqüència implica diversos passos, i normalment es fa durant la fase de disseny del desenvolupament de programari per il·lustrar com interactuen diferents components o objectes al llarg del temps. Aquí teniu una guia pas a pas sobre com crear diagrames de seqüència:
- Identificar l'escenari:
- Entendre l'escenari o cas d'ús específic que voleu representar al diagrama de seqüència. Pot ser una interacció específica entre objectes o el flux de missatges en un procés concret.
- Llista els participants:
- Identificar els participants (objectes o actors) implicats en l'escenari. Els participants poden ser usuaris, sistemes o entitats externes.
- Definiu línies de vida:
- Dibuixa una línia vertical discontínua per a cada participant, que representi la línia de vida de cada objecte al llarg del temps. La línia de vida representa l'existència d'un objecte durant la interacció.
- Organitzar línies de vida:
- Col·loca les línies de vida horitzontalment per ordre de la seva implicació en la interacció. Això ajuda a visualitzar el flux de missatges entre els participants.
- Afegeix barres d'activació:
- Per a cada missatge, dibuixeu una barra d'activació a la línia de vida del participant que l'envia. La barra d'activació representa la durada de temps durant el qual el participant està processant activament el missatge.
- Dibuixa missatges:
- Utilitzeu fletxes per representar missatges entre participants. Els missatges flueixen horitzontalment entre línies de vida, indicant la comunicació entre objectes. Els diferents tipus de missatges inclouen missatges síncrons (fletxa continua), asíncrons (fletxa discontinua) i missatges propis.
- Inclou missatges de retorn:
- Si un participant envia un missatge de resposta, dibuixeu una fletxa discontínua que retorni al remitent original per representar el missatge de retorn.
- Indica el temps i l'ordre:
- Utilitzeu números per indicar l'ordre dels missatges en la seqüència. També podeu utilitzar línies discontínues verticals per representar l'ocurrència d'esdeveniments o el pas del temps.
- Inclou condicions i bucles:
- Utilitzeu fragments combinats per representar condicions (com les declaracions if) i bucles en la interacció. Això afegeix complexitat al diagrama de seqüència i ajuda a detallar el flux de control.
- Considereu l'execució paral·lela:
- Si hi ha activitats paral·leles, representeu-les dibuixant línies discontínues verticals paral·leles i col·locant els missatges en conseqüència.
- Revisa i perfecciona:
- Reviseu el diagrama de seqüències per a la claredat i la correcció. Assegureu-vos que representa amb precisió la interacció prevista. Refineu segons sigui necessari.
- Afegeix anotacions i comentaris:
- Incloeu qualsevol informació addicional, anotacions o comentaris que proporcionin context o aclariments per als elements del diagrama.
- Supòsits i limitacions del document:
- Si hi ha hipòtesis o limitacions relacionades amb la interacció, documenteu-les al costat del diagrama.
- Eines:
- Utilitzeu una eina de modelatge UML o un programari de diagramació per crear un diagrama de seqüència net i d'aspecte professional. Aquestes eines sovint proporcionen funcions per facilitar l'edició, la col·laboració i la documentació.
3. Casos d'ús dels diagrames de seqüències
- Visualització del comportament del sistema:
- Els diagrames de seqüència s'utilitzen per il·lustrar el comportament dinàmic d'un sistema mostrant les interaccions entre diversos components, objectes o actors al llarg del temps.
- Proporcionen una representació clara i visual del flux de missatges i esdeveniments en un escenari específic.
- Disseny i arquitectura de programari:
- Durant la fase de disseny del desenvolupament del programari, els diagrames de seqüència ajuden els desenvolupadors i arquitectes a planificar i entendre com interactuaran diferents components i objectes per aconseguir funcionalitats específiques.
- Proporcionen un model per al comportament del sistema.
- Comunicació i col·laboració:
- Els diagrames de seqüència serveixen com a eina de comunicació entre les parts interessades, inclosos desenvolupadors, dissenyadors, gestors de projectes i clients.
- Ajuden a transmetre interaccions complexes en un format visual fàcil d'entendre, fomentant la col·laboració i la comprensió compartida.
- Aclariment de requisits:
- Quan es perfeccionen els requisits del sistema, es poden utilitzar diagrames de seqüència per aclarir i especificar les interaccions esperades entre els components del sistema o entre el sistema i les entitats externes.
- Ajuden a garantir una comprensió comuna del comportament del sistema entre totes les parts interessades.
- Depuració i resolució de problemes:
- Els desenvolupadors utilitzen diagrames de seqüència com a eina de depuració per identificar i analitzar problemes relacionats amb l'ordre i el temps dels missatges durant les interaccions del sistema.
- Proporciona una representació visual del flux de control i ajuda a localitzar i resoldre problemes.
4. Reptes de l'ús de diagrames de seqüència
- Complexitat i mida:
- A mesura que els sistemes creixen en complexitat, els diagrames de seqüències poden esdevenir grans i complexos. Gestionar la mida del diagrama alhora que representa amb precisió les interaccions pot ser un repte, i els diagrames massa complexos poden ser difícils d'entendre.
- Nivell d'abstracció:
- Assolir l'equilibri adequat en termes d'abstracció pot ser un repte. Els diagrames de seqüència han de ser prou detallats per transmetre la informació necessària, però massa detalls poden aclaparar els lectors. És important centrar-se en les interaccions més crítiques sense quedar-se empantanat en minuciositats.
- Naturalesa dinàmica:
- Els diagrames de seqüència representen aspectes dinàmics d'un sistema i, com a resultat, poden canviar amb freqüència durant el procés de desenvolupament. Mantenir els diagrames de seqüències actualitzats amb el sistema en evolució pot ser un repte, especialment en entorns de desenvolupament àgils o que canvien ràpidament.
- Ambigüitat als missatges:
- De vegades, pot ser difícil definir la naturalesa exacta dels missatges entre objectes. L'ambigüitat en el contingut o el significat del missatge pot provocar malentesos entre les parts interessades i afectar la precisió del diagrama de seqüència.
- Concurrència i paral·lelisme:
- Representar processos concurrents i paral·lels pot ser complex. Tot i que els diagrames de seqüència tenen mecanismes per indicar l'execució paral·lela, visualitzar múltiples interaccions que succeeixen simultàniament pot ser un repte i pot requerir elements esquemàtics addicionals.
- Restriccions en temps real:
- Representar les restriccions en temps real i els requisits de temps precisos pot ser un repte. Tot i que els diagrames de seqüència proporcionen una representació seqüencial, la captura i comunicació precisa d'aspectes en temps real pot requerir documentació addicional o diagrames complementaris.