UML:
Diagramme de
séquence
Dimanche 18 Février 2023
Les diagrammes de cas d’utilisation modélisent à QUOI
sert le système, en organisant les interactions possibles avec
les acteurs.
Les diagrammes de classes permettent de spécifier la
structure et les liens entre les objets dont le système est
composé : ils spécifient QUI sera à l‘œuvre dans le système
pour réaliser les fonctionnalités décrites par les diagrammes
de cas d’utilisation.
Par contre, les diagrammes de séquences permettent de
décrire COMMENT les éléments du système (objets, objets
d’analyse, objets logiciels) interagissent entre eux et avec les
acteurs pour réaliser un cas d’utilisation. C’est le diagramme 2
Exemple d’intéraction
oit le cas d’utilisation « ChangerPrixArticle » qui est représenté dans la fig
-dessous:
Son diagramme de séquences correspondant est le suivant:
3
Diagramme de séquences :
Exemple
Compte
- N°Compte : String
- Solde : float
+ <<Constructor>> Compte (int n, float s)
+ déposer (float somme) : void
+ retirer (float somme) : float
+ consulter () : float
Le client demande un service (déposer de l’argent) à l’objet Compte
Le compte reçoit le message et déclenche l’opération de même nom
Le compte retourne le résultat (le solde actuel)
4
Concepts Principaux
:X :Y
Les objets / acteurs
message
La ligne de vie de l’objet/acteur
message
Les messages
Le point de contrôle (barre d’activation)
5
Les Objets / Acteurs
Sur un diagramme de séquence, les objets
apparaissent toujours dans la partie supérieure, ce
qui facilite l'identification des classes qui participent à
l'interaction. :Acteur Objet:Classe
message
6
Ligne de vie des objets
Ce concept représente la vie d'un objet dans le contexte de la
séquence d'événements. Les objets qui sont créés vers la fin
de la séquence n'apparaissent pas toujours en haut du
diagramme, mais peuvent apparaître à l'endroit où ils sont
créés.
La ligne de vie peut se terminer à l'endroit où l'objet est
détruit. De même, la création d'un objet peut être représentée
simplement par l'envoi d'un nouveau message à un objet.
7
Les Messages
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.
8
d’activation)
La dimension verticale représente l’écoulement du temps.
Une période d’activité correspond au temps pendant lequel
un objet effectue une action directe ou indirecte. Elle est
représenté par une bande verticale le long de la ligne de vie
de l’objet. graphiquement elle est représentée en plaçant un
rectangle au-dessus de la ligne de vie de l'objet.
9
Les Principaux Types de Message
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.
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 10
Les Messages Synchrones
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.
11
L’implémentation des Messages Synchrones
en Java
12
Messages Asynchrones
Dans le cas d’un message asynchrone, l’expéditeur
n’attend pas la fin de l’activation de la méthode invoquée
chez le destinataire. Un message asynchrone peut être :
Un appel de méthode : Fréquent dans un système
multithreads (multitâche):
Ainsi, l’objet expéditeur n’étant pas bloqué pendant
l’exécution de la méthode, continuer ainsi à envoyer
d’autres messages.
13
Messages Asynchrones
Un message asynchrone peut être :
Un signal (cas le plus fréquent) :
L’objet expéditeur transmet juste une information à l’objet
destinataire. Souvent, ce sont les acteurs ou les périphériques
qui envoient des signaux, typiquement utilisé dans la gestion
événementielle d’une IHM graphique, comme la librairie QT,
par exemple. 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.
14
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.
15
Les Message de Création et de
destruction de lignes de vie
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».
La destruction d'un objet est matérialisée par une croix qui
marque la fin de la ligne de vie de l'objet.
16
Message minuté (Timeout)
Bloque l’expéditeur pendant un temps
donné, en attendant la prise en compte du
message par le récepteur
Après le délai, l’expéditeur est libéré et peut
envoyer Objet_2 Objet_1
Message_1 (20 secondes)
17
Message minuté (Timeout) :
Exemple
La porte d’un ascenseur s’ouvre pendant un
certain délai avant d’être refermée.
Ascenseur Porte
ouvrir (2 secondes)
fermer
18
Message minuté (Timeout) :
Exemple
La porte d’un ascenseur s’ouvre pendant un
certain délai avant d’être refermée.
Ascenseur Porte
ouvrir (2 secondes)
fermer
19
20
Messages Complet, perdu et trouvé
Un message complet est tel que les évènements d’envoi et
de réception sont connus. Il est représenté par une flè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. Exemple :
broadcast.
Un message trouvé est tel que l’événement de réception est
connu, mais pas l’événement d’émission. Un message trouvé
est un message pour lequel soit l’émetteur est inconnu, soit
le message provient d’une source aléatoire. 21
Syntaxe des messages
La syntaxe des messages est :
nomSignalOuOperation ( paramètres )
La syntaxe des arguments est la suivante :
nomParametre = valeurParametre
Pour un argument modifiable :
nomParametre : valeurParametre
Exemples :
o appeler("Capitaine Hadock", 54214110)
o afficher(x,y)
o initialiser(x=100)
o f(x:12)
22
Message récursif
appelé aussi message réflexif envoyé d’un objet vers lui-
même. On peut montrer qu’un objet s’envoie un message à
lui-même à l’aide d’une flèche circulaire.
23
Notion d’évènement
▷ Un évènement
est une interaction
pendant laquelle
quelque chose
arrive.
▷ Les évènements
sont les
constituants de
base des
messages.
Diagramme de Séquence: Exemple 1
Sur l'exemple suivant, un client demande un devis, un commercial
recherche le prix de base du produit et les ristournes accordées et
communique le devis au client.
25
Diagramme de Séquence: Exemple 2
Le DAB (Distributeur Automatique de Billet)
• Un DAB permet à tout détenteur de carte bancaire de retirer
de l’argent.
• Si le détenteur de carte est un client de la banque propriétaire
du DAB, il peut en plus consulter les soldes de ses comptes et
effectuer des virements entres ces différents comptes.
• Les transactions sont sécurisées c’est-à-dire :
Le DAB consulte le Système d’Information de la banque
(S.I. Banque) pour les opérations que désire effectuer un client
de la banque (retraits, consultation soldes et virements).
Le DAB consulte le Système d’Autorisation Globale Carte
Bancaire (Sys. Auto.) pour les retraits des porteurs de cartes non
clients de la banque. 26
Diagramme de Séquence: Exemple 2
Diagramme du cas d’utilisation du DAB
27
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation : « Retirer de
l’argent »
Partie 1 : Description.
• Titre : Retirer de l’argent.
• Résumé : Ce cas d’utilisation permet aux possesseurs de
carte bancaire de retirer de l’argent.
• Acteur principale : Un porteur de carte bancaire.
• Acteurs secondaires : Le Système d’Information de la
banque et le Système d’Autorisation Globale Carte
Bancaire.
• Date : 18/021/2023
• Responsable : E. REMY - Version : 1.0
28
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
Partie 2 : Description des scénarios.
Pré-conditions :
• Le DAB contient des billets.
• Les connexions avec le Système d’Autorisation et le Système
d’information de la banque sont opérationnelles.
Scénario nominale :
1) Le Porteur de carte introduit sa carte dans le DAB.
2) Le DAB vérifie que la carte introduite est bien une carte bancaire.
3) Le DAB demande le code de la carte au Porteur de carte.
4) Le Porteur de carte saisit son code.
5) Le DAB compare ce code avec celui qui est codé sur la carte.
6) Le DAB demande une autorisation au Système Globale
d’autorisation.
7) Le Système d’Autorisation globale donne son accord et indique le 29
crédit.
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
Scénario nominale (suite) :
8) Le DAB demande le montant désiré au Porteur de carte.
9) Le Porteur de carte saisit le montant.
10) Le DAB vérifie si le montant demandé est inférieur ou égale
au crédit.
11) Le DAB rend la carte et demande au Porteur de carte de la
retirer.
12) Le Porteur de carte reprend sa carte.
13) Le DAB demande au Porteur de carte s’il désire un ticket.
14) Le Porteur de carte accepte le ticket.
15) Le DAB délivre le ticket et les billets.
16) Le Porteur de carte prend les billets et le ticket.
30
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
Scénarios alternatifs :
• Scénario alternatif SA1: Le code est erroné pour la première ou la
deuxième fois.
SA1 commence au point 5 du scénario nominale.
Le DAB indique que le code est erroné.
Le DAB enregistre l’échec.
Le scénario reprend au point 3 du scénario nominal.
• Scénario alternatif SA2: Le montant demandé est trop élevé.
SA2 commence au point 10 du scénario nominale.
Le DAB affiche le montant max et demande au Porteur de carte de
ressaisir un montant.
Le scénario reprend au point 9 du scénario nominal.
31
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
Scénarios alternatifs :
• Scénario alternatif SA3: Le ticket est refusé.
SA3 commence au point 13 du scénario nominale.
14) L’utilisateur refuse le ticket.
15) Le DAB délivre les billets.
16) L’utilisateur prend les billets.
• Scénario alternatif SA4: Le porteur de carte est client de la banque.
SA4 commence au point 7 du scénario nominale.
Le DAB demande une autorisation auprès du Système d’Information de
la banque.
Le scénario reprend au point 9 du scénario nominal.
32
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
Scénarios d’exception:
• Scénario d’exception SE1: Carte non valide.
SE1 commence au point 2 du scénario nominal.
Le DAB Indique que la carte n’est pas valide restitue la carte et met fin
au cas.
• Scénario d’exception SE2: Le code est erroné pour la troisième fois.
SE2 commence au point 5 du scénario nominal.
Le DAB Indique que le code est erroné pour la troisième fois, confisque
la carte et met fin au cas.
• Scénario d’exception SE3: Retrait non autorisé.
SE3 commence au point 6 du scénario nominal.
Le DAB Indique que tout retrait est impossible, restitue la carte et met
33
fin au cas.
Diagramme de Séquence: Exemple 2
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
Post-conditions:
Les détails de la transaction doivent être enregistrés (montant, numéro
carte, date…) aussi bien en cas de succès que d’échec.
Partie 3 : Exigences non fonctionnelles
• La saisie du code confidentiel ne doit pas faire apparaître le code à
l’écran.
• Le compte du client ne doit pas être débité tant que le billets n’ont
pas été distribués.
34
35
Exercice 1:
Description textuelle du cas d’utilisation :
« Retirer de l’argent »
La rubrique « enchaînement nominal » du cas d'utilisation « retrait
d'espèces »contient les éléments suivants :
1. Le guichetier saisit le numéro de compte du client ;
2. L'application valide le compte auprès du système central ;
3. Le guichetier demande un retrait de 100 euros ;
4. Le système « guichet » interroge le système central pour s'assurer
que le compte est suffisamment approvisionné ;
5. Le système central effectue le débit du compte ;
6. En retour, le système notifie au guichetier qu'il peut délivrer le
montant demandé.
Question : Donner le diagramme de séquences associé à cette
description textuelle.
36
Solution: Exercice 1
Diagramme de Séquence: « Retrait d'espèces »
37
Exercice 2: Modélisation de la dynamique de
l'interaction entre classes
Le diagramme de classes ci-dessus décrit des robots composés de bras articulés,
eux-mêmes composés de pinces. L'implémentation des classes en question est la
suivante :
Question : Donnez un diagramme de séquence représentant l'échange de
messages résultant de l'exécution du programme principal. 38
Solution 2: Modélisation de la dynamique de
l'interaction entre classes
39
Exemples de messages
▷ Message de création : Dans un scénario de banque,
par exemple, le responsable peut commencer la
vérification du crédit d'un client en envoyant un
message de création au serveur.
▷ Message de suppression: Après avoir commencé un
contrôle de crédit, le responsable de la banque peut,
par exemple, fermer ou détruire l'application du
programme de crédit d'un client.
Exemples de messages:
▷ Message d’appel synchrone: Le guichetier peut
envoyer une demande d'approbation de crédit au
responsable. Il doit alors attendre la réponse avant de
pouvoir servir le client.
▷ Message d’appel asynchrone: Par exemple, un client
peut faire une demande de crédit et il peut recevoir des
informations bancaires par téléphone ou retirer de
l'argent à un GAB, tout en attendant toujours une
réponse à sa demande de crédit.
Exemples de message
▷ Signal asynchrone: Une agence de crédit peut
envoyer un message de signal d'erreur au responsable
de la banque pour indiquer un problème de connexion
au bureau des crédits.
Fragments
d’interactions
combinés (fragments
de séquence)
43
combinés Fragments
d’intéractions
Les fragments combinés
combinés sont des unités d’interaction définies dans
UML. Se sont des blocs permettant d’inclure dans des rectangles des
sous parties de diagramme de séquence. Les fragments de séquence
organisent l’interaction dans un diagramme de séquence.
44
combinés Fragments
Un fragmentd’intéractions
d’interactions est une combinés
partie du diagramme de
séquence (délimitée par un rectangle) associée à une étiquette
(dans le coin supérieur gauche). L’étiquette contient un
opérateur d’interaction qui permet de décrire des modalités
d’exécution des messages à l’intérieur du cadre.
[condition]
[condition]
45
combinés Fragments
• d’intéractions
Les opérandes combinés
d’un opérateur d’interaction sont séparés par
une ligne pointillée. Les conditions de choix des opérandes
(éventuels) sont données par des expressions booléennes
entre crochets ([ ]).
[condition]
[condition]
46
Fragments
Fragments d’intéractions
d’intéractions combinés
combinés
Il existe 13 opérateurs parmi lesquels on cite les opérateurs les plus
utilisés:
• alt : différentes alternatives selon condition.
•loop : répète le fragment tant que condition.
•par: représente des interactions ayant lieu en parallèle
•ref : référence un autre diagramme de séquence.
•opt : fragment optionnel.
•break: Abandonner l’exécution du block si une condition est vérifié.
•critical: représente une étape critique à réaliser.
47
Fragment d’interaction avec opérateur «
L’opérateur ractions
alt »alternatif combinés
(alt) est un opérateur conditionnel
possédant plusieurs opérandes séparés par des pointillés. C’est
l’équivalent d’une exécution à choix multiples. Chaque
opérande détient une condition de garde. Seul le sous-fragment
dont la condition est vraie est exécuté. La condition else est
exécutée que si aucune autre condition n’est valide
48
Fragment d’interaction avec opérateur «
» ractions
opt optionnelle
Sous-séquence exécutéecombinés
si condition de garde est
vraie. Elle est l’équivalent de Si …Alors.
49
Fragment d’interaction avec opérateur «
opt » ractions combinés
50
Fragment d’interaction avec opérateur «
Cet opérateur ractions
loopest» utilisé combinés
pour décrire un ensemble d’interaction
qui s’exécute en boucle. Un exemple de cet opérateur est
représenté pour le CAPTCHA, une marque commerciale
permettant de différencier de manière automatisée un
utilisateur humain d’un ordinateur.
51
Fragment d’interaction avec opérateur «
loop de
L’opérateur » ractions combinés
boucle (loop) exécute une itérative dont la
séquence qu’elle contient est exécutée tant que la garde qui lui
est associée est vraie. - La garde s’écrit de la façon suivante :
loop [min, max, condition] : Chaque paramètre (min, max et
condition) est optionnel. Le contenu du cadre est exécuté min
fois, puis continue à s’exécuter tant que la condition et que le
nombre d’exécution de la boucle ne dépasse pas max fois.
Exemple de gardes :
loop[3]→La séquence s’exécute 3 fois.
Loop[1, 3, code=faux] La séquence s’exécute 1 fois puis un
maximum de 2 autres fois si code=faux.
52
Fragment d’interaction avec opérateur «
loop » ractions combinés
53
Fragment d’interaction avec opérateur «
loop » ractions combinés
54
Fragment d’interaction avec opérateur «
par » ractions combinés
Il est utilisé pour représenter des interactions ayant lieu en parallèle .
55
Fragment d’interaction avec opérateur «
refref
Un fragment ractions
» permet d’inclurecombinés
un autre diagramme de
séquences. Il indique une référence vers un autre
diagramme de séquence existant
56
Fragment d’interaction avec opérateur «
ref » ractions combinés
58
Fragment d’interaction avec opérateur «
Exemple ref » ractions combinés
59
Exemple: Terminal de Point de
Vente (TPE)
Exemple: TPE
TPE: suite
Fragment d’interaction avec opérateur «
Break
Représente ractions
un»scénario combinés
d’exception qui est exécuté à la
place du reste du fragment d'interaction englobant. Un
opérateur break avec une garde est choisi lorsque la garde est
vraie. Dans ce cas, le reste du fragment d'interaction
englobant directement est ignoré. Lorsque la garde de
l'opérande break est false, l'opérande break est ignoré et le
reste de l'interaction englobante le fragment se poursuit.
Dans l’exemple, la clause break met fin à la clause
loop lorsque y>0.
63
Fragment d’interaction avec opérateur «
Critical »
L'opérateur d'interaction « critical » définit que le fragment
combiné représente une région critique qui doit être exécutée sans
interruption. Elle empêchera donc la réalisation des autres
interactions jusqu’à ce qu’elle se termine .
64
Critical »
65
Les autres opérateurs
"ignore" Indique qu’il existe des messages qui ne sont
pas présents dans le fragment combiné.
"consider" Désigne les interactions à prendre en compte
dans la séquence.
"assert" (assertion) Indique que le fragment combiné est
une assertion. Pour les fragments dont on connaît à
l’avance les paramètres du message (exemple : après la
saisie des 4 chiffres d’un code, la saisie suivante sera
obligatoirement la touche « Entrée »).
"neg" (negative) désigne un ensemble d’interactions
invalides.
"seq" (weak sequencing) notifie que les interactions qui
s’opèrent entre des entités indépendantes n’ont pas 66
Les fragments combinés en
exemple
Le diagramme de séquence présenté précédemment dans le cours
ne correspond qu’au scénario nominal du cas d’utilisation. Des notes
(optionnelles) permettent d’indiquer les scenarii alternatifs et
d’exceptions.
Chaque scénario nominal ou d’exception peut être documenté par
son propre diagramme de séquence. Grâce aux fragments
d’interactions, il est possible de documenter un scénario alternatif
(ou d’exception) dans le diagramme de séquence du scénario
nominale.
Par exemple, le diagramme de séquence ci-dessous correspond à la
description du scénario nominal et du scénario alternatif SA4
(porteur de carte client banque).
67
68
69