Les diagrammes de séquence UML  sont des diagrammes d’interaction qui détaillent la façon dont les opérations sont effectuées. Ils capturent l’interaction entre les objets dans le cadre d’une collaboration. Les diagrammes de séquence sont centrés sur le temps et ils montrent visuellement l’ordre de l’interaction en utilisant l’axe vertical du diagramme pour représenter le temps, quels messages sont envoyés et quand.

Qu’est-ce qu’un diagramme de séquence ?

Un diagramme de séquence, également appelé diagramme de séquence, diagramme séquentiel ou diagramme séquentiel, est un diagramme d’interaction UML. Il montre la collaboration dynamique entre plusieurs objets en décrivant l’ordre temporel dans lequel les messages sont envoyés entre eux.

Dans l’UML, un objet dans un diagramme de séquence est dessiné comme un rectangle contenant le nom de l’objet, souligné. Un objet peut être nommé de l’une des trois manières suivantes : le nom de l’objet, le nom de l’objet et sa classe, ou simplement le nom de la classe (objet anonyme). Les trois façons de nommer un objet sont illustrées dans la figure ci-dessous.

MODIFIER CE DIAGRAMME DE SÉQUENCE

Les objets du diagramme de séquence

  1. Afficher l’ordre des interactions entre les objets. Modélisez le comportement d’interaction en tant que transmission de messages et montrez l’interaction entre les objets de manière dynamique en décrivant comment les messages sont envoyés et reçus entre eux.
  2. Comparé à d’autres diagrammes UML, un diagramme de séquence temporelle met davantage l’accent sur l’ordre chronologique du comportement d’interaction.
  3. Il peut décrire visuellement le processus de concurrence.

Les éléments du diagramme de séquence

1. Acteur – Acteurs du système, qui peuvent être des personnes, des machines, d’autres systèmes, des sous-systèmes ; utilisé pour représenter dans le diagramme de séquence temporelle.

2. Objet – Il existe trois manières de nommer les objets :

  1. Inclut le nom de l’objet et le nom de la classe, par exemple : classe en direct : classe, dans le diagramme de série chronologique, avec « objet : classe ».
  2. Affiche uniquement le nom de la classe, c’est-à-dire qu’il s’agit d’un objet anonyme, par exemple : :course; dans le chronogramme, avec “:class”.
  3. Affiche uniquement le nom de l’objet mais pas le nom de la classe, par exemple : conférencier ; dans le chronogramme, il est représenté par « objet ».

Les trois méthodes de dénomination sont disponibles, ce qui est la plus facile à comprendre pour les personnes qui lisent le tableau chronologique, choisissez laquelle.

3. L’ordre des objets

  • L’ordre gauche et droite des objets n’est pas important, mais pour faire un schéma clair et net, il faut suivre les deux principes suivants : rapprocher le plus possible les objets avec des interactions fréquentes ;
  • Placez l’objet qui initialise toute l’activité d’interaction à l’extrémité la plus à gauche.

Corde de sécurité

Une ligne pointillée s’étendant vers le bas à partir de l’icône de l’objet dans le chronogramme, indiquant depuis combien de temps l’objet existe.

  • Focus of Control (également connu sous le nom de période d’activation) est le symbole de la période de temps pendant laquelle l’objet effectuera l’opération correspondante. Il peut être interprété comme une paire de crochets { } en sémantique C ; représenté par un petit rectangle. Il représente la période pendant laquelle un élément effectue une opération. Le haut et le bas du rectangle sont alignés respectivement avec l’heure de début et l’heure d’achèvement.
  • Les messages sont généralement classés comme message synchrone, message asynchrone et message de retour.

Notez que

  • L’expéditeur d’un message passe le contrôle au destinataire du message, puis arrête l’activité et attend que le destinataire du message abandonne ou rende le contrôle qui est utilisé pour indiquer la synchronisation.
  • L’expéditeur d’un message transmet le signal au destinataire du message via le message, puis poursuit son activité sans attendre que le destinataire renvoie le message ou le contrôle. Le récepteur et l’expéditeur d’un message asynchrone travaillent simultanément.
  • Le message de retour indique un retour d’un appel de procédure.

 

Messages de création et de destruction

Les participants ne vivent pas nécessairement pendant toute la durée de l’interaction d’un diagramme de séquence. Les participants peuvent être créés et détruits en fonction des messages transmis.

Un  message constructeur  crée son récepteur. L’expéditeur qui existe déjà au début de l’interaction est placé en haut du diagramme. Les cibles créées lors de l’interaction par un appel de constructeur sont automatiquement placées plus bas dans le diagramme.

Un  message destructeur  détruit son récepteur. Il existe d’autres moyens d’indiquer qu’une cible est détruite lors d’une interaction. Ce n’est que lorsque la destruction d’une cible est définie sur “après destructeur” que vous devez utiliser un destructeur.

Message non instantané

Les messages sont souvent considérés comme instantanés, ainsi, le temps qu’il faut pour arriver au récepteur est négligeable. Les messages sont dessinés sous forme de flèche horizontale. Pour indiquer qu’il faut un certain temps avant que le destinataire ne reçoive réellement un message, une  flèche oblique est utilisée .

