Vous êtes sur la page 1sur 39

Réf :

Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 1

UML 2.0 Topcased Cookbook


Un ensemble d’astuces permettant de manipuler le modèle
Ce document est à mettre à jour chaque fois qu’une manipulation mérite une
description détaillée avec captures d’écran et exemple

1. INTRODUCTION................................................................................................................................ 1

2. QUE DOIS-JE FAIRE POUR CRÉER UN MODELE UML AVEC TOPCASED ?.............................. 1

3. COMMENT CRÉER UN PAQUET DANS MON MODÈLE ?.............................................................. 3

4. COMMENT DÉPLACER UN PAQUET OU UN ÉLEMENT DE MODÈLE ?...................................... 6

5. COMMENT AJUSTER LA TAILLE DE MON DIAGRAMME ?.......................................................... 7

6. PEUT-ON UTILISER LE « DRAG AND DROP » POUR CRÉER DES DIAGRAMMES ?................. 9

7. JE NE VOIS PAS DE TYPES DE DONNEE SIMPLE (STRING). COMMENT Y ACCEDER ?........ 11

8. SÉLECTIONNER FACILEMENT UN TYPE DE PARAMETRE (NOUVEAU).................................. 13

9. DÉTERMINER LES DIAGRAMMES UTILISANT UN ÉLEMENT DONNÉ (NOUVEAU)................. 15

10. COMMENT REORGANISER LE MENU CREATECHILD.............................................................. 15

11. COMMENT OBTENIR UN DIAGRAMME À PARTIR DE MON MODELE UML............................ 18

12. INCLURE UN ACTIVITY DIAGRAM DANS UN MODELE (NOUVEAU)....................................... 22

13. GÉRER MANUELLEMENT LES COMMENTAIRES DU MODÈLE............................................... 25

14. DÉFINIR UNE RELATION ENTRE DEUX « INSTANCE SPÉCIFICATION » :.............................. 30

15. INSÉRER UNE CONTRAINTE OCL DANS UN MODÈLE UML.................................................... 34

16. NOUVELLE QUESTION ?............................................................................................................. 38

1.INTRODUCTION

Ce recueil d’astuces provient du retour d’expériences suivantes :

• Etude Astrium pour le CNES sur la génération de cas de tests

• Projet CATDS/SMOS pour le CNES

• Guide méthodologique de spécifications avec UML 2 (en cours)

2.QUE DOIS-JE FAIRE POUR CRÉER UN MODELE UML AVEC TOPCASED ?


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 2

2.1PROJET TOPCASED

La première étape est de créer un projet TOPCASED. Ce n’est pas vraiment obligatoire mais cela
offre une vue dédiée à TOPCASED (projet visible dans une vue TOPCASED Navigator) qui permet de
lister rapidement les diagrammes du projet. Pour cette étape, il suffit de suivre l’assistant depuis le
menu « File>new project…>TOPCASED Project.

2.2MODÈLE UML

La deuxième étape consiste à créer un modèle TOPCASED UML dans ce projet/

Remarque : il est aussi possible de créer un modèle UML dans un projet java, web ou autre. La seule
différence est que la vue « TOPCASED Navigator » ne permettra pas de voir ce projet, mais ce n’est
pas fondamental.

Il existe un canevas de création de modèle qui reprend l’approche de structuration classique héritée
de RATIONAL et donc dans les outils Rose et RSA et connue de la plupart des personnes ayant déjà
une expérience de modélisation : il s’agit d’un découpage par phases du projet :
• Vue orientée « spécifications » (« use case view » pour Rose et RSA) : vue dans laquelle on
va gérer principalement les cas d’utilisation et les acteurs ; c’est la vision du système comme
boite noire dans son environnement (contexte).
• Vue orientée « analyse et conception » (« logical view » pour Rose et RSA) :vue dans laquelle
on va gérer principalement les réalisations des cas d’utilisation sur l’architecture interne du
système ; c’est la vision du système comme boite blanche avec répartition des responsabilités
sur les différentes composantes de l’architecture.
• Vue orientée « implémentation » (« component view » pour Rose et RSA) : vue dans laquelle
on va gérer les composants issus du développement, à savoir les librairies de code, les
binaires, scripts… ; en bref, tout ce qu’il va falloir déployer sur des machines pour faire tourner
l’application ou le système.
• Vue orientée « déploiement » (« deployment view » pour Rose et RSA) : vue dans laquelle on
précise la répartition des composants sur les différentes machines. C’est la vision physique du
système.

