Vous êtes sur la page 1sur 45

UML

Diagrammes d’interactions
Séquences et Communication
Unified Modeling Language

Pr A. Oubelkacem
Sommaire

• Introduction
• Diagrammes d’intéractions
• Intéraction
• Objectifs du diagramme de séquences
• Diagramme de séquence (branchement conditionnel,
contraintes temporelles)
• Types de message
• Objectifs du diagramme de Communication
(collaboration)
• Diagramme de Communication (collaboration)
Diagrammes d’interactions

Un diagramme d’interaction propose la même information qu’un


diagramme d’objets, en y ajoutant les envois de messages inter-
objets

Une interaction est un ensemble d’objets


qui interagissent en s’échangeant des messages

Il existe deux types de diagrammes d’interactions :


– Le diagramme de séquence
Il met l’accent sur la représentation temporelle d’une interaction
– Le diagramme de communication
Il met l’accent sur la représentation spatiale d’une interaction

Diagramme de collaboration et diagramme de séquence sont


équivalents
Diagrammes de Séquences

 Issus en grande partie de la méthode OMT (Rumbaugh) et de la


méthode Booch
 Le diagramme de séquence fait parties des diagrammes
comportementaux (dynamique) et plus précisément des
diagrammes d’interactions.
 Il permet de représenter des échanges entre les différents
objets et acteurs du système en fonction du temps.
 A moins que le système à modéliser soit extrêmement simple,
nous ne pouvons pas modéliser la dynamique globale du
système dans un seul diagramme. Nous ferons donc appel à
un ensemble de diagrammes de séquences chacun
correspondant à une sous fonction du système.
 Le diagramme de séquence est très important car
a) il est très descriptif
b) il peut être facilement couplé à un cas d’utilisation
Représentation du diagramme de
séquence

Délimitation du diagramme de séquence :

Le diagramme de séquence est placé dans un rectangle


qui dispose d’une étiquette sd en haut à gauche (qui
signifie sequence diagram) suivi du nom du diagramme.

Objet:
Dans un diagramme de séquence, l’objet à la même
représentation que dans le diagramme des objets. C'est-
à-dire un rectangle dans lequel figure le nom de
l’objet. Le nom de l’objet est généralement souligné et
peut prendre l’une des quatre formes suivantes :
Représentation du diagramme de
séquence

Le nom de l’objet est généralement souligné et peut


prendre l’une des quatre formes suivantes :

Les diagrammes de séquences représentant les échanges


entre les objets mais aussi les échanges avec les acteurs,
nous trouverons aussi la représentation du stickman (qui
peut être considéré comme un objet).
Objet du diagramme de séquence
(Notation)
• Dans un diagramme de
séquence, on ajoute à l’objet un Notation
axe temporel représentant sa
ligne de vie
• Cet axe temporel est
matérialisé par une
ligne pointillée sous
l’objet
• Sur cet axe temporel
apparaissent des bandes
rectangulaires représentant les
périodes d’activité de l’objet
• On considère que le temps
s’écoule du haut vers le bas
Remarque: Comme il représente la dynamique du système, le
diagramme de séquence fait entrer en action les instances de
classes intervenant dans la réalisation d’un cas d’utilisation particulier.
Objet du diagramme de séquence
(Notation)

Notation
• Dans un diagramme de
séquence, on ajoute à l’objet un
axe temporel représentant sa
ligne de vie
• La ligne de vie indique les
périodes d’activité de l’objet
(généralement, les moments
ou l’objet exécute une de
ces méthodes).
• Lorsque l’objet est détruit,
la ligne de vie s’achève par
une croix.
Les messages dans le diagramme
de séquences

Un message définit une communication particulière entre des lignes de vie.


Ainsi, un message est une communication d’un objet vers un autre objet.
La réception d’un message est considérée par l’objet récepteur comme un
événement qu’il faut traiter (ou pas).
L’envoi d’un message peut provoquer :

 Soit le déclenchement d’une opération sur l’objet récepteur: message


synchrone
 Soit l’émission d’un signal vers l’objet destination (voir diagramme
états-transitions): message asynchrone
 Soit la création d’une instance
 Soit la destruction d’une instance
 Soit un objet qui s’envoie un message à lui-même: message réflexif
Les messages dans le diagramme
de séquences

Les message synchrones:


La réception d’un message synchrone doit provoquer chez le
destinataire le lancement d’une de ses méthodes (qui souvent porte le
même nom que le message).
L’expéditeur du message reste bloqué pendant toute l’exécution de
la méthode et attend donc la fin de celle-ci avant de pouvoir lancer
un nouveau message.
C’est le message le plus fréquemment utilisé.

