I. Introduction

Les profils représentent l'intégration du mécanisme light-weight (voir article : Initiation à l'ingénierie dirigée par les modèles) afin d'étendre les langages basés sur le MOF (Meta Object Facility). Plus précisément, les profils sont utilisés pour personnaliser UML (Unified Modeling Language) pour un domaine spécifique par l'intermédiaire des mécanismes d'extension qui enrichissent la sémantique et la syntaxe du langage.

Un stéréotype représente la fonctionnalité de base pour étendre UML. Il peut être considéré comme une spécialisation d'un concept existant en UML et qui offre la possibilité d'avoir des concepts pour la modélisation d'un domaine spécifique. Les stéréotypes peuvent avoir des attributs (aussi appelés tagged values) et peuvent être associés à d'autres stéréotypes existants ou à d'autres concepts UML. Du point de vue notation, les stéréotypes peuvent donner un symbole graphique différent pour les éléments du modèle UML. Par exemple, une classe stéréotypée  « Horloge » pourrait utiliser une image au lieu du format de la classe ordinaire. En outre, les stéréotypes peuvent aussi être influencés par des restrictions exprimées par des contraintes. La définition des contraintes dans les langages basés sur le MOF est OCL (Object Constraint Language).

Mécanisme d'extension UML
Mécanisme d'extension UML

Dans ce tutoriel, nous montrons étape par étape comment créer un profil UML via l'outil Papyrus.

II. À propos de Papyrus

Papyrus vise à fournir un environnement intégré facile à utiliser pour éditer les modèles de type EMF (Eclipse Modeling Framework), il soutient en particulier UML et les langages de modélisation connexes tels que SysML et MARTE. Papyrus offre également un support très avancé pour les profils UML qui permet aux utilisateurs de définir des éditeurs pour les DSL (Domain Specific Language) basés sur le standard UML 2.

III. Installation de Papyrus

1 - Téléchargez la plateforme Eclipse Modeling à partir de l'adresse suivante : www.eclipse.org/downloads.

Image non disponible

2 - Décompressez le fichier téléchargé et lancez Eclipse.exe.

3 - Lancez le site d'installation des composants de modélisation.

Image non disponible

4 - Choisissez Papyrus et lancez l'installation.

Image non disponible

5 - Relancez Eclipse et choisissez Papyrus comme perspective.

Image non disponible

IV. Construction d'un profil dédié aux bases de données

Exemple à suivre : on va créer un profil UML décrivant les bases de données relationnelles.

Une base de données contient un ensemble de tables. Une table contient un ensemble de colonnes, un sous-ensemble de ces colonnes forme la clé primaire de la table.

IV-A. Création du profil

1 - Créez un nouveau Profil à partir d'un projet Papyrus.

Image non disponible

2 - Introduisez un nom puis cliquez sur le bouton « suivant ».

Image non disponible

3 - Choisissez le type profil comme langage pour les diagrammes puis cliquez sur le bouton « suivant ».

Image non disponible

4 - Donnez un nom au diagramme et cochez la case de « UML Profil Diagram » puis cliquez sur « Finish ».

Image non disponible

5 - Vous devez avoir un environnement pareil à celui de la figure ci-dessous.

Image non disponible

6 - Les concepts qu'on souhaite créer via ce profil sont les suivants :

Concept Modèle Métaclasse UML Type d'extension
Base Package StereoType
Table Class StereoType
Colonne Property StereoType
ClefPrimaire   TaggedValue

7 - Créez les trois stéréotypes : Base, Table et Colonne, en faisant un 'glisser-déposer' de l'élément « Stereotype » qui se trouve sur la palette dans le compartiment « Classifiers ».

Image non disponible

8 - Ajoutez l'attribut ClefPrimaire au stéréotype Table.

Image non disponible

9 - Faites un clic droit sur l'attribut ClefPrimaire et choisissez « affichez les propriétés ».

Image non disponible

10 - Entrez Colonne comme étant type de ClefPrimaire.

Image non disponible
Image non disponible
Image non disponible

11 - De la même façon, changez la multiplicité et choisissez 0..*.

12 - Importez la métaclasse « Package », cette dernière va être étendue par le stéréotype « Base ».

Image non disponible
Image non disponible

13 - Choisissez la relation d'extension qui se trouve sur la palette dans le compartiment RelationShips " et liez le stéréotype « Base » à la métaclasse « Package ».

Image non disponible
Image non disponible

14 - De la même façon, ajoutez les métaclasses « Property » et « Class », puis liez-les avec les stéréotypes « Colonne » et « Table » en utilisant les relations d'extension.

Image non disponible

15 - Ajoutez les relations d'association entre les différents stéréotypes.

Image non disponible

16 - Utilisez la fenêtre des propriétés pour concevoir les relations d'association.

Image non disponible

17 - Terminez les autres associations qui restent.

18 - Vous pouvez aussi ajouter des règles OCL.

Par exemple : une table doit posséder une clé primaire

 
Sélectionnez
Context Table : 
self.feature->select(isStereotyped("ClefPrimaire")).notEmpty

19 - Enregistrez votre modèle, une boite de dialogue doit apparaître pour décider si le profil doit être défini ou non. La définition est nécessaire afin d'utiliser le profil.

Image non disponible

Une autre boite de dialogue va apparaître pour ajouter le numéro de la version ainsi que les différentes informations liées au profil qui est en cours de conception. Validez la définition pour pouvoir utiliser le profil.

Image non disponible

IV-B. Ajout des icônes dans le profil

Les icônes peuvent être associées aux stéréotypes pour améliorer la présentation des éléments stéréotypés sur les diagrammes. Pour associer une icône à un « Stereotype «  suivez les étapes suivantes :