Pour créer un modèle selon cette approche, il suffit de demander la création d’un nouveau diagramme
UML et de choisir le « template » « common approach » :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 3

On obtient le résultat suivant dans la vue d’exploration du modèle (outline view) :

3.COMMENT CRÉER UN PAQUET DANS MON MODÈLE ?


Se positionner dans le paquet souhaité (ici le paquet « use case view ») puis demander la création
d’un élément de modélisation avec le menu contextuel « create child » (click droit).
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 4

Figure 1 : création d'un paquet depuis la outline 1/3


Par défaut, le menu « create child » vient du plugin Eclipse UML2 et offre la possibilité de créer tous
les éléments permis par le méta-modèle UML2 selon le contexte. Dans un paquet, on peut créer
presque tout et donc le menu contextuel est énorme (et illisible) :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 5

Figure 2 : création d'un paquet depuis la outline 2/3

Soyez rassurés, il existe aussi un menu personnalisé par TOPCASED.

Pour l’activer, il suffit d’aller dans le menu « Create child menu » depuis la vue « outline », icône des
filtres.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 6

Figure 3 : modification du menu "createChild" ½

Choisissez maintenant « custom menu » à place de « default menu »

Figure 4 : modification du menu "createChild" 2/2

Désormais il est possible de faire la manipulation précédente avec un menu « create child » qui est
classifié en plusieurs catégories dont une pour la manipulation des paquets 

Figure 5 : création d'un paquet depuis la outline 3/3


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 7

Il suffit ensuite de renseigner le nom de ce paquet via la vue « propriétés ».

4.COMMENT DÉPLACER UN PAQUET OU UN ÉLEMENT DE MODÈLE ?

Remarque : cette opération ne peut pas être réalisée directement depuis la vue outline aujourd’hui.

Le plus simple est de créer un diagramme de classes ou de UC et de positionner dessus (via « Drag
and drop » depuis la vue outline) le paquet à déplacer (appelons le P1) et le paquet dans lequel on
veut le positionner (appelons le P2).

Figure 6 : diagramme de classes temporaire utiliser pour déplacer un élément

Ensuite il suffit de glisser P1 dans P2.


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 8

Figure 7 : déplacement d'un paquet dans un autre

Pour déplacer n’importe quel autre élément de modèle dans un paquet, il suffit de procéder comme
précédemment avec l’élément de départ et le paquet de destination.

5.COMMENT AJUSTER LA TAILLE DE MON DIAGRAMME ?

La taille du diagramme est donnée par un format affiché et modifiable dans la vue « properties » :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 9

Figure 8 : accès au format d'un diagramme

Il est aussi possible de définir son propre format via les préférences TOPCASED.

Menu « window »/préférences :


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 10

Figure 9 : définition d'un format personnalisé pour les diagrammes

6.PEUT-ON UTILISER LE « DRAG AND DROP » POUR CRÉER DES DIAGRAMMES ?


Pour la plupart des diagrammes sauf le diagramme de séquence, il est possible de construire
rapidement un diagramme si les éléments à manipuler sont déjà présents dans la vue « outline » qui
représente le modèle. Il suffit de sélectionner ceux qui nous intéressent puis de les déposer sur le
diagramme.
Remarque : bien entendu, les éléments non conformes au diagramme ne seront pas déplacés sur le
diagramme (une classe dans un diagramme de UC par exemple).
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 11

Figure 10 : glisser-déplacer depuis la outline vers un diagramme

Figure 11 : création d'un diagramme suite à un glisser-déplacer depuis la outline

Tous les éléments sont disposés selon un algorithme de positionnement automatique.


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 12

7.JE NE VOIS PAS DE TYPES DE DONNEE SIMPLE (STRING). COMMENT Y ACCEDER ?

