Professional Documents
Culture Documents
1
2. Types de visualisation dans UML
2
2.1.3. Description d’un Use Case
Un use case est décrit par :
Ses Objectifs
Le Flot des messages entre l’acteur et le Use Case
Le Flot secondaire des messages entre l’acteur et le Use Case
Les Condition de fin pour le Use Case et information retournée à l ’acteur lors qu’il se termine
La visualisation dynamique est décrite par les diagrammes d’états, séquentiels (de séquence), de
collaboration et d’activité
2.2.1Vision statique
Le diagramme de classes est un modèle statique du système qui décrit le système en termes de
ses classes et des relations entre celles-ci. Il sert de base aux autres diagrammes où d’autres
3
facettes du système sont décrites (tels les diagrammes d ’états des objets ou les diagrammes de
collaboration qui sont des diagrammes dynamiques)
La syntaxe dans les différents compartiments est indépendante des langages de programmation
a. Compartiment de nom
Il contient le nom de la classe.
Il est centré dans le compartiment.
Il est imprimé en caractères gras.
Le nom ne doit pas être ambigu et doit être tiré du domaine propre au problème.
4
Optionnellement, on peut aussi indiquer qu’un attribut possède une portée s’appliquant à la
classe (class scope) ou une chaîne de propriétés indiquant les valeurs que peut prendre
l’attribut.
Exemples de classe avec attributs
Spécification de l’opération
Une méthode (opération) est spécifiée par :
les Pré-conditions: doivent être vérifiées avant que l’algorithme ne s’exécute
les Post-conditions: doivent être vraies une fois l’opération complétée
l’Algorithme: effet que l’opération a sur l’objet
5
–les raffinements
a. Association normale
Une association normale est une connexion entre classes.
- Elle possède un nom.
- Elle est généralement navigable de manière bidirectionnelle (dans ce cas elle a un nom
dans les deux sens si nécessaire)
- Elle a une multiplicité
- Elle peut être dotée de rôles
b. Association récursive
Une classe peut être connectée à elle-même via une association récursive. Elle représente une
connexion sémantique entre des objets mais avec la différence que ceux-ci appartiennent à la
même classe
6
Elle indique une relation tout-partie avec inclusion « physique ». Elle se représente par une ligne
avec un losange plein du côté « tout » de l’agrégation. Ce losange ne peut apparaîtra qu’à une
seule extrémité.
Une agrégation par composition possède des rôles, multiplicité, …etc., comme une association
normale
Les Interfaces
Les interfaces sont des classes contenant seulement des opérations sans implantation.
Une classe peut implanter une interface.
Le symbole d’implantation est une flèche pointillée allant de la classe vers l ’interface
Ici, la classe A implante les interfaces Storable et Runnable et B utilise ces implantations
7
2.2.1.2. Les Packages
Pour les systèmes comprenant plusieurs classes, il convient de regrouper celles-ci en entités
logiques, les packages
Un package est un ensemble de packages et de classes reliés sémantiquement entre eux.
Chaque package est muni d’une interface (ses classes public) qui lui permet de communiquer sa
fonctionnalité aux autres packages qui peuvent l’importer
Un package est représenté par un dossier (folder).
Les Packages ont eux aussi un niveau de visibilité est des relations qui sont ici: la dépendance, le
raffinement, et la généralisation
8
Le modèle a-t-il une utilité pour décrire le système?
Le modèle embrasse-t-il les caractères essentiels du système (permet-il entre autres de bien
répéter les use-cases?
Les noms des classes du modèle reflètent-ils les noms des éléments du système (i.e. les noms
sont-ils pertinents)?
Des modèles différents de la même chose sont-ils intégrés et coordonnés entre eux?
Les modèles sont-ils simples (même pour les systèmes complexes)?
9
2.2.2. Visualisation « Dynamique »
La modélisation dynamique sert à montrer comment les objets d’un système collaborent pour
réaliser une fonctionnalité du système. Elle montre comment les objets s’échangent des
messages (i.e. comment un objet, le client, invoque une opération sur un autre objet, le serveur).
Ces échanges sont appelés interactions.
Les interactions sont montrées via trois principaux diagrammes: séquence, collaboration,
activité.
Un autre diagramme, le diagramme d’état décrit le comportement d’un objet mais cette fois-ci
pris isolément.
Diagramme d’états: décrit les états que peut prendre un objet durant son cycle d’existence et le
comportement de ces états de même que les événements qui provoquent un changement d’état
de l’objet
Diagramme séquentiel : montre comment les objets interagissent et communiquent entre eux
pour accomplir une tâche du système. La variable indépendante est ici le temps.
Diagramme de collaboration: montre comment les objets interagissent et communiquent entre
eux pour accomplir une tâche du système. La variable indépendante est ici le l’espace. Par espace
on entend ici les relations (liens) entre les objets dans le système.
Diagramme d’activité: montre comment les objets interagissent et communiquent entre eux
pour accomplir une tâche du système. La variable indépendante est ici le travail accompli par les
objets.
1. synchrone: l’objet appelant transmet le message et attend la réponse (i.e. la valeur de retour de
l’opération appelée) avant de poursuivre son activité;
2. asynchrone: l’objet appelant transmet le message et n’attend pas la réponse (i.e. la valeur de
retour de l’opération appelée) avant de poursuivre son activité. Cela implique par exemple que les
objets peuvent s’exécuter sur des threads différents.
3. simple: message dont on ne spécifie pas la nature exacte (synchrone ou asynchrone);
4. synchrone avec retour immédiat: cas spécial de message synchrone pour lequel l’attente de la
réponse du serveur est négligeable.
10
2.2.2.1. Les diagrammes de séquence
Ils illustrent comment les objets interagissent entre eux. Ils se concentrent sur la séquence des
messages envoyés entre les objets (c’est-à-dire comment et quand les messages sont envoyés et
reçus entre les objets)
Ils possèdent deux axes: l’axe vertical montre le temps tandis que l’axe horizontal montre
l’ensemble des objets en interaction dans un scénario ou une scène spécifique d’un scénario.
Les diagrammes de séquence peuvent être utilisés sous deux formes:
– forme générique: elle décrit tous les déroulements possibles d’un scénario et peut contenir des
branchements, des conditions, et des boucles.
– forme d’instanciation: elle décrit le comportement du système pour un aspect spécifique d’un
scénario et ne peut donc contenir aucun branchement et aucune condition ou boucle.
Les messages les plus communs qu’un objet peut recevoir sont :
• l’envoi d’un signal ;
• l’invocation d’une opération ;
• la création ou la destruction d’une instance.
L’envoi d’un signal déclenche une réaction chez le récepteur, de façon asynchrone et sans
réponse : l’émetteur du signal ne reste pas bloqué le temps que le signal parvienne au récepteur et
il ne sait pas quand, ni même si le message sera traité par le destinataire.
11
Plus encore que l’envoi d’un signal, l’invocation d’une opération est le type de message le plus
utilisé en programmation objet. Si, par exemple, une classe C possède une opération op,
l’invocation se fait par c.op(), où c est une instance de la classe C.
Notation
Un message synchrone se représente par une flèche à l’extrémité pleine qui pointe sur le
destinataire du message. Ce message peut être suivi d’une réponse qui se représente par une
flèche en pointillé.
Un message asynchrone se représente par une flèche à l’extrémité ouverte.
La création d’un objet est matérialisée par une flèche qui pointe sur le sommet d’une ligne de
vie.
La destruction d’un objet est matérialisée par une croix qui marque la fin de la ligne de vie de
l’objet.
12
considérées comme invalides, alors qu’une contrainte qui se vérifie rend valides les événements à
suivre.
Opérateur alt
l’opérateur d’interaction alt indique que le fragment est un choix. Les deux options de choix sont
appelées « opérandes de l’opérateur alt ».
13
Opérateur Loop
La syntaxe d’une boucle est la suivante :
loop [’(’ <minint> [’,’ <maxint> ] ’)’ ]
où la boucle est répétée au moins minint fois avant qu’une éventuelle condition booléenne ne soit
testée (la condition est placée entre crochets sur la ligne de vie) ; tant que la condition est vraie, la
boucle continue, au plus maxint fois (minint est un entier supérieur ou égal à 0, maxint est un
entier supérieur ou égal à minit).
loop( valeur ) est équivalent à loop( valeur, valeur ).
loop est équivalent à loop( 0, * ), où * signifie « illimité »
Opérateur par
14
L’opérateur par permet d’envoyer des messages en parallèle. Ses opérandes se déroulent en
parallèle.
15
DÉCOMPOSITION D’UNE LIGNE DE VIE
Une décomposition est référencée dans le rectangle en tête de ligne de vie, sous le label ref.
À la figure 3.26, la ligne de vie PointDAccès est décomposée en deux lignes p1 et p2.
Cette notation est une autre manière de décomposer une ligne de vie dans un diagramme
d’interaction.
16
Une porte est un point de connexion qui permet de relier un même message représenté par des
flèches différentes dans plusieurs fragments d’interaction.
Exercice
Le programme suivant, écrit en pseudo-code, permet de calculer le factoriel d’un nombre n :
int factoriel( int n ){
if( n == 0 ) return 1;
return n * factoriel( n-1) ;
}
où n 0 et factoriel( 0 ) = 1.
Représentez le programme précédent sur un diagramme de séquence.
Corrigé
17
2.2.2.2. Les diagrammes de collaboration
Tout comme un diagramme de séquence, un diagramme de collaboration décrit le déroulement
d’une interaction entre plusieurs objets.
Sur un diagramme de collaboration, les objets constituent les nœuds d’un graphe dont les arcs
correspondent aux actions (i.e., l’envoi de messages, l’instanciation et la destruction d’objets). Le
temps n’est pas associé à une dimension particulière du diagramme, mais la chronologie de
l’interaction est exprimée par des numéros de séquence qui accompagnent les actions.
Les diagrammes de collaboration montrent les interactions et les liens entre un ensemble d’objets
participant à un scénario.
Ils focalisent leur attention sur l’aspect spatial des interactions.
Ils sont particulièrement utiles pour montrer la réalisation des use-cases (sans que les aspects
temporels des interactions ne soient nécessairement rendus explicites).
Les objets sont dessinés comme des classes mais leurs noms sont soulignés.
Les liens sont illustrés par des lignes (qui ressemblent à des lignes d’associations dans les
diagrammes de classes mais sans les informations de multiplicité).
Un lien entre deux objets dénote l’envoi d’un message ou une action d’instanciation ou de
destruction.
Un message, accompagné d’une étiquette, peut être associé à un lien pour montrer le sens et
l’ordonnancement de la transmission du message.
18
Les étiquettes des liens sont similaires à celles des transitions d’un diagramme de séquence. Elles
sont cependant préfixées d’un numéro de séquence qui précise l’ordre dans lequel les actions sont
effectuées. Ces numéros peuvent être imbriqués afin de mettre en évidence la structure de
l’interaction.
Exemple 1
19
Exemple 2
Exemple de gestion des commandes.
20
où message a la même forme que dans les diagrammes de séquence, numéro_séquence représente
le numéro de séquencement des messages tel qu’il a été défini précédemment et expression
précise une itération ou un embranchement.
Exemple
2 : affiche( x, y ) est un message simple.
1.3.1 : trouve("Hadock" ) est un appel emboîté.
4 [x < 0] : inverse( x, couleur ) est un message conditionnel.
3.1 *[i :=1..10] : recommencer() représente une itération.
Le branchement
Les différentes branches d’un choix conditionnel sont repérées par le même numéro de séquence
auquel on ajoute un suffixe propre à la branche (e.g., 2a, 2b, 2c, . . . ).
Exemple :
21
Parameter: montre que l’instance est visible parce que c’est un paramètre d’une opération. Une
référence à l’objet récepteur a été reçue comme paramètre par la méthode émettrice. Le
stéréotype à utiliser est «parameter» or [P].
Self: montre qu’un objet peut s’envoyer des messages
Vote: contrainte imposée à un message limitant l’éventail des valeurs de retour (spécifie que la
valeur de retour est choisie au vote majoritaire entre différentes valeurs de retour)
Broadcast: contrainte appliquée à un ensemble de messages pour signifier qu’ils ne sont pas
exécutés dans un ordre donné.
Exemple
22