jeudi 26 janvier 2012

Internationaliser son DSL sous MagicDraw

Sous Magic Draw, avec un méta-modèle basé sur un profil UML, il est possible de customiser l'interface pour changer le libellé des éléments du DSL.

Cette possibilité offre l'intérêt de pouvoir internationaliser un DSL. On peut donc, pour des raisons techniques (ou de conventions par exemple) définir son DSL ( les stéréotypes et les propriétés de stéréotypes) en anglais et en avoir une représentation en français dans le modeleur (MagicDraw dans le cas présent).

Libellés sur les stéréotypes
Lorsqu'on crée un stéréotype et qu'on l'applique sur une classe, par défaut, cette classe va être représentée comme étant une Class <<stereotype>>.
Par exemple, si je crée un stéréotype <<DomainObject>> et que je l'applique sur ma classe "Product". Et si je crée un stéréotype <<IdDomainAttribute>> que j'applique sur l'attribut de ma classe "Product",  je vais obtenir ceci :  
Dans les spécifications, on voit qu'il s'agit d'une classe.

Il est possible de personnaliser le DSL pour que les éléments ne soit plus affichées comme des classes mais comme des éléments propre du DSL.
Voici les étapes à suivre :
  • Créer une nouvelle Classe DomainObjectCustomization (ici le nom a peu d'importance, mais par convention, il est préférable de la suffixer par Customization)
  • Appliquer un stéréotype <<Customization>> sur cette classe
  • Editer les propriétés de la classe DomainObjectCustomization, puis renseigner "Hide Metatype" à true.
  • Renseigner Customization Target à DomainObject
  • Renseigner le Representation Text à "Domain".
  • Renseigner le keyword à "Domain"
Faire la même chose pour personnaliser l'attribut :  
  • Créer une nouvelle Classe IdDomainAttributeCustomization
  • Appliquer un stéréotype <<Customization>> sur cette classe
  • Editer les propriétés de la classe IdDomainAttributeCustomization, puis renseigner Hide Metatype à true.
  • Renseigner Customization Target à "IdDomainAttribute"
  • Renseigner le Representation Text à "ID".
  • Renseigner le "keyword" à "ID"


En redémarrant (ou en rechargeant le modèle), on obtiendra les changement suivants :
Dans les spécifications, on voit maintenant apparaître Product comme étant un Domain et non plus comme une classe.


Pour info,
Hide Metatype permet de ne plus considérer Product comme une Class <<Domain>> mais comme un Domain.
Representation Text, comme son nom l'indique, permet de changer le texte de représentation du stéréotype. Une sorte d'alias qui sera utilisé dans la fenêtre des spécifications par exemple. Sauf que cette valeur n'est pas prise en compte dans le diagramme.
Keyword, comme son nom ne l'indique pas (du tout), permet de changer le texte de représentation du stéréotype dans le diagramme.




Libellés des propriétés de stéréotype


Dans l'exemple ci dessous, je définie une propriété du stéréotype "ServiceInterface" appelé "secured". Sans customisation, quand j'édite les propriétés sur une classe stéréotypée "ServiceInterface", le libellé a le même nom que celui indiqué dans le profil.
Mais il est possible de customiser le libellé, pour, par exemple, l'afficher en français.
 Les étapes à suivre pour mettre en place cette customisation :

  • Ouvrir la customisation du profile pour l'élément concerné. Ici j'édite la customisation de "ServiceInterface" que j'ai nommé "ServiceInterfaceCustomization" :


  •  clic droit dessus, puis "Nouvel Élément" -> "Propriété"
  •   Le nom de la propriété doit avoir le même nom que la propriété du stéréotype. Dans mon exemple, la propriété s'appelle "secured".
  • Éditer les valeurs de customisation de la propriété nouvellement créée, puis appliquer un stéréotype <<metaProperty>>
  • Indiquer dans la valeur "New name" le nom qui sera dorénavant affiché pour cette propriété.

 Pour info, on peut également jeter un œil sur la présentation d'Andrius Strazdauskas, qui exposait, au MD-Day 2011, les avantages de créer son DSL en se basant sur UML et ses profils (et donc d'utiliser Magic Draw pour la customisation graphique du DSL).

Pour aller plus loin, la documentation officielle de Magic Draw sur le profiling et les DSL

1 commentaire:

  1. Bonsoir,

    je voudrais savoir s'il vous plait a propos de cet article. dans ce cas de figure est ce qu'on peut dire que la DSL sans les stéréotypes représente un CIM et la DSL avec stéréotypes représente un PIM ?

    aussi y'aurait il un autre modeleur possédant ces mêmes fonctionnalités (permettre de créer des DSL graphiquement et leurs assigner des stéréotypes) mais gratuit ?

    Au plaisir de vous lire

    RépondreSupprimer