Fragments de combinaison

Un fragment de séquence est représenté par une boîte appelée fragment combiné, qui renferme une partie de l’interaction dans le graphe de séquence. L’opérateur de fragment (dans le coin supérieur gauche) indique le type du fragment. Les fragments interactifs vous permettent de regrouper des messages associés dans un diagramme de séquence. Divers types de fragments prédéfinis sont disponibles, vous permettant de spécifier des résultats alternatifs, des messages parallèles ou des boucles.

Les fragments du diagramme de séquence sont des cadres rectangulaires dessinés sur une partie du diagramme. Ils représentent la structure conditionnelle qui affecte le flux des messages. Ces cadres sont appelés fragments combinés dans la spécification UML et les conteneurs sont appelés opérandes d’interaction. Les cadres sont étiquetés dans le coin supérieur gauche. Cette étiquette est appelée opérateur d’interaction dans UML.

 

Exemple – scénario de passation de commande

Un membre du navire qui souhaite passer une commande en ligne. Les articles commandés seront envoyés au membre par coursier ou par courrier ordinaire, selon son statut de membre (VIP, membre régulier). Si le membre sélectionne l’option de notification dans la commande, le magasin enverra une notification de confirmation au membre.

MODIFIER CE DIAGRAMME DE SÉQUENCE

Un autre exemple : Passer une commande

Un diagramme de séquence est un diagramme à deux dimensions avec l’axe horizontal représentant les objets et l’axe vertical représentant le temps, où les messages sont transmis horizontalement entre les objets et disposés verticalement dans l’ordre chronologique. L’exemple montre un diagramme de séquence avec trois objets participants : client, commande et stock. Sans même connaître formellement la notation, vous pouvez probablement avoir une assez bonne idée de ce qui se passe.

  1. Étape 1 et 2 : Le client crée une commande.
  2. Étape 3 : Le client ajoute des articles à la commande.
  3. Étape 4, 5 : La disponibilité de chaque article est vérifiée dans l’inventaire.
  4. Etape 6, 7, 8 : Si le produit est disponible, il est ajouté à la commande.
  5. Étape 9 retour
  6. Étape 10, 11 : enregistrer et détruire la commande

MODIFIER CE DIAGRAMME DE SÉQUENCE

 

Fragments combinés couramment utilisés

Les types de fragments incluent ref, assert, loop, break, alt, opt et neg, ref, sd.

Opérateur Sens
autre Fragments multiples alternatifs : seul celui dont la condition est vraie s’exécutera.
opter Facultatif : le fragment s’exécute uniquement si la condition fournie est vraie. Équivalent à un alt seulement avec une trace.
par Parallèle : chaque fragment est exécuté en parallèle.
boucle Boucle : le fragment peut s’exécuter plusieurs fois, et la garde indique la base de l’itération.
critique Région critique : le fragment ne peut avoir qu’un seul thread l’exécutant à la fois.
négatif Négatif : le fragment montre une interaction non valide.
réf Référence : fait référence à une interaction définie sur un autre diagramme. Le cadre est dessiné pour couvrir les lignes de vie impliquées dans l’interaction. Vous pouvez définir des paramètres et une valeur de retour.
Dakota du Sud Diagramme de séquence : utilisé pour entourer tout un diagramme de séquence.

Notez que:

  • Il est possible de combiner des trames afin de capturer, par exemple, des boucles ou des branches.
  • Mots-clés fragmentés combinés : alt, opt, break, par, seq, strict, neg, critical, ignore, consider, assert et loop.
  • Les contraintes sont généralement utilisées pour afficher les contraintes de temps sur les messages. Ils peuvent s’appliquer à la synchronisation d’un message ou aux intervalles entre les messages.

Exemples de fragments combinés

(1) Choix (Alt) – Un fragment alternatif fournit plusieurs fragments alternatifs gardés (séparés par des opérandes d’interaction), c’est-à-dire utilisés pour spécifier des choix mutuellement exclusifs entre deux ou plusieurs séquences de messages, équivalent au classique if..else… :

MODIFIER CE DIAGRAMME DE SÉQUENCE

(2) Option (Opt) – Contient une séquence d’occurrences ou de non-occurrences possibles, ce qui signifie qu’un fragment facultatif n’est exécuté que si une condition de garde est vraie :

MODIFIER CE DIAGRAMME DE SÉQUENCE

(3) Boucle (Loop) – Une boucle permet de répéter un fragment jusqu’à ce qu’une condition de garde devienne fausse :

MODIFIER CE DIAGRAMME DE SÉQUENCE

Casser

Une pause permet à une boucle englobante d’être échappée lorsqu’une certaine garde devient vraie :

MODIFIER CE DIAGRAMME DE SÉQUENCE

