Diagramme de Séquence

1/39
100%

<!-- Slide number: 1 -->

Diagramme de séquence

Mme CHALOUAH Anissa

I.S.E.T Bizerte

Département Technologies de l’informatique

<!-- Slide number: 2 -->

Définition

Ce diagramme fait partie de la description logique et dynamique.

Il permet de représenter le déroulement de scénarios au travers d’une vision séquentielle et chronologique des échanges et interactions entre les éléments intervenant (acteurs ou composants du modèle).

Un diagramme de séquence regroupe donc les objets et acteurs concernés par un même scénario et décrit leurs échanges au moyen d’actions et de messages.

Les diagrammes de séquences peuvent servir à illustrer un cas d'utilisation.

<!-- Slide number: 3 -->

Eléments de base

Éléments du diagramme de séquence

Acteurs

Objets (instances)

Messages (cas d'utilisation, appels d’opération)

Principes de base :

Représentation graphique de la chronologie des échanges de messages avec le système ou au sein du système

« Vie » de chaque entité représentée verticalement

Échanges de messages représentés horizontalement

<!-- Slide number: 4 -->

Eléments de base

![](Picture2.jpg)

<!-- Slide number: 5 -->

Objet

Les objets qui participent à une interaction sont représentés graphiquement dans undiagramme de séquence par un carré contenant l’identifiant de l’objet (si l’objet n’est pas anonyme), suivi du nom de la classe dont l’objet est instance (si l’objet est typé).

Attaché à ce carré, une ligne verticale représente la vie de l’objet dans le temps (l’axe du temps étant dirigé vers le bas du diagramme).

<!-- Slide number: 6 -->

Objet

![](Espaceréservéducontenu3.jpg)

<!-- Slide number: 7 -->

Ligne de vie

Une ligne de vie représente un participant à une interaction (objet ou acteur).

nomLigneDeVie [ selecteur ]: nomClasseOuActeur

Dans le cas d'une collection de participants, un sélecteur permet de choisir un objet parmi n (par exemple objets[2]).

![](Picture2.jpg)

<!-- Slide number: 8 -->

Messages

Les principales informations contenues dans un diagramme de séquence sont les messages échangés entre les lignes de vie, présentés dans un ordre chronologique.

Un message définit une communication particulière entre des lignes de vie (objets ou acteurs).

Plusieurs types de messages existent, dont les plus courants :

l'envoi d'un signal ;

l'invocation d'une opération (appel de méthode) ;

la création ou la destruction d'un objet.

La réception des messages provoque une période d'activité (rectangle vertical sur la ligne de vie) marquant le traitement du message(spécification d'exécution dans le cas d'un appel de méthode).

<!-- Slide number: 9 -->

Publicité

Message synchrone

Un message synchrone bloque l'expéditeur jusqu'à la réponse du destinataire. Le flot de contrôle passe de l'émetteur au récepteur.

Typiquement : appel de méthode

Si un objet A invoque une méthode d'un objet B, A reste bloqué tant que B n'a pas terminé.

On peut associer aux messages d'appel de méthode un message de retour (en pointillés) marquant la reprise du contrôle par l'objet émetteur du message synchrone.

![](Picture2.jpg)

<!-- Slide number: 10 -->

Message synchrone : Exemple

Émetteur bloqué en attente du retour

![](Picture2.jpg)

<!-- Slide number: 11 -->

Correspondance messages/opérations

Les messages synchrones correspondent à des opérations dans le diagramme de classes.

Envoyer un message et attendre la réponse pour poursuivre son activité revient à invoquer une méthode et attendre le retour pour poursuivre ses traitements.

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 12 -->

Implémentation des messages synchrones

class B {

C c;

op1 (p: Type ){

c. op2 (p);

c. op3 ();

}

}

class C {

op2 (p: Type ){

...

}

op3 (){

...

}

}

![](Picture2.jpg)

<!-- Slide number: 13 -->

Message asynchrone

Un message asynchrone n'est pas bloquant pour l'expéditeur.

Le message envoyé peut être pris en compte par le récepteur à tout moment ou ignoré.

Typiquement : envoi de signal (voir stéréotype de classe « signal » ).

![](Picture2.jpg)

![](Picture2.jpg)

<!-- Slide number: 14 -->

Correspondance messages/signaux

Les messages asynchrones correspondent à des signaux dans le diagramme de classes.

Les signaux sont des objets dont la classe est stéréotypée signal et dont les attributs (porteurs d'information) correspondent aux paramètres du message.

![](Picture2.jpg)

![](Picture3.jpg)

Publicité

<!-- Slide number: 15 -->

Création d’objet

La création d'un objet est matérialisée par une flèche qui pointe sur le sommet d'une ligne de vie.

On peut aussi utiliser un message asynchrone ordinaire portant le nom « create » .

![](Picture2.jpg)

![](Picture2.jpg)

<!-- Slide number: 16 -->

Destruction d’objet

La destruction d'un objet est matérialisée par une croix qui marque la fin de la ligne de vie de l'objet.

![](Picture3.jpg)

![](Picture2.jpg)

<!-- Slide number: 17 -->

Création et destruction d’objet

![](Picture2.jpg)

<!-- Slide number: 18 -->

Message réflexif

Ils représentent des messages qu’un objet s’envoie à lui-même.

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 19 -->

Messages complets, perdus et trouvés

Un message complet est tel que les événements d'envoi et de réception sont connus.

Un message complet est représenté par une èche partant d'une ligne de vie et arrivant à une autre ligne de vie.

Un message perdu est tel que l'événement d'envoi est connu, mais pas l'événement de réception.

La flèche part d'une ligne de vie mais arrive sur un cercle indépendant marquant la méconnaissance du destinataire.

Un message trouvé est tel que l'événement de réception est connu, mais pas l'événement d'émission.

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 20 -->

Syntaxe des messages

La syntaxe des messages est :

nomSignalOuOperation ( parametres )

La syntaxe des arguments est la suivante :

nomParametre = valeurParametre

Pour un argument modiable :

nomParametre : valeurParametre

Exemples :

appeler("Capitaine Hadock", 54214110)

afficher(x,y)

initialiser(x=100)

f(x:12)

<!-- Slide number: 21 -->

Message de retour

Le récepteur d'un message synchrone rend la main à l'émetteur du message en lui envoyant un message de retour.

Les messages de retour sont optionnels : la fin de la période d'activité marque également la fin de l'exécution d'une méthode.

Ils sont utilisés pour spécifier le résultat de la méthode invoquée.

![](Picture2.jpg)

Publicité

<!-- Slide number: 22 -->

Syntaxe des messages de retour

La syntaxe des messages de retour est :

attributCible = nomOperation ( params ): valeurRetour

La syntaxe des paramètres est :

nomParam = valeurParam

ou

nomParam : valeurParam

Les messages de retour sont représentés en pointillés.

<!-- Slide number: 23 -->

Exemple d'interaction

Cas d’utilisation

Diagramme de séquence correspondant

![](Picture2.jpg)

![](Picture3.jpg)

![](Picture4.jpg)

<!-- Slide number: 24 -->

Fragments d'interaction combinés

<!-- Slide number: 25 -->

Fragment combiné

Un fragment combiné permet de décomposer une interaction complexe en fragments suffisamment simples pour être compris.

Recombiner les fragments restitue la complexité.

Un fragment combiné se représente de la même façon qu'une interaction. Il est représenté un rectangle dont le coin supérieur gauche contient un pentagone. Dans le pentagone figure le type de la combinaison (appelé opérateur d'interaction ).

<!-- Slide number: 26 -->

Exemple

![](Picture2.jpg)

<!-- Slide number: 27 -->

Types d’opérateurs d’interaction

Opérateurs de branchement(choix et boucles)

alternative, option, break et loop ;

Opérateurs contrôlant l'envoi en parallèle de messages :

parallel et critical region ;

Opérateurs contrôlant l'envoi de messages :

ignore, consider, assertion et negative ;

Opérateurs fixant l'ordre d'envoi des messages :

weak sequencing et strict sequencing.

<!-- Slide number: 28 -->

Opérateurs alt

L’opérateur alternative, ou alt

Est un opérateur conditionnel (l’équivalent d’une exécution à choix multiple SWITCH)

Il peut posséder plusieurs opérandes, chacune ayant une condition de garde.

Absence de condition de garde = condition vrai

Condition else est vrai si aucune autre n’est vrai.

<!-- Slide number: 29 -->

Opérateur alt : Exemple

![](Picture3.jpg)

<!-- Slide number: 30 -->

Publicité

Opérateur alt : Exemple

![](Picture2.jpg)

<!-- Slide number: 31 -->

Opérateurs opt

Opérateur « Option » ou opt

Représente un comportement qui peut se produire ou pas.

![](Picture2.jpg)

<!-- Slide number: 32 -->

Opérateur boucle loop

Syntaxe d'une boucle :

loop ( minNbIterations , maxNbIterations )

La boucle est répétée au moins minNbItérations fois avant qu'une éventuelle condition booléenne ne soit testée (la condition est placée entre crochets dans le fragment)

Tant que la condition est vraie, la boucle continue, au plus maxNbItérations fois.

Notations :

loop(valeur) est équivalent à loop(valeur,valeur).

loop est équivalent à loop(0,), où signie illimité .

<!-- Slide number: 33 -->

Opérateur boucle loop

![](Picture2.jpg)

<!-- Slide number: 34 -->

Opérateur parallèle par

L'opérateur par permet d'envoyer des messages en parallèle.

Ce qui se passe de part et d'autre de la ligne pointillée est indépendant.

![](Picture2.jpg)

<!-- Slide number: 35 -->

Opérateur par : exemple

![](Picture2.jpg)

<!-- Slide number: 36 -->

Réutiliser une interaction

Réutiliser une interaction consiste à placer un fragment portant la référence ref là où l'interaction est utile.

![](Picture2.jpg)

<!-- Slide number: 37 -->

Opérateur strict

Un fragments combiné de type strict sequencing, ou strict, possède au moins deux sous-fragments. Ceux-ci s’exécutent selon leur ordre d’apparition au sein du fragment combiné.

Ce fragment combiné est utile surtout lorsque deux parties d’un diagramme n’ont pas de ligne de vie en commun.

<!-- Slide number: 38 -->

Opérateur strict : Exemple

![](Picture2.jpg)

<!-- Slide number: 39 -->

Bibliographie

Introduction à UML 2 (Pierre Gérard) (P13 IUT Villetaneuse)

Introduction au langage de modélisation UML (Denis Conan, Chantal Taconet, Christian Bac)

UML diagramme de séquence (Delphine longuet)

Diagramme de Séquence

Technologies de l'Informatique - Modélisation UML · lab

Voir tous les documents en génie logiciel

<!-- Slide number: 1 -->

Diagramme de séquence

Mme CHALOUAH Anissa

I.S.E.T Bizerte

Département Technologies de l’informatique

<!-- Slide number: 2 -->

Définition

Ce diagramme fait partie de la description logique et dynamique.

Il permet de représenter le déroulement de scénarios au travers d’une vision séquentielle et chronologique des échanges et interactions entre les éléments intervenant (acteurs ou composants du modèle).

Un diagramme de séquence regroupe donc les objets et acteurs concernés par un même scénario et décrit leurs échanges au moyen d’actions et de messages.

Les diagrammes de séquences peuvent servir à illustrer un cas d'utilisation.

<!-- Slide number: 3 -->

Eléments de base

Éléments du diagramme de séquence

Acteurs

Objets (instances)

Messages (cas d'utilisation, appels d’opération)

Principes de base :

Représentation graphique de la chronologie des échanges de messages avec le système ou au sein du système

« Vie » de chaque entité représentée verticalement

Échanges de messages représentés horizontalement

<!-- Slide number: 4 -->

Eléments de base

![](Picture2.jpg)

<!-- Slide number: 5 -->

Objet

Les objets qui participent à une interaction sont représentés graphiquement dans undiagramme de séquence par un carré contenant l’identifiant de l’objet (si l’objet n’est pas anonyme), suivi du nom de la classe dont l’objet est instance (si l’objet est typé).

Attaché à ce carré, une ligne verticale représente la vie de l’objet dans le temps (l’axe du temps étant dirigé vers le bas du diagramme).

<!-- Slide number: 6 -->

Objet

![](Espaceréservéducontenu3.jpg)

<!-- Slide number: 7 -->

Ligne de vie

Une ligne de vie représente un participant à une interaction (objet ou acteur).

nomLigneDeVie [ selecteur ]: nomClasseOuActeur

Dans le cas d'une collection de participants, un sélecteur permet de choisir un objet parmi n (par exemple objets[2]).

![](Picture2.jpg)

<!-- Slide number: 8 -->

Messages

Les principales informations contenues dans un diagramme de séquence sont les messages échangés entre les lignes de vie, présentés dans un ordre chronologique.

Un message définit une communication particulière entre des lignes de vie (objets ou acteurs).

Plusieurs types de messages existent, dont les plus courants :

l'envoi d'un signal ;

l'invocation d'une opération (appel de méthode) ;

la création ou la destruction d'un objet.

La réception des messages provoque une période d'activité (rectangle vertical sur la ligne de vie) marquant le traitement du message(spécification d'exécution dans le cas d'un appel de méthode).

<!-- Slide number: 9 -->

Publicité

Message synchrone

Un message synchrone bloque l'expéditeur jusqu'à la réponse du destinataire. Le flot de contrôle passe de l'émetteur au récepteur.

Typiquement : appel de méthode

Si un objet A invoque une méthode d'un objet B, A reste bloqué tant que B n'a pas terminé.

On peut associer aux messages d'appel de méthode un message de retour (en pointillés) marquant la reprise du contrôle par l'objet émetteur du message synchrone.

![](Picture2.jpg)

<!-- Slide number: 10 -->

Message synchrone : Exemple

Émetteur bloqué en attente du retour

![](Picture2.jpg)

<!-- Slide number: 11 -->

Correspondance messages/opérations

Les messages synchrones correspondent à des opérations dans le diagramme de classes.

Envoyer un message et attendre la réponse pour poursuivre son activité revient à invoquer une méthode et attendre le retour pour poursuivre ses traitements.

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 12 -->

Implémentation des messages synchrones

class B {

C c;

op1 (p: Type ){

c. op2 (p);

c. op3 ();

}

}

class C {

op2 (p: Type ){

...

}

op3 (){

...

}

}

![](Picture2.jpg)

<!-- Slide number: 13 -->

Message asynchrone

Un message asynchrone n'est pas bloquant pour l'expéditeur.

Le message envoyé peut être pris en compte par le récepteur à tout moment ou ignoré.

Typiquement : envoi de signal (voir stéréotype de classe « signal » ).

![](Picture2.jpg)

![](Picture2.jpg)

<!-- Slide number: 14 -->

Correspondance messages/signaux

Les messages asynchrones correspondent à des signaux dans le diagramme de classes.

Les signaux sont des objets dont la classe est stéréotypée signal et dont les attributs (porteurs d'information) correspondent aux paramètres du message.

![](Picture2.jpg)

![](Picture3.jpg)

Publicité

<!-- Slide number: 15 -->

Création d’objet

La création d'un objet est matérialisée par une flèche qui pointe sur le sommet d'une ligne de vie.

On peut aussi utiliser un message asynchrone ordinaire portant le nom « create » .

![](Picture2.jpg)

![](Picture2.jpg)

<!-- Slide number: 16 -->

Destruction d’objet

La destruction d'un objet est matérialisée par une croix qui marque la fin de la ligne de vie de l'objet.

![](Picture3.jpg)

![](Picture2.jpg)

<!-- Slide number: 17 -->

Création et destruction d’objet

![](Picture2.jpg)

<!-- Slide number: 18 -->

Message réflexif

Ils représentent des messages qu’un objet s’envoie à lui-même.

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 19 -->

Messages complets, perdus et trouvés

Un message complet est tel que les événements d'envoi et de réception sont connus.

Un message complet est représenté par une èche partant d'une ligne de vie et arrivant à une autre ligne de vie.

Un message perdu est tel que l'événement d'envoi est connu, mais pas l'événement de réception.

La flèche part d'une ligne de vie mais arrive sur un cercle indépendant marquant la méconnaissance du destinataire.

Un message trouvé est tel que l'événement de réception est connu, mais pas l'événement d'émission.

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 20 -->

Syntaxe des messages

La syntaxe des messages est :

nomSignalOuOperation ( parametres )

La syntaxe des arguments est la suivante :

nomParametre = valeurParametre

Pour un argument modiable :

nomParametre : valeurParametre

Exemples :

appeler("Capitaine Hadock", 54214110)

afficher(x,y)

initialiser(x=100)

f(x:12)

<!-- Slide number: 21 -->

Message de retour

Le récepteur d'un message synchrone rend la main à l'émetteur du message en lui envoyant un message de retour.

Les messages de retour sont optionnels : la fin de la période d'activité marque également la fin de l'exécution d'une méthode.

Ils sont utilisés pour spécifier le résultat de la méthode invoquée.

![](Picture2.jpg)

Publicité

<!-- Slide number: 22 -->

Syntaxe des messages de retour

La syntaxe des messages de retour est :

attributCible = nomOperation ( params ): valeurRetour

La syntaxe des paramètres est :

nomParam = valeurParam

ou

nomParam : valeurParam

Les messages de retour sont représentés en pointillés.

<!-- Slide number: 23 -->

Exemple d'interaction

Cas d’utilisation

Diagramme de séquence correspondant

![](Picture2.jpg)

![](Picture3.jpg)

![](Picture4.jpg)

<!-- Slide number: 24 -->

Fragments d'interaction combinés

<!-- Slide number: 25 -->

Fragment combiné

Un fragment combiné permet de décomposer une interaction complexe en fragments suffisamment simples pour être compris.

Recombiner les fragments restitue la complexité.

Un fragment combiné se représente de la même façon qu'une interaction. Il est représenté un rectangle dont le coin supérieur gauche contient un pentagone. Dans le pentagone figure le type de la combinaison (appelé opérateur d'interaction ).

<!-- Slide number: 26 -->

Exemple

![](Picture2.jpg)

<!-- Slide number: 27 -->

Types d’opérateurs d’interaction

Opérateurs de branchement(choix et boucles)

alternative, option, break et loop ;

Opérateurs contrôlant l'envoi en parallèle de messages :

parallel et critical region ;

Opérateurs contrôlant l'envoi de messages :

ignore, consider, assertion et negative ;

Opérateurs fixant l'ordre d'envoi des messages :

weak sequencing et strict sequencing.

<!-- Slide number: 28 -->

Opérateurs alt

L’opérateur alternative, ou alt

Est un opérateur conditionnel (l’équivalent d’une exécution à choix multiple SWITCH)

Il peut posséder plusieurs opérandes, chacune ayant une condition de garde.

Absence de condition de garde = condition vrai

Condition else est vrai si aucune autre n’est vrai.

<!-- Slide number: 29 -->

Opérateur alt : Exemple

![](Picture3.jpg)

<!-- Slide number: 30 -->

Publicité

Opérateur alt : Exemple

![](Picture2.jpg)

<!-- Slide number: 31 -->

Opérateurs opt

Opérateur « Option » ou opt

Représente un comportement qui peut se produire ou pas.

![](Picture2.jpg)

<!-- Slide number: 32 -->

Opérateur boucle loop

Syntaxe d'une boucle :

loop ( minNbIterations , maxNbIterations )

La boucle est répétée au moins minNbItérations fois avant qu'une éventuelle condition booléenne ne soit testée (la condition est placée entre crochets dans le fragment)

Tant que la condition est vraie, la boucle continue, au plus maxNbItérations fois.

Notations :

loop(valeur) est équivalent à loop(valeur,valeur).

loop est équivalent à loop(0,), où signie illimité .

<!-- Slide number: 33 -->

Opérateur boucle loop

![](Picture2.jpg)

<!-- Slide number: 34 -->

Opérateur parallèle par

L'opérateur par permet d'envoyer des messages en parallèle.

Ce qui se passe de part et d'autre de la ligne pointillée est indépendant.

![](Picture2.jpg)

<!-- Slide number: 35 -->

Opérateur par : exemple

![](Picture2.jpg)

<!-- Slide number: 36 -->

Réutiliser une interaction

Réutiliser une interaction consiste à placer un fragment portant la référence ref là où l'interaction est utile.

![](Picture2.jpg)

<!-- Slide number: 37 -->

Opérateur strict

Un fragments combiné de type strict sequencing, ou strict, possède au moins deux sous-fragments. Ceux-ci s’exécutent selon leur ordre d’apparition au sein du fragment combiné.

Ce fragment combiné est utile surtout lorsque deux parties d’un diagramme n’ont pas de ligne de vie en commun.

<!-- Slide number: 38 -->

Opérateur strict : Exemple

![](Picture2.jpg)

<!-- Slide number: 39 -->

Bibliographie

Introduction à UML 2 (Pierre Gérard) (P13 IUT Villetaneuse)

Introduction au langage de modélisation UML (Denis Conan, Chantal Taconet, Christian Bac)

UML diagramme de séquence (Delphine longuet)