7.1ETAT DE DEPART

On cherche à renseigner le type d’un attribut de classe et la fenêtre n’affiche que les classes ou
composants du modèle…

Figure 12 : modèle sans types primitifs

7.2PROCÉDURE

Il faut sélectionner le modèle dans la vue « outline » et demander l’ajout des types primitifs (import ou
création).
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 13

Figure 13 : import des types primitifs

La fenêtre permet de sélectionner les types primitifs UML et ceux d’Ecore (méta-méta modèle). Il suffit
de choisir ceux qui nous intéressent :

Figure 14 : ajout d'une sélection de types primitifs

Remarque : même en sélectionnant seulement le type « String », les autres types UML sont importés
automatiquement.

La sélection d’un type primitif pour les attributs est désormais possible
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 14

Figure 15 : choix d'un type primitif pour un attribut

8.SÉLECTIONNER FACILEMENT UN TYPE DE PARAMETRE (NOUVEAU)

8.1ETAT DE DÉPART

Par défaut, lorsqu’on ajoute un paramètre d’une opération, on a une liste déroulante pour la sélection
du type qui n’est pas ergonomique du tout car c’est la fenêtre par défaut du plug-in EMF.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 15

Figure 16 : liste déroulante pas pratique pour sélectionner un type de paramètre - ni filtre ni tri

Il est possible d’avoir une fenêtre bien plus sympathique (développée dans le cadre TOPCASED) pour
sélectionner le type…

8.2PROCÉDURE

Dans la vue outline, il suffit de sélectionner le paramètre souhaité et la fenêtre de propriétés s’adapte
en proposant une zone « type » personnalisée TOPCASED. Cette liste est maintenant filtrable et on
peut spécifier la casse.

Figure 17 : liste filtrable et avec casse pour sélectionner un type de paramètre


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 16

9.DÉTERMINER LES DIAGRAMMES UTILISANT UN ÉLEMENT DONNÉ (NOUVEAU)

Vous souhaitez savoir dans quel diagramme est utilisée telle classe ou tel cas d’utilisation ? Rien de
plus simple : sélectionnez l’élément dans la vue outline et effectuez un double-click :

• Soit l’élément n’existe dans aucun diagramme et il ne se passe rien

• Soit l’élément existe dans un unique diagramme et ce diagramme est automatiquement ouvert

• Soit l’élément existe dans plusieurs diagrammes et une fenêtre de choix s’ouvre offrant des
liens vers les différents diagrammes comme illustré ci-dessous :

Figure 18 : diagrammes contenant un élément donné

10.COMMENT REORGANISER LE MENU CREATECHILD

10.1ETAT DE DÉPART
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 17

Dans la vue par défaut outline des diagrammes umldi, le menu Create child est composé
d’une liste de l’ensemble de tous les sous éléments possibles. Il devient rapidement fastidieux
de parcourir la liste afin de trouver l’élément voulu, d’autant plus que la liste ne respecte pas
l’ordre lexicographique.

Voici un exemple de menu par défaut :

10.2PROCÉDURE

Pour organiser le menu de façon plus fonctionnelle il suffit de procéder en trois étapes
décrites dans l’image ci-dessous :

• Vérifier que l’on est bien dans la vue outline associée au diagramme dont on souhaite
hiérarchiser le menu

• Cliquer sur l’icône triangulaire en haut à droite du cadre de la fenêtre outline puis
choisir le menu Create child menu

• L’option par défaut est sélectionnée, cliquer sur l’option Custom Menu
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 18

10.3RESULTAT

Le menu Create child est maintenant divisé en plusieurs sous menus qui représentent
chacun une catégorie d’éléments fils.

Voici un exemple de menu hiérarchisé :


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 19

11.COMMENT OBTENIR UN DIAGRAMME À PARTIR DE MON MODELE UML

11.1ETAT DE DEPART

Si le développement du projet est directement fait sur le modele uml, il est possible
qu’à la fin ou même en cours de projet l’on souhaite récupérer le ou les diagrammes associés
à un modele uml.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 20

11.2PROCÉDURE