Les pauses sont le plus souvent utilisées pour modéliser la gestion des exceptions. Cet exemple de diagramme de séquence utilise un fragment de combinaison de rupture car il traite la condition solde < montant comme une exception plutôt que comme un flux alternatif. Pour lire cet exemple, nous commençons par le coin supérieur gauche de la séquence et lisons vers le bas. Lorsque la séquence atteint la valeur de retour « solde », elle vérifie si le solde est inférieur au montant. Si le solde n’est pas inférieur au montant, le prochain message envoyé est le message addDebitTransaction et la séquence continue normalement.

Parallèle

Un fragment parallèle permet à plusieurs interactions de s’exécuter en parallèle :

MODIFIER CE DIAGRAMME DE SÉQUENCE

Cadres

Une trame permet d’encapsuler un diagramme de séquence.

MODIFIER CE DIAGRAMME DE SÉQUENCE

Référence (Réf)

Une trame peut être référencée dans un autre diagramme de séquence :

MODIFIER CE DIAGRAMME DE SÉQUENCE

Protocoles

MODIFIER CE DIAGRAMME DE SÉQUENCE

Collaborations

MODIFIER CE DIAGRAMME DE SÉQUENCE

Scénarios

MODIFIER CE DIAGRAMME DE SÉQUENCE

Signaux et réceptions

Un commissaire-priseur diffuse une proposition de prix pour un article à une salle bondée d’enchérisseurs anxieux. Lorsqu’un soumissionnaire entend la proposition, il décide d’accepter ou non le prix.

Dans une enchère automatisée, comment le commissaire-priseur diffusera-t-il la proposition ? Un objet peut avoir des opérations désignées qui doivent être automatiquement appelées si certains types de signaux de diffusion sont reçus. Ces méthodes sont appelées réceptions. Les signaux sont un type particulier de classe. Le nom de la réception correspond généralement au nom du signal. Les réceptions sont présentées dans un compartiment séparé :

MODIFIER CE DIAGRAMME DE SÉQUENCE

Dans un diagramme de séquence, nous pouvons représenter un signal comme un signal asynchrone, et la réception comme une invocation de réception :

MODIFIER CE DIAGRAMME DE SÉQUENCE

Critique

MODIFIER CE DIAGRAMME DE SÉQUENCE

Autres types de fragments

  • Stricte
  • Affirmer
  • Envisager
  • Ignorer
  • Région
  • Nég

Résumé de la notation du diagramme de séquence

Notation Description Représentation visuelle
Acteur de cinéma
  • un type de rôle joué par une entité qui interagit avec le sujet (par exemple, en échangeant des signaux et des données)
  • externe au sujet (c’est-à-dire au sens où une instance d’un acteur ne fait pas partie de l’instance de son sujet correspondant).
  • représentent les rôles joués par les utilisateurs humains, le matériel externe ou d’autres sujets.

Notez que:

  • Un acteur ne représente pas nécessairement une entité physique spécifique mais simplement un rôle particulier d’une entité
  • Une personne peut jouer le rôle de plusieurs acteurs différents et, inversement, un acteur donné peut être joué par plusieurs personnes différentes.
Diagramme de séquence UML : exemple d'acteur
Corde de sécurité
  • Une ligne de vie représente un participant individuel à l’interaction.
Diagramme de séquence UML : exemple d'activation
Activations
  • Un rectangle fin sur une ligne de vie) représente la période pendant laquelle un élément effectue une opération.
  • Le haut et le bas du rectangle sont alignés respectivement avec l’heure de début et l’heure d’achèvement
Diagramme de séquence UML : exemple d'activation
Message d’appel
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • Le message d’appel est une sorte de message qui représente une invocation de fonctionnement de la ligne de vie cible.
Diagramme de séquence UML : exemple de message d'appel
Message de retour
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • Le message de retour est une sorte de message qui représente la transmission d’informations à l’appelant d’un ancien message correspondant.
Diagramme de séquence UML : Exemple de message de retour
Message personnel
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • L’auto-message est une sorte de message qui représente l’invocation du message de la même ligne de vie.
Diagramme de séquence UML : exemple d'auto-message
Message récursif
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • Un message récursif est une sorte de message qui représente l’invocation d’un message de la même ligne de vie. Sa cible pointe vers une activation au-dessus de l’activation à partir de laquelle le message a été appelé.
Diagramme de séquence UML : exemple de message récursif
Créer un message
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • Créer un message est une sorte de message qui représente l’instanciation de la ligne de vie (cible).
Diagramme de séquence UML : Créer un exemple de message
Détruire le message
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • Le message de destruction est une sorte de message qui représente la demande de destruction du cycle de vie de la ligne de vie cible.
Diagramme de séquence UML : Exemple de message de destruction
Message de durée
  • Un message définit une communication particulière entre les lignes de vie d’une interaction.
  • Le message de durée indique la distance entre deux instants pour l’appel d’un message.
Diagramme de séquence UML : exemple de message de durée
NoterUne note (commentaire) donne la possibilité d’attacher diverses remarques aux éléments. Un commentaire n’a aucune force sémantique, mais peut contenir des informations utiles à un modélisateur. Diagramme de séquence UML : exemple de note