1 - vous pouvez créer un dossier « image » contenant les images que vous voulez associer dans le même projet :

Image non disponible

2 - sélectionnez le stéréotype « Base » puis dans la partie vue de propriétés choisissez l'onglet UML et cliquez sur « + » pour ajouter une icône :

Image non disponible

3 - dans la petite fenêtre « Model explorer », sélectionnez l'image, choisissez le type icône et cliquez sur « + » afin de charger l'image :

Image non disponible
Image non disponible
Image non disponible

4 - vous pouvez ajouter d'autres icônes ou formes (Shape en anglais) pour les autres stéréotypes ;

5 - n'oubliez pas d'enregistrer le modèle et de le définir. Vous n'êtes pas obligé de définir votre profil après chaque enregistrement mais vous êtes obligé de le définir avant son utilisation afin d'utiliser sa dernière version.

IV-C. Application du profil conçu

Pour tester votre profil, suivez les étapes suivantes :

1 - créez d'abord un nouveau modèle (vous pouvez le faire dans le même projet) :

Image non disponible
Image non disponible
Image non disponible
Image non disponible
Image non disponible

2 - exemple : on va essayer de créer une base « biblio » qui contient deux tables « adherent » et « livre ». La table « adherent » se compose de quatre colonnes (nom, prenom, dateNaissance, adresse) et la table livre contient (isbn, titre, auteur). La composition des colonnes « nom », « prenom » et « dateNaissance » représente la clé primaire de la table « adherent ». La clé primaire de la table « livre » est la colonne « isbn » ;

3 - appliquez le profil conçu au nouveau modèle : sélectionnez le modèle, puis dans la vue propriétés allez à l'onglet « Profile » :

Image non disponible

4 - appuyez sur « + » pour ajouter un profil qui existe dans votre espace de travail (le projet contenant le profil doit être ouvert !) ;

Image non disponible

5 - cochez les profils et les sous-profils souhaités, dans le nôtre il n'y a qu'un seul profil :

Image non disponible

6 - commencez par la création de la base « biblio » qui sera un package :

Image non disponible
Image non disponible

7 - pour appliquer le stéréotype, sélectionnez le package « biblio » et appuyez sur « + » se trouvant dans l'onglet profil de la vue des propriétés, puis sélectionnez le stéréotype « Base » :

Image non disponible
Image non disponible
Image non disponible

Si le stéréotype « base » ne figure pas sur le package « biblio », allez à l'onglet apparence de la vue des propriétés du package « biblio « , sélectionnez le stéréotype appliqué et cliquez sur le bouton « afficher stéréotype » :

Image non disponible

8 - ajoutez la classe « adherent » et stéréotypez-la par « table ».

Image non disponible
Image non disponible
Image non disponible

9 - sur Papyrus, une classe se compose de trois compartiments : « AttributeCompartment » , « OperationCompartment » et « NestedClassifierCompartment ». Dans cet exemple, vous n'aurez besoin que du compartiment des attributs :

Image non disponible

10 - vous pouvez afficher/masquer les compartiments en utilisant le menu contextuel en faisant un clic droit ou [Ctrl+F5] :

Image non disponible

11 - ajoutez les colonnes (nom, prenom, dateNaissance, adresse), chaque colonne est représentée par une propriété au sein de la classe « adherent » :

Image non disponible
Image non disponible

12 - pour chaque propriété, il faut définir le type et la multiplicité en utilisant la vue des propriétés : nom: string : [*] - prenom : string : [*] - dataNaissance : integer : [*] - adresse : string : [*]

Image non disponible
Image non disponible
Image non disponible

13 - stéréotypez chaque propriété par « colonne » :

Image non disponible
Image non disponible
Image non disponible

14 - la classe « adherent » contient la propriété « »clefPrimaire » qui est une valeur étiquetée (Tagged value). Ajoutez les valeurs « nom », « prenom » et « dataNaissance » à cette propriété en appuyant sur « + » qui se trouve dans la zone Property values de l'onglet « Profile » :

Image non disponible
Image non disponible
Image non disponible
Image non disponible

15 - pour afficher l'attribut « clefPrimaire », sélectionnez la classe stéréotypée par « table » et allez sur l'onglet « apparence ». Dans le champ stéréotypes appliqués, sélectionnez « clefPrimaire » et appuyez sur le bouton d'affichage :

Image non disponible
Image non disponible

16 - faites la même chose pour la classe « livre » :

Image non disponible

17 - vous pouvez aussi changer le symbole graphique d'une classe stéréotypée par « table « , pour cela, sélectionnez la classe et changez la valeur du champ « stereotype display » qui se trouve dans l'onglet apparence, choisissez par exemple « Icon » (il faut choisir la même valeur que celle que vous avez définie dans le profil : Icon ou Shape).

Image non disponible

Vous pouvez compléter l'utilisation de votre profil avec des outils de vérification, d'analyse ou de génération de code et des commandes SQL.

V. Conclusion et remerciements

Les profils UML par rapport au MOF souffrent de certains inconvénients mais proposent aussi beaucoup d'avantages. D'un côté le mécanisme des profils UML nous oblige à nous rattacher au métamodèle surtout qu'on ne peut pas créer notre propre métaclasse. Cependant les profils UML nous permettent de bénéficier de l'utilisation de la notation graphique d'UML, d'exploiter les éditeurs UML existants et aussi d'utiliser les différentes technologies associées à UML comme le langage de contraintes OCL, ce dernier n'ayant pas été traité dans ce tutoriel.

Le prochain article sera dédié à la façon de mettre votre profil sous la forme d'un plug-in Eclipse.

Nous tenons à remercier Claude LELOUP pour la relecture orthographique de cet article. Nous tenons également à remercier Nemek pour sa relecture technique.