Nous allons essayer de générer le diagramme associé à l’automate contenu dans le modèle
uml précédent :

• Sélectionner le model uml puis New > UmlDiagram


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 21

• Sélectionner la partie du module dont on souhaite tirer le diagramme puis vérifier le


type de diagramme que l’on veut générer. La figure ci-dessous précise les 2 zones
contenant les informations nécessaires :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 22

• Dans le cadre d’un diagramme de machine à états, le fichier généré est vide. Il faut
faire glisser tous les états de la vue outline vers la vue umldi.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 23

11.3RESULTAT

On obtient le diagramme voulu mais les états ne sont pas disposés de manière ergonomique,
il faut les déplacer pour obtenir un diagramme visualisable.

• REMARQUE :

o Dans le cas des diagrammes de classe les éléments sont directement


affichés

o IL est possible de générer plusieurs diagrammes en même temps si ceux-ci


ont été crées dans le cadre de la common approch

12.INCLURE UN ACTIVITY DIAGRAM DANS UN MODELE (NOUVEAU)

12.1ETAT DE DEPART

Contrairement aux autres diagrammes l’activity diagram n’est pas disponible de façon directe,
ce choix a été fait afin de forcer les utilisateurs à lier les diagrammes aux éléments leurs
correspondants dans le model.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 24

12.2PROCÉDURE

Il faut créer un nœud activity au sein de l’arborescence du fichier umldi, s’inspirer de l’image
suivante ajouter le nœud.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 25

12.3RESULTAT

Il est maintenant possible d’ajouter un diagramme d’activité.


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 26

13.GÉRER MANUELLEMENT LES COMMENTAIRES DU MODÈLE

13.1ETAT DE DÉPART

Soit le diagramme de classe suivant :


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 27

Ce diagramme de classe est associé à l’arborescence de modèle suivante :

Ceci correspond au commentaire visible


graphiquement dans le diagramme de classe

Ceci correspond à un commentaire créé


manuellement et non visible graphiquement

Il est souvent interessant de définir des commentaires qui ne sont pas associés à une représentation
graphique. En effet, par l’interface graphique on peut définir un commentaire dans le diagramme de
classe, mais celui-ci sera toujours créé à la racine de la classe dans l’Outline (dans notre exemple à la
racine de l’arborescence de la classe « Ma_Classe ») et on ne pourra tirer un « Comment link » que
vers une boite de classe.

13.2PROCÉDURE

13.2.1Définition de l’effet réel d’un « comment link » graphique


Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 28

Lors de la création graphique d’un commentaire, un nouvel objet « <Comment> » est créé dans le
modèle en tant que fils de la classe associée au diagramme courant. Le commentaire est un type très
simple qui ne possède que deux propriétés :

• Body : représente le texte (multiligne) de la contrainte

• Annotated Element : le ou les éléments associés au commentaire

Dans notre exemple, ceci correspond aux propriétés suivantes :

La propriété « Annotated Element » a été remplie automatiquement par le lien graphique « comment
link » tiré entre le commentaire et la classe « Ma_Classe » dans l’éditeur graphique de diagramme de
classe.

13.2.2Définition d’un commentaire dans la vue Outilne

La création graphique d’un commentaire associée à un « comment link » permet donc de commenter
rapidement et facilement un diagramme de classe. Il est cependant parfois pertinent de vouloir créer
un commentaire qui :

• n’est pas directement fils de la classe dont on est en train d’éditer le diagramme de classe. En
effet il est parfois intéressant de définir un commentaire comme étant fils d’une propriété,
d’une opération, d’une contrainte, ou de tout autre élément du modèle qui mérite d’être
commenté (à peu près tout les éléments d’un modèle UML 2.0 peuvent recevoir en fils un
commentaire)

• s’applique à plusieurs éléments du modèle, y compris des éléments non référencables par un
« comment link » dans l’éditeur graphique. En effet, il n’est possible dans l’éditeur graphique
de diagramme de classe de définir que des « comment link » vers des classe.

Dans ce cas il est nécessaire de créer directement le commentaire par la vue Outline.

Dans notre exemple on va commenter la propriété « Property1 » de la classe « Ma_Classe ». On


