Documente Academic
Documente Profesional
Documente Cultură
Edition : 1 Rév. : 2
Date : 07/11/2007
Page : 1
1. INTRODUCTION................................................................................................................................ 1
2. QUE DOIS-JE FAIRE POUR CRÉER UN MODELE UML AVEC TOPCASED ?.............................. 1
6. PEUT-ON UTILISER LE « DRAG AND DROP » POUR CRÉER DES DIAGRAMMES ?................. 9
1.INTRODUCTION
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
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
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
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
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).
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.
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
Il est aussi possible de définir son propre format via les préférences TOPCASED.
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…
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
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 :
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
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.
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 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 :
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.
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.
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 :
• 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 :
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
13.1ETAT DE DÉPART
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
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 :
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.
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.
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.1ETAT DE DÉPART :
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.
« 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.
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.1ETAT DE DÉPART
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