Les profils UML permettent d’annoter les modèles de manière à les archétyper ou stéréotyper en regard d'un « métier » donné, une « technologie » donnée ou encore d'un « sujet » donné. On peut même envisager de créer un profil pour un cas d'étude donné…
En fait, la terminologie contenue dans le profil s'ajoute alors à la terminologie UML elle-même. Les termes introduits sont appelés stéréotypes. Les stéréotypes et leurs valeurs balisées servent donc de marqueurs dans les modèles « finaux » pour « éclairer » leur sens. Au-delà, les stéréotypes sont processables dans une logique XML pour, par exemple, guider les processus de transformation de modèles, générer de la documentation ou du code, etc.
Le concept UML profile n’est juste, d’un point de vue formel, qu’un type de package spécialisé.
Le méta-package Profiles
dans InfrastructureLibrary
contient les constructions nécessaires et suffisantes à la fabrication de profils à l'aide des méta-classes Stereotype
et Extension
.
Un stéréotype est donc une classe et à ce titre peut posséder des propriétés (usuellement des attributs) dont les valeurs (idée de tagged value ou valeur balisée) permettent d'affiner l'utilisation du stéréotype.
Apparue dès le départ dans UML (ver. 1.x), la notion de stéréotype a vocation à instrumenter l’extensibilité du langage UML lui-même.
Face à la kyrielle de constructions de modélisation nécessaires, Booch et Rumbaugh ont rapidement compris qu’il valait mieux ouvrir le langage (UML = famille de langages) plutôt que d’offrir un framework de modélisation complet prétendant satisfaire tous les besoins possibles et imaginables en modélisation.
La notion de stéréotype est à l’origine un moyen d’extension syntaxique du langage mais pas véritablement sémantique ; l'extension sémantique d'UML s'opère plus volontiers par un Domain Specific Language (DSL).
UML propose deux profils intégrés ainsi que des profils technologiques (illustratifs, i.e., non normatifs comme Java EE).
Les deux profils intégrés* sont StandardProfileL2
avec «Derive»
, «Executable»
, «Instantiate»
, «Refine»
, «Service»
… et StandardProfileL3
avec «BuildComponent»
, «Metamodel»
, «SystemModel»
…
Les stéréotypes standard UML sont présentés dans Unified Modeling Language 2.5.1 official doc., p. 679.
*Depuis la ver. 2.4.1 : “the amalgamation of StandardProfileL2
and StandardProfileL3
into a single StandardProfile
”
(Unified Modeling Language 2.5.1 official doc., p. 753)
L’application d’un profil est matérialisée par la méta-classe ProfileApplication
.
Un modèle est alors annoté par des stéréotypes et leurs valeurs balisées éventuelles
(exemple ici…).
Un profil est donc un méta-modèle réutilisable et partageable assurant un niveau minimal d’interopérabilité syntaxique entre des modèles « métier », « technologie » ou encore « sujet ».
L'application d'un profil sous MagicDraw s'opère via l'option File >> Use Module
{required}