commence par créer le commentaire directement depuis la vue Outline :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 29

On remarque ici que l’on doit aller chercher le type « Owned Comment | Comment » dans la liste
« All ». En effet certains éléments du modèle ne sont listés que dans la vue « All », c’est le cas du
commentaire qui sera toujours disponible dans cette vue.

Une fois le commentaire créé, il faut le sélectionner. Dans la vue « Model » remplir le contenu textuel
du commentaire. Aller ensuite dans la vue « advanced » pour remplir le choix des éléments annotés :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 30

Il est à noter qu’on peut associer plusieurs « Annotated Element » à un « Comment ». On obtient donc
le résultat suivant :

Il est alors possible de glisser/déplacer le commentaire depuis la vue Outline vers la vue graphique.
Le commentaire sera affiché, et si le plug-in graphique sait gérer le cas, le trait pointillé vers l’élément
annoté sera représenté (le software sait représenter des « comment link » vers des propriétés ou des
opérations, même si il ne permet pas de les créer graphiquement).
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 31

14.DÉFINIR UNE RELATION ENTRE DEUX « INSTANCE SPÉCIFICATION » :

14.1ETAT DE DÉPART :

Soit le diagramme de classe suivant :

Diagramme de classe de l'exemple 0

Dans cet exemple volontairement trivial, on a instancié un ensemble de véhicules et de roues. Il est
nécessaire pour assurer une cohérence des données d’être capable de dire que l’instance
« roue_unique » de la classe « Roues » est liée au véhicule « Monocycle », alors que les
« roue_avant » et « roue_arrière » sont liés au véhicule « Moto ».

Ceci est normalement dédié au diagramme d’objet qui n’est pour l’instant pas implémenté sous la
forme d’un composant graphique.

Cependant il est possible de décrire dans le modèle des associations entre les instances de classes.

D’après la norme UML 2.0 :

« An instance specification whose classifier is an association represents a link and is shown using the
same notation as for an association, but the solid path or paths connect instance specifications rather
than classifiers.” (extrait de “Unified Modeling Language: Superstructure” version 2.1.1 chapitre 7.3.22
de l”OMG)

14.2PROCÉDURE
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 32

On peut donc définir une instance spécification d’une association. Dans le diagramme on rajoute une
instance spécification qu’on va nommer « Roue_du_Monocycle ». On doit définir de quelle classe cet
instance est une instance :

On remarque que l’association que l’on veut instancier n’est pas dans la liste proposée par défaut
dans les paramètres de l’instance spécification. Il faut aller dans la vue « Advanced » :

Une fois dans la vue advanced, sélectionner le paramètre « Classifier » et cliquer sur l’icône « … » qui
ouvrira une fenêtre de sélection des éléments référencés par l’instance spécification. Choisir
l’association « Roues_du_véhicule » et clicker sur Add. La liste affichée par l’onglet « model » est une
sous listes des valeurs les plus couramment utilisées. La liste affichée ici comprend toutes les valeurs
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 33

possibles pour le paramètre. Dans un cas plus complexe, on aurait donc l’équivalent de plusieurs
dizaines de pages écran de choix. La sélection par la vue « Advanced » est donc plus puissante, mais
à réserver aux cas dans lesquels l’utilisation de la fenêtre simplifiée n’est pas possible.

Une fois l’instance spécification, il faut utiliser l’Outline pour rajouter des slots :

Il est à noter que l’option « Slot » n’est pas disponible dans les onglets « Dependency » ou « Value »,
il faut aller la chercher dans « All ». Il existe parfois des options comme le « Owned Comment » qui ne
sont accessible que par l’onglet « All » du menu arborescent « Create child ».

Une fois le slot créé, il faut aller dans ses properties de niveau « model » pour lui définir son
« Defining feature » c'est-à-dire la propriété de la classe association qu’il va redéfinir :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 34

En l’occurrence on veut redéfinir les deux extrémités de l’association pour exprimer le fait qu’elles
pointent sur les deux valeurs voulues.

Il faut ensuite définir la « Value » :