Les messages asynchrone:

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 :
Les messages dans le diagramme
de séquences

 Un appel de méthode :

Fréquent dans un système multi-threads (multi-tâche). Ainsi, l’objet


expéditeur n’étant pas bloqué pendant l’exécution de la méthode, il
peut continuer ainsi à envoyer d’autres messages.
 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 messages dans le diagramme
de séquences
Les envois de message sont matérialisés par des flèches étiquetés par
le nom du message envoyé.
3 types de message :
Message synchrone
(flèche avec un triangle plein à son
extrémité)
Message asynchrone
(simple flèche)
Message réflexif
l’objet s’envoie un message à lui-même
Messages de retour (réponses) : (simple flèche en pointillés).
 Si une méthode qui a été activée (par un message) doit retourner des valeurs
à la fin de son activation, cela se fait par un message retour.
 Le message de retour n’est donc pas un appel de méthode (il ne
provoque donc pas l’activation d’un objet)
 Le message retour porte souvent le nom de l’élément retourné.
Les messages dans le diagramme
de séquences

Exemple d ’envoie de message


Les messages dans le diagramme
de séquences

Syntaxe des messages Synchrone et asynchrones


Dans la plupart des cas, la réception d’un message est suivie de l’exécution
de la méthode de la classe cible. Cette méthode peut recevoir des arguments
et la syntaxe des messages permet de transmettre ces arguments. La plupart
du temps, dans un diagramme de séquence, nous pouvons nous contenter de
définir un message par :
- Son nom (qui est le nom de la méthode appelée ou du signal envoyé).
Nous pouvons lui adjoindre facultativement :
- Une numérotation devant le nom message (séparé du nom du message
par " : "). La numérotation s’effectue séquentiellement à partir de 1.
- Les paramètres passés à la méthode ou au signal (entre parenthèses
après le nom du message).
Les messages dans le diagramme
de séquences

Syntaxe des messages Synchrone et asynchrones

Exemple d’instauration d’une communication téléphonique


Les messages dans le diagramme
de séquences

Messages retours implicites et explicites


Le retour d’un message synchrone peut ne pas être représenté, le retour est alors
implicite.
Par contre, dans le cas d’un message asynchrone, il est impératif de faire apparaître
le message de retour. Le retour est explicite. Bien entendu, si l’exécution de la
méthode lancée par le message asynchrone ne doit rien retourner, il est évident que
nous ne devons pas représenter le message de retour (c'est généralement le cas le plus
classique, notamment avec la gestion événementielle).

Les 3 diagrammes suivants sont équivalents :


Les messages dans le diagramme
de séquences

Syntaxe des messages de retour


Comme pour les messages synchrones ou asynchrones, nous pouvons nous
contenter de donner au message retour un simple nom, mais nous pouvons
aussi les caractériser plus précisément en utilisant la syntaxe suivante :
numéro : attribut = nomMessage (paramètres) : valeurDeRetour.
Création, animation et destruction
d’un objet (suite)

• Une interaction spécifie une succession


d’échange de message entre les objets Notation
participant à l’interaction.
• Le temps donc très important puisqu’il
précise l’ordre d’exécution entre tous les id1:
messages d’une même interaction
• Le temps est gouverné par deux règles Création
principales: id2: B

 Sur l’axe d’un objet, tous les Opération 1


événements sont ordonnées du haut
vers le bas
 Pour un même message, l’envoi se Opération 2
Suppression
déroule toujours avant la réception
Grâce à ces 2 règles, il est possible de
définir un ordre partiel entre tous les
événements d’une interaction UML
Création, animation et destruction
d’un objet( Messages)

• Le premier message signifie que l’objet


id1 crée l’objet id2. Notation
• Le 2 ème message signifie que l’objet id1
demande à l’objet id2 de réaliser
id1:
l’opération nommée opération1. l’objet
id1 attend que l’objet id2 finisse de
Création
réaliser cette opération avant de continuer id2: B
son activité.
• le 3 ème message signifie que l’objet id1
Opération 1
demande à l’objet id2 de réaliser
l’opération nommée opération2. l’objet
id1 n’a pas besoin d’attendre la fin du Opération 2
traitement de l’opération pour continuer Suppression
son activité.
• Le dernier message est un message de
suppression. L’objet id1 supprime l’objet
id2.
Création, animation et destruction
d’un objet( Messages)(temps)

Grâce à ces deux règles, nous savons que ces


échanges obéissent à l’ordre suivant: Notation

• Sur l’axe de l’objet id1: m1(appel/envoi) avant


