Le diagramme de séquence
Le diagramme de séquence met en évidence la chronologie des messages échangés entre les objets participant à une interaction. Ces objets sont représentés dans le diagramme par leurs lignes de vie.
Exemple de diagramme de séquence
Le diagramme ci-dessous décrit le comportement d'un distributeur automatique :
• Deux points d'entrée (représentés par des lignes de vie) donnent lieu à un contrôle d'accès de l'utilisateur. Ce contrôle est décrit dans une interaction.
• Selon le résultat du contrôle, l'accès est refusé et la carte de l'utilisateur éjectée ou l'ouverture de la porte est actionnée.
• Un comportement optionnel (représenté par un fragment combiné) peut influencer l'ouverture de la porte.
Créer un diagramme de séquence
Pour créer un diagramme de séquence dans HOPEX IT Architecture :
1. Faites un clic droit sur une interaction.
2. Dans le menu contextuel qui s'affiche, cliquez sur Nouveau > Diagramme d'interaction.
Les lignes de vie
Une ligne de vie représente un participant dans une interaction.
Les lignes de vie sont des instances de différents types (de classe, d'acteurs, etc.).
Dans un diagramme de séquence, le temps est représenté comme s'écoulant du haut vers le bas le long des lignes de vie de ces objets. Entre ces objets transitent des instances de messages.

Les instances représentées dans un diagramme de séquence peuvent être des instances de classe, d'acteur, de paquetage, de cas d'utilisation, de composant ou de nœud, ce qui permet de définir des diagrammes de séquence au niveau de détail souhaité.
Créer une ligne de vie
Pour créer une ligne de vie :
1. Cliquez sur le bouton
Ligne de vie 
.
2. Cliquez dans le diagramme.
Une fenêtre s'ouvre.
3. Saisissez le nom de la ligne de vie.
4. Cliquez sur Ajouter.
La ligne de vie apparaît dans le diagramme.
Propriétés d'une ligne de vie
Pour accéder aux propriétés d'une ligne de vie :

Sélectionnez l'instance et cliquez sur le bouton
Propriétés de la fenêtre d'édition s'il n'est pas activé.
Vous pouvez sélectionner le Type de l'objet (Acteur, Classe, etc.), préciser de quelle Classe, Acteur, etc. cet objet est une instance et indiquer son stéréotype.
Les messages
Un message définit une communication particulière entre les lignes de vie d'une interaction. Il spécifie l'émetteur et le récepteur par l'intermédiaire de spécifications d'occurrence, ainsi que le type de communication. Cette communication peut être, par exemple, l'émission d'un signal, l'invocation d'une opération, la création ou la destruction d'une instance.
Exemples de messages échangés
1) Le message envoyé par l'acteur "Client" à la classe "Commande" transporte le signal "Nouvelle commande".
2) Le message envoyé par la classe "Commande" à la classe "Produit" appelle l'opération "Déstocker".
Créer un message
Pour créer un message dans le diagramme de séquence :
1. Cliquez sur le bouton Message de la barre d'insertion d'objets en sélectionnant le type de message voulu.
2. Allez de la ligne pointillée sous le premier objet à celle qui est sous le deuxième objet en maintenant le bouton gauche de la souris enfoncé.
Le message échangé entre les deux objets se dessine.
Types de messages
Vous pouvez créer quatre types de messages :
• Dans un message de type "Complet", l'émetteur et le destinataire sont tous les deux définis.
• Dans un message "Perdu", seul l'émetteur est connu. On considère ici que le message n'atteint jamais sa destination.
• Dans un message "Trouvé", seul le destinataire est connu. C'est le cas lorsque l'origine du message se situe en dehors du contexte de description.
• Dans un message de type "Inconnu", ni l'émetteur ni le destinataire ne sont définis.
Occurrence d'exécution
Une occurrence d'exécution d'une ligne de vie (execution specification) représente une unité d'action ou de comportement qui se déroule à partir d'une occurrence d'événement de début jusqu'à une occurrence d'événement de fin.
Créer une occurrence d'exécution
Pour créer une occurrence d'exécution :
1. Dans le diagramme de séquence, cliquez sur le bouton
Occurrence d'exécution 
de la barre d'insertion d'objets.
2. Positionnez-la sur la ligne de vie concernée.
L'occurrence apparaît dans le diagramme.
Occurrence d'événement
La création d'un message ou d'une occurrence d'exécution entraîne automatiquement la création d'occurrences d'événements.
Une occurrence d'événement (Occurrence Specification) est un point syntaxique à l'extrémité d'un message ou au début ou à la fin d'une occurrence d'exécution.
Les occurrences d'événement sont ordonnées le long d'une ligne de vie.
Ce sont les unités sémantiques de base d'une interaction.
Vous pouvez accéder au menu contextuel d'une occurrence d'événement en cliquant avec le bouton droit sur l'une des extrémités d'un message.
Calcul des numéros de séquence
A partir du positionnement des occurrences d'événement, un outil de calcul permet d'ordonner les messages et les occurrences d'exécution.
Pour ordonner les messages circulant entre des lignes de vie d'une interaction :
1. Ouvrez le menu contextuel de l'interaction décrite.
2. Cliquez sur Calculer les numéros de séquence.
L'outil applique automatiquement des numéros aux messages.
Exemple
Vous pouvez modifier manuellement le numéro de séquence d'un message dans la fenêtre de propriétés du message :