Une fois la « Value » définie, il ne reste plus qu’à la nommer de manière correcte, et on l’on obtient
une définition propre au niveau du modèle d’une instance d’association :

Au niveau du diagramme de classe par contre, cette instance d’association gardera la forme d’une
boite, et ne représentera donc pas sous la forme d’une flèche la liaison créée entre les éléments du
modèle.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 35

15.INSÉRER UNE CONTRAINTE OCL DANS UN MODÈLE UML

15.1ETAT DE DÉPART

Soit le diagramme de classe suivant :

Correspondant à l’arborescence « Outline » suivante :

Dans cet exemple extrêmement simple, on veut ajouter une contrainte OCL sur l’opération
« Operation1 » du modèle UML 2.0.

15.2PROCÉDURE
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 36

Le document de spécification de la norme OCL : OMG Available Specification Version 2.0 formal/06-
05-01 disponible sur le site de l’OMG précise :

“Because in the abstract syntax OclExpression is defined recursively, we need a new metaclass to
represent the top of the abstract syntax tree that represents an OCL expression. This metaclass is
called ExpressionInOcl, and it is defined to be a subclass of the Expression metaclass from the UML
core, as shown in Figure 12.1. In UML (1.4) the Expression metaclass has an attribute language that
may have the value ‘OCL.’ The body attribute contains a text representation of the actual expression.
The body attribute (inherited from Expression) may still be used to store the string representation of
the OCL expression. The language attribute (also inherited from Expression) has the value ‘OCL.’ “

Pour ajouter une contrainte sur le modèle il faut donc commencer par créer une contrainte sous
l’élément contraint :

Il faut ensuite aller dans les propriétés avancées de la contrainte pour lui définir un nom ainsi que le
« constrained element » qui permet de savoir sur quel élément du modèle elle s’applique. Il suffit de
suivre la procédure décrite dans l’illustration suivante. Attention. La fenêtre de sélection qui s’ouvre
affiche l’ensemble de tout les éléments du modèle. Dans notre cas extrêmement simple, la liste est
courte. Mais dans un cas évolué elle peut facilement contenir plusieurs dizaines de pages écran.
Cette vue est généralement accessible depuis l’onglet « Advanced » de Topcased et ne doit être
utilisée que si l’information à renseigner n’est pas disponible dans l’onglet « Model » avec une
méthode de saisie plus intuitive.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 37

Une fois la contrainte crée et renseignée, il faut lui adjoindre un élément fils de type « Opaque
expression » :

Cette « Opaque expression » doit être nommée (champ « name » des propriétés avancées) et deux
autres propriétés doivent être renseignées. D’abord le type de langage associé doit être mis à OCL :
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 38

Sélectionner la propriété « language » dans l’onglet advanced, cliquez sur le bouton « … » pour ouvrir
une fenêtre d’entrée de valeur. Ecrire « OCL » (la valeur n’est pas à choisir dans une liste, il faut la
réécrire à chaque « Opaque Expression ») et cliquer sur le bouton « Add ». La valeur sera ajoutée à la
liste des langages de l’opaque expression courante.

Il faut aussi renseigner la valeur « Body » des paramètres avancés. Cette valeur doit contenir la
contrainte au format texte. La fenêtre d’entrée du « body » n’est pas adaptée à une édition de texte
complexe. Il est donc conseillé d’éditer la contrainte dans un éditeur externe pour en copier/coller
ensuite le texte dans l’opaque expression.
Réf :
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 39

La contrainte est maintenant proprement définie. Elle n’a pas de représentation visuelle au niveau du
diagramme de classe qui est inchangé, on peut par contre la retrouver dans l’Outline :

Dans l’exemple courant, un « <Comment> » a été rajouté. Il ne faut pas hésiter à commenter les
éléments nécessaires dans le modèle UML. En particulier le contenu de la contrainte étant dans la
propriété « body » de l’objet « opaque expression » de la contrainte, donc difficile d’accès en
consultation, il est intéressant d’avoir une documentation de la contrainte sous la forme d’un
commentaire.

16.NOUVELLE QUESTION ?

16.1ETAT DE DEPART

16.2PROCÉDURE

16.3RESULTAT