m1(retour/réception) avant m3(a/e) avant m4(a/e) id1:A id2: B id3: C
avant m6(a/e). m1
• Sur l’axe de l’objet id2: m1(a/r) avant m2(a/e) m2
avant m2(r/r) avant m1(r/e) avant m3(r/r) avant
m4(a/r) avant m5(a/e).
• Sur l’axe de l’objet id3: m2(a/r) avant m2(r/e) m3
avant m3(a/r) avant m3(r/e) avant m5(a/r) avant
m6(a/r).
m4

m5
Grâce à la règle 2:
Pour tous les messages mi(x/envoi) avant m6
mi(x/réception).
Création, animation et destruction
d’un objet

 La création d’un objet est matérialisée par un message spécifique,


appel d’un constructeur, généralement accompagné du stéréotype «
create » qui pointe sur le début (le sommet) de la ligne de vie de
l’objet créé (Le rectangle de l’instance de la classe est alors surbaissée).

 La destruction d’un objet est représentée par une croix à la fin de sa ligne
de vie. Souvent l’objet est détruit suite à la réception d’un message mais
ce n’est pas obligatoire. Dans ce cas là, il porte le stéréotype « destroy ».
Messages réflexifs

Messages réflexifs :

Un objet peut s’envoyer un message à lui-même (utilisation d’une


autre méthode du même objet). Cela se représente là aussi par un
dédoublement de la bande d’activation.
Contraintes temporelles :

Contraintes temporelles :
Des repères temporels avec des contraintes peuvent être placés le
long de la ligne de vie. Un message avec un temps de propagation
non négligeable peut être représenté par une flèche oblique ou en
l'écrivant explicitement.
Les fragments d’intéractions

Un fragment d’interactions est une 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.
Les fragments d’intéractions

Les opérandes 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 ([ ]).

Les principales modalités sont les:


 boucles,
 branchements conditionnels,
 alternatives,
 envois simultanés, etc.
Fragment d’interaction avec opérateur « opt » :

L’opérateur option (opt) comporte un opérande et une condition de


garde associée. Le sous fragment s’exécute si la condition de garde est
vraie et ne s’exécute pas dans le cas contraire.
Les fragments d’intéractions

Fragment d’interaction avec opérateur (alt)