Cliquez sur l'onglet
Caractéristiques et modifiez la valeur du champ
Sequence Expression.
Lorsque vous relancez le calcul des numéros de séquence, ce dernier met à jour le séquencement en fonction des modifications apportées.
Fragment combiné
Un fragment combiné permet de décrire de manière concise plusieurs séquences d'exécution.
Un fragment combiné est défini par un opérateur d'interaction et les opérandes d'interactions correspondants.
Créer un fragment combiné
Pour créer un fragment combiné :
1. Dans la barre d'insertion d'objets du diagramme de séquence, cliquez sur le bouton Fragment combiné.
Vous pouvez associer au fragment combiné différents types d'opérateur d'interaction. La flèche située à droite du bouton offre un raccourci vers quatre d'entre eux. Voir
Type d'opérateur d'interaction.
2. Cliquez dans le diagramme.
La fenêtre de création du fragment combiné apparaît.
3. Indiquez son Nom et le Type d'opérateur d'interaction si ce n'est pas déjà fait.
4. Cliquez sur Terminer.
Un fragment combiné est représenté par un rectangle dont l'angle supérieur gauche affiche le type d'opérateur d'interaction.
Dans l'exemple ci-dessous, un fragment combiné de type optionnel traduit un comportement susceptible de contrarier le séquencement normal (l'ouverture de la porte).
Type d'opérateur d'interaction
Le type d'opérateur d'interaction conditionne la signification du fragment combiné. Il existe différents types d'opérateurs : seq, alt, opt, break, par, strict, loop, region, neg, assert, ignore et consider.
Alternatives
Alt exprime la possibilité de choisir entre différents comportements possibles en évaluant les conditions de garde associées à chacun des opérandes. Au plus un des opérandes pourra être exécuté.
L'opérande gardé par Else est choisi lorsqu'aucune des autres conditions n'est réalisée.
Option
Opt représente un choix entre l'unique opérande proposé ou aucun.
Arrêt (Break)
Break représente un scénario d'arrêt qui est exécuté à la place du reste du fragment d'interaction englobant.
Parallèle
Par implique que les différents opérandes peuvent être exécutés en parallèle. Les occurrences des événements des divers opérandes d'interaction peuvent être entrelacées de toutes les façons tant que l'ordre imposé par chaque opérande est préservé.
Séquence faible (Weak Sequencing)
Seq désigne un entrelacement faible entre les comportements des opérandes défini par trois propriétés :
- L'ordre des occurrences d'événements à l'intérieur de chacun des opérandes est maintenu dans le résultat.
- Les occurrences d'événements de différentes lignes de vie venant de différents opérandes peuvent apparaître dans n'importe quel ordre.
- Les occurrences d'événements d'une même ligne de vie venant de différents opérandes sont ordonnés de telle sorte que l'occurrence d'événement du premier opérande apparaît avant celle du deuxième.
Séquence stricte (Strict Sequencing)
Strict définit un séquencement strict entre les comportements des opérandes.
Négation (Negative)
Neg représente un opérande invalide.
Région critique
Critical représente une région qui doit être traitée de manière atomique, ce qui signifie que des occurrences d'événement ne peuvent pas être entrelacées avec celles de la région critique.
Ignorer / Considérer
Consider et Ignore nécessitent qu'une liste de messages pertinents soient spécifiés.
Ignorer indique que les types de certains messages sont ignorés dans le fragment combiné.
Consider signifie que seuls certains messages vont être considérés à l'intérieur du fragment combiné. C'est équivalent à définir tous les autres messages comme 'ignorés'.
Assertion
Assert représente une séquence qui est la seule valide pour un message donné.
Ainsi, toute séquence définie par un fragment d'interaction qui commence par les messages qui aboutissent à la séquence définie par le bloc assert et qui continue par un échange de messages ne respectant pas le bloc assert doit être définie comme invalide.
Les assertions sont fréquemment utilisées en combinaison avec les types Ignore et Consider.
Boucle
Loop permet d'indiquer que l'opérande d'interaction sera répété un certain nombre de fois. Il est possible de spécifier un nombre minimum et un nombre maximum de boucles, ainsi qu'une expression de continuation de la boucle.
Opérande d'interaction
Un opérande d'interaction est contenu dans un fragment combiné et représente un opérande de l'expression donnée par le fragment combiné englobant. Il peut être conditionné par une contrainte d'interaction qui sert de condition de garde.
Créer un opérande d'interaction
Pour créer un opérande d'interaction :
1. Faites un clic droit sur le fragment combiné qui contient l'opérande d'interaction.
2. Sélectionnez Nouveau > Opérande d'interaction.
3. Nommez l'opérande et cliquez sur OK.
Créer une contrainte d'interaction
Pour créer la contrainte d'interaction qui va conditionner l'opérande :
1. Ouvrez la fenêtre de propriétés de l'opérande d'interaction.
2. Cliquez sur l'onglet Caractéristiques.
3. Dans le cadre Condition, cliquez sur Nouveau.
4. La condition est représentée par une contrainte. Définissez la contrainte et cliquez sur OK.
Utilisation d'interaction
Une utilisation d'interaction se réfère à une interaction. C'est un moyen de copier le contenu de l'interaction référencée à l'endroit de l'occurrence d'interaction.
Exemple
Pour créer une utilisation d'interaction :
1. Cliquez sur le bouton
Utilisation d'interaction 
.
2. Cliquez dans le diagramme.
3. Dans la fenêtre qui apparaît, indiquez son nom et l'interaction appelée.
4. Cliquez sur Terminer.
Vous pouvez préciser les arguments d'une utilisation d'interaction. Un argument est une valeur spécifique correspondant à un paramètre de l'interaction appelée. Aussi, une fois l'argument créé sur l'utilisation d'interaction, vous devez le mettre en correspondance avec le paramètre de l'interaction appelée.
Pour créer un argument :
1. Ouvrez la page de propriétés Caractéristiques de l'utilisation d'interaction.
2. Dans le cadre Arguments, cliquez sur le bouton Nouveau.
Une spécification de valeur est créée.
Vous pouvez la renommer et préciser ses caractéristiques en ouvrant sa fenêtre de propriétés.
Pour mettre l'argument en correspondance avec le paramètre de l'interaction appelée :
1. Dans la page de propriétés Caractéristiques de l'utilisation d'interaction.
2. Cliquez sur la flèche située à l'extrémité du champ Interaction called et sélectionnez Modifier.
Une fenêtre affiche les paramètres de l'interaction appelée.
3. Pour chaque paramètre, cliquez dans la colonne valeur et sélectionnez la spécification de valeur qui lui correspond.
Porte
Une porte (gate) est un point de connexion entre un message extérieur à un fragment d'interaction et un message appartenant à ce fragment d'interaction.
Exemple
Pour créer une porte dans le diagramme de séquence :
1. Cliquez sur le bouton
Porte 
de la barre d'insertion d'objets.
2. Cliquez sur le cadre délimitant l'interaction, là où vous souhaitez positionner la porte.
La porte apparaît dans le diagramme.
Continuation
Une continuation est un moyen syntaxique de définir le prolongement des séquences de différentes branches de fragment combiné alternatif. Les continuations sont similaires à des labels représentant des points intermédiaires dans un flot de contrôle.