Archyno
UMLDiagrammes de structure

Diagrammes de profil UML

Comment étendre UML lui-même. Stéréotypes, valeurs marquées et flèche d'extension - le mécanisme derrière chaque «entity», «service» et «microservice» que vous avez vu sur un diagramme.

6 min de lectureUML 2.5.130 sur 35

La réponse courte

  • Chaque guillemet que vous avez vu sur un diagramme - entity, service, microservice - a été défini quelque part par un profil.
  • Les stéréotypes ajoutent du sens, les valeurs marquées ajoutent des données. Un stéréotype service définissant une étiquette SLA permet à un composant de porter un SLA concret.
  • La flèche d'extension est ce qui lie un stéréotype à une métaclasse. Étendre Class signifie qu'il s'applique aux classes et à rien d'autre.
  • Définissez un profil quand vous voulez que les outils agissent sur une annotation. Une note est invisible pour tous les outils ; un stéréotype fait partie du modèle.
Un diagramme de profil UML. Un stéréotype Microservice avec deux valeurs marquées, team et slo, étend la métaclasse Class. L'extension est dessinée comme un trait plein terminé par un triangle plein pointant vers la métaclasse.
Un profil à un seul stéréotype. Le triangle plein est une extension, pas une généralisation - Microservice n'hérite pas de Class, il s'y ajoute.

01Ce qu'il montre#

Un diagramme de profil, c'est UML décrivant une extension de lui-même. C'est le seul diagramme du langage dont le sujet est le langage, ce qui explique qu'il semble différent des treize autres et que la plupart des gens n'en dessinent jamais.

Vous en avez presque certainement utilisé le résultat. Chaque fois que vous avez vu «entity», «service», «controller» ou «microservice» sur une boîte de classe, vous regardiez un stéréotype appliqué. Un diagramme de profil est l'endroit où ce stéréotype est défini : son nom, ce à quoi il peut être attaché, et les propriétés supplémentaires qu'il porte.

02La notation#

ÉlémentNotationCe que cela signifie
Métaclasseboîte, «metaclass»Un élément d'UML lui-même - Class, Component, Association. Ce que vous étendez.
Stéréotypeboîte, «stereotype»Le nouveau concept que vous ajoutez au langage.
ExtensionTrait plein, triangle pleincôté métaclasse. « Ce stéréotype peut être appliqué à ce genre d'élément. »
Valeur marquéeun attribut sur le stéréotypeUne propriété supplémentaire que l'application du stéréotype vous donne - slo: Duration.
Profilpaquetage, «profile»Le paquetage qui regroupe un ensemble de stéréotypes pour qu'ils s'appliquent ensemble.
«apply»D'un paquetage vers un profil : tout ce qui est ici peut employer ces stéréotypes.
Deux classes portant le stéréotype Microservice appliqué, Checkout et Payment orchestrator, chacune affichant des valeurs marquées pour team et SLO. Une note explique que le stéréotype et ses valeurs marquées viennent du profil.
Le profil en usage. Appliquer un stéréotype place son nom entre guillemets au-dessus du nom de la classe et donne à la classe les valeurs marquées du profil à renseigner.

03Quand il vous en faut vraiment un#

Soyez honnête sur le seuil. Utiliser un stéréotype ne demande aucun profil : «entity» sur une boîte communique parfaitement à un lecteur humain sans que rien soit formellement défini. Vous avez besoin d'un diagramme de profil quand le stéréotype doit signifier quelque chose pour une machine.

Cela arrive dans trois situations. Quand un outil doit valider le modèle - refuser d'appliquer «microservice» à une association, ou exiger que chacun déclare un SLO. Quand du code ou des documents sont générés depuis le modèle et que le générateur se ramifie sur le stéréotype. Et quand toute une industrie s'est accordée sur un vocabulaire : SysML, MARTE, SoaML et consorts sont tous des profils UML, et ils sont la raison principale de l'existence du mécanisme.

04Garder un profil utile#

À utiliser quand

  • Un outil doit valider ou générer à partir du stéréotype, pas seulement l'afficher
  • Il vous faut des données structurées en plus sur les éléments - propriétaire, SLO, classification
  • Vous adoptez un profil standard comme SysML que quelqu'un d'autre a déjà défini
  • La même poignée de concepts métier revient sur beaucoup de diagrammes et d'équipes

Préférer autre chose quand

  • Un ou deux stéréotypes employés comme simples étiquettes visuelles - écrivez-les, c'est tout
  • Les concepts que vous ajoutez existent déjà dans ArchiMate ou un autre langage
  • Personne ne maintiendra le profil une fois partie la personne qui l'a écrit
  • Vous étendez UML pour éviter d'apprendre la partie d'UML qui le couvre déjà

Un bon profil est petit. Cinq à dix stéréotypes, chacun de sens évident et avec au plus deux valeurs marquées, appliqués de façon cohérente, valent bien mieux que quarante dont personne ne se souvient. Et chaque valeur marquée que vous ajoutez est un champ que quelqu'un devra renseigner sur chaque élément, pour toujours : faites donc en sorte que chacune mérite sa place.

Un avertissement pratique sur la portabilité : les profils sont la partie d'UML qui voyage le plus mal entre outils. Les définitions de stéréotypes survivent à un aller-retour XMI bien moins fidèlement que les éléments de modèle ordinaires, et les valeurs marquées arrivent souvent en chaînes non typées, ou pas du tout. Si votre modèle doit circuler entre outils, gardez le profil aussi petit que vous pouvez le supporter.

En une ligne chacun

  1. 01Le seul diagramme UML dont le sujet est UML lui-même.
  2. 02Un stéréotype étend une métaclasse ; la flèche est un trait plein à triangle PLEIN.
  3. 03Le triangle creux de la généralisation signifie autre chose, et c'est l'erreur habituelle.
  4. 04Les valeurs marquées sont les propriétés supplémentaires qu'apporte l'application du stéréotype.
  5. 05Vous n'avez besoin d'un profil formel que si un outil doit agir sur le stéréotype.
  6. 06Gardez les profils petits - c'est aussi la partie d'un modèle qui s'exporte le moins fidèlement.

05Questions fréquentes#

Qu'est-ce qu'un stéréotype en UML ?

Une extension nommée d'un élément UML existant, écrite entre guillemets français : entity, service, controller. Cela permet de spécialiser le langage pour un domaine sans inventer de notation nouvelle, et chacun de ceux que vous avez vus a été défini quelque part par un profil.

Qu'est-ce qu'une valeur marquée ?

Une propriété ajoutée à un élément par un stéréotype. Un stéréotype service peut définir une étiquette SLA ; l'appliquer à un composant permet à celui-ci de porter une valeur de SLA concrète. Les valeurs marquées sont la façon dont un profil ajoute des données, comme les stéréotypes sont la façon dont il ajoute du sens.

Qu'est-ce que la relation d'extension ?

La flèche allant d'un stéréotype vers la métaclasse qu'il étend, tracée en trait plein avec un triangle plein. C'est elle qui rend un stéréotype applicable à un type d'élément précis : étendre Class signifie qu'il s'applique aux classes et à rien d'autre.

Quand définir un profil plutôt que d'écrire des notes ?

Quand la même annotation revient assez souvent pour que vous vouliez que les outils agissent dessus : la valider, filtrer par elle, ou la transformer à l'export. Une note est invisible pour tous les outils ; un stéréotype fait partie du modèle à part entière.

Dans cette série

À lire aussi

Tous les articles