L’opérateur alternatives (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.
Les fragments d’intéractions

Fragment d’interaction avec opérateur (loop)


L’opérateur de 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.
Les fragments d’intéractions

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.
Les fragments d’intéractions

Fragment d’interaction avec opérateur (par)


Un fragment d’interaction avec l’opérateur de traitements parallèles
(par) contient au moins deux sous fragments (opérandes) séparés
par des pointillés qui s’exécutent simultanément (traitements
concurrents).
Les fragments d’intéractions

Nous venons de voir les 4 fragments d’interactions les plus utilisés (opt, alt, loop et par).
Il en existe en réalité 13 au total, ci-dessous la liste des 8 autres :

 ignore et considere : pour les fragments facultatifs ou obligatoires.


 critical : pour les fragments qui doivent se dérouler sans être interrompus.
 break : pour les fragments représentants des scenario exceptionnels ou de ruptures
(ex appui sur la touche « Esc »). Le scénario de rupture est exécuté si une condition de
garde est satisfaite.
 seq : indique que le fragment est composé de plusieurs sous fragments qui peuvent
s’exécuter
 dans n’importe quel ordre (mais pas en même temps).
 strict : pour les fragments dont les messages doivent se dérouler dans un ordre bien
précis.
 neg : pour indiquer que la séquence à l’intérieur du fragment n’est pas valide.
 ref : permet de faire appel à un autre diagramme de séquence.
Le diagramme de communication
Diagramme de communication

• Le diagramme de communication fait partie des vues dynamiques du


système d’information et précise l’ordre dans lequel les interactions
interviennent sans avoir recours au temps.

• Ce type de diagramme montre les interactions et les liens entre objets


(instances de classes et acteurs). Il s'intéresse à la structure de
communication entre objets (séquencement, itération, concurrence, etc.). Il
permet de représenter le contexte d'une interaction, car on peut y préciser les
états des objets qui interagissent.

• Le digramme de communication représente un ensemble de rôle joués par


les objets dans un contexte particulier, ainsi que les liens entre ces objets.

• Le diagramme de Communication est placé dans un rectangle qui dispose


d’une étiquette com haut à gauche (qui signifie Communication diagram)
suivi du nom du diagramme.
Composants du Diagrammes de
Communication

Les diagrammes comportent les composants suivantes:

• Les objets (instances de classes).


• Les liens entre objets( comme dans le diagramme de classes).
• Les interactions entre objets sous forme d’une suite de messages
numérotés pour indiquer l’ordre des envois
• Les acteurs. ( Chaque acteur joue un rôle)

Exemple : on représente un diagramme de communication illustrant la


recherche puis l'ajout, dans son panier virtuel, d'un livre lors d'une
commande sur Internet.
Les différents objets: Internaute, Interface, Catalogue, Panier, AjouterLigne
Diagrammes de Communication
(Exemple)

Remarque : Contrairement à un diagramme de séquence, un diagramme de


communication rend compte de l'organisation spatiale des participants à
l'interaction, il est souvent utilisé pour illustrer un cas d'utilisation ou pour
décrire une opération. Le diagramme de communication aide à valider les
associations du diagramme de classe en les utilisant comme support de
transmission des messages.
Diagrammes de Communication
(Exemple)

Remarque :

Contrairement à un diagramme de séquence, un diagramme de


communication rend compte de l'organisation spatiale des
participants à l'interaction, il est souvent utilisé pour illustrer un cas
d'utilisation ou pour décrire une opération. Le diagramme de
communication aide à valider les associations du diagramme de
classe en les utilisant comme support de transmission des messages.
Messages d’un diagramme de
communication

• Les objets communiquent en échangeant des messages


représentés sous forme de flèches.
• Les messages sont étiquetés par le nom de l’opération ou du
signal invoqué.
• L’envoi d’un message nécessite que le récepteur puisse
réaliser l’opération.
Messages : étiquettes

Les étiquettes décrivent les messages auxquels elles sont


attachées.

• Syntaxe générale:
[synchronisation] [’[’garde’]’][séquence] [itération] [résultat
:=]nom message [’(’arguments’)’]

• nom message : nom de l’opération ou du signal invoqué


par l’intermédiaire de ce signal
• garde : condition booléenne et optionnelle (représentée
entre crochets) autorisant ou non l’envoi d’un message.
Messages : Séquence

• Ensemble de numéros ordonnant l’envoi des msges (1 puis 2 puis 3..)


• Numérotation englobante (cas d’appels de procédure) : 2 (appel
initial)
puis 2.1 (premier appel imbriqué) puis 2.2 (second sous-appel) puis
3 (appel du même niveau que le numéro 2).
Messages : itération

• Itération séquentielle : envoi séquentiel de n instances du


même message.
Syntaxe : *[ clause d’itération ]
• Itération parallèle : envoi parallèle de n instances du même
message.
Syntaxe : *||[ clause d’itération ]
Messages : résultat

• Le résultat est constitué d’une liste de valeurs retournées


par le message.
• Ces valeurs peuvent être utilisées comme paramètres des
autres messages.
Messages : synchronisation

• Synchronisation de message : envoi d’un message ssi d’autres


messages ont déjà été envoyés.
• Syntaxe : message1, message2 ... /
Diagramme de communication (exemple)

Exemple récapitulatif 1 : donner un diagramme de communication


pour décrire le recrutement d'une personne par la société SSII?
Les différents objets: Personne, ConseilRecrutement, Société, CDI

2: rechercheCandidat(p)

objetP : Personne : ConseilRecrutement

1: proposer-
Poste(p) 3: proposer-
les événements sont Candidat(p,
numérotés objetP)

: CDI SSII : Société


7: recruter(p,objetP)
6: évaluer(p, objetP)
Diagramme de communication (exemple)
Exemple récapitulatif 2 : Diagramme de communication pour
l’évaluation d’un stock de produits correspond à un cas
d’utilisation Evaluer Stock. Les différents objets: Auditeur,
Entreprise, Stock, StockReel, Produit, Afficheur
Diagramme de séquence (Exemple d’application)
La société (fictive) bouquine a décidé de rejoindre les rangs des
grandes libraires en ligne. L’objectif fondamental de site est de
permettre aux internautes de rechercher des ouvrages par thème,
auteur, mot-clé,…de se constituer un panier virtuel, puis de pouvoir
les commander et les payer directement sur le web. Pour la
recherche d’ouvrage on considère le scénario nominale suivant:
-L’internaute lance une recherche rapide à partir de mot-clé,
-Le système affiche une page de résultat que l’ouvrage est trouvé,
-L’internaute sélectionne un ouvrage,
-Le système lui présente une fiche détaillé pour l’ouvrage.
On utilisant les fragments d’intéractions, indiquer qu’on peut
effectuer soit une recherche rapide ou avancée, on peut
optionnellement mettre l’ouvrage trouvé dans le panier et la
recherche d’ouvrage est répétable à volonté.
Représenter également le cas d’erreur où le système ne trouve pas
d’ouvrage correspondant à la requête.
Diagramme de séquence (Exemple d’application)
Suite à une recherche d’ouvrage réussite, on peut alors modifier la
quantité ou le nombre d’ouvrages sélectionné, puis de faire la mise
à jour du panier, finalement le panier est mis à jour.

Vous aimerez peut-être aussi