urbanisation-si.com

urbanisation-si.com

Le meilleur outil pour transformer, dériver, parcourir, requêter sur des modèles afin de mettre en œuvre MDA (Model Driven Architecture)

Convaincue que certains outils open source et les normes sont aujourd'hui arrivés à maturités et présentent pour les entreprises de nombreux avantages, nous avons volontairement écarté les produits commerciaux et leurs langages propriétaires comme MEGA, IBM Rational, Entreprise Architect, ... pour nous consacrer uniquement à 2 solutions open source QVT (Query View Transformation) et ATL (ATLAS Transformation Language) implémentées dans Eclipse Modeling Tools.

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-ATL-QVT-1.PNG

 

Tous les langages de modélisation unanimement reconnus et largement utilisés que ce soit UML, OCL, BPMN, SysML, MDA, … proviennent de l'OMG (Object Management Group).

 

Dans le cadre de son framework MDA (Model Driven Architecture, ou on veut s’affranchir de cette marque déposée, on parle plus généralement de MDE Model Driven Engineering ou en français IDM  Ingénierie Dirigées par les Modèles), l’OMG  proposait, il y a maintenant 12 ans,  QVT comme langage de manipulations  de modèles.

 

Voir les articles sur MDA :

 

 

Comme à son habitude, l'OMG fournit une documentation abondante très théorique à charge comme ils disent aux éditeurs de fournir des implémentations. Plus facile à dire qu’à faire.

 

Mais que signifie QVT ?

 

« Q » pour « Query », on peut sélectionner des éléments sur un modèle. Le langage utilisé pour cela est OCL  (Object Constraint Language) légèrement modifié et étendu, avec une syntaxe différente et simplifiée.

 

Voir les articles sur OCL :

 

  

« V » pour « View » : une vue est une sous-partie d'un modèle et est définie via une query. Une vue est un modèle à part, avec éventuellement un méta modèle restreint spécifique à cette vue.

 

« T » pour « Transformation » : transformation d'un modèle en un autre.

 

Les habitués de l’OMG savent que leurs normes sont complètes et complexes afin de couvrir un périmètre très large.

 

QVT n’échappe pas à la règle puisqu’on dispose, excuser du peu, de 3 langages et 2 modes pour définir des transformations.

 

1) Mode impératif
QVTo (Query View Tranformation Operational)
En utilisant ce langage, il vous faudra écrire l’algorithme d’implémentation comme dans un langage de programmation classique comme Java ou le langage C.

 

2) Mode déclaratif
On exprime ce qu’on veut sans dire comment le réaliser comme par exemple XSLT pour les transformations d’arbre XML.
On trouve :
QVTr (Query View Tranformation Relational) : il s’agit d’un langage de haut niveau où on spécifie des correspondances entre des ensembles/patrons d'éléments de 2 modèles.
QVTc (Query View Tranformation Core) :  plus bas niveau que QVTr, le langage est plus simple, mais avec le même pouvoir d'expression de transformations que QVTr.

 

La seule plateforme open source solide que j’utilise est Eclipse et pour l’IDM, la suite « Eclipse Modeling Tools ».

Le métamétamodèle maison est Ecore.

 

Voir les articles sur Ecore :

 

 

Au cours de mes différentes mission, l’outillage de cartographie des systèmes d’information et la conception de méta modèle ont toujours reposé sur Ecore.

 

On trouve des méta modèles Ecore pour les langages de modélisation (DMN, …), les différents cadres d’architectures d’entreprise (Praxeme, TOGAF, Urba-EA, ...), des langages aussi spécifiques comme ceux de règles métiers (DROOLS), …

 

A la date de cet article, la version Oxygen d'Eclipse, intègre la plupart des plugins (Ecore, OCL, Sirius) et ceux qui manquent peuvent être installés directement dans le menu Help – Install Modeling Components, c'est le cas de QVTo et ATL.

 

Plus la peine d’être un geek pour installer un plugin.

 

 

Malheureusement, c’était trop beau pour être vrai, si effectivement ATL et QVTo ne pose pas de problèmes, QVTr (appélé QVTd Declarative dans Eclipse) n’est pas proposé dans la liste et pour cause, le projet est en incubation.

 

Voici le lien si vous voulez évaluez l’état d’avancement.

http://www.eclipse.org/mmt/downloads/?project=qvtd

Il vous faudra donc vous bagarrez, téléchargez, dézippez et installez dans Eclipse qvtd-incubation-Update-0.14.0.zip.

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-QVT-Declarative-2.PNG

 

 

QVTr (Query View Tranformation Relational, (appélé QVTd Declarative dans Eclipse)

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-Eclipse-QVT-Declarative-3.PNG

 

QVTr par sa nature, est limité aux relations entre les éléments de modèle source et cible.

Il permet d'exprimer une représentation de haut niveau des transformations de modèle à modèle. Mais il est parfois difficile de faire des transformations complexes dans un style déclaratif tel qu'utilisé dans QVTr.

 

QVTr suffit pour les transformations simples.

La performance est très faible.

Il est possible de manipuler de petits modèles contenant quelques centaines d'éléments mais l'utiliser avec des modèles plus gros donne des résultats de temps d'exécution énormes.

La principale raison en est le mécanisme d’identification de schémas et le fait que chaque relation doit être établie pour que la transformation réussisse.

Pour chaque relation dans la transformation, il est nécessaire de passer en revue tout le modèle pour toutes les correspondances et de les maintenir.

 

La documentation nous met en garde que cette version est encore immature et ne peut être utilisée qu’à des fins de recherches et d’expérimentations.

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-Eclipse-QVT-Declarative-not-for-use-4.PNG
 

 

QVTo (Query View Tranformation Operational)

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-Eclipse-QVT-Operational-architecture-3_1.PNG

  

QVTo (Query View Tranformation Operational) pour le mode impératif, étend QVTr avec des constructions impératives comme le « if », … (extension d’OCL). Il possède une « Black Box », qui est un mécanisme pour appeler un programme externe.

 

Pour un exemple complet des possibilités de QVTo, voir le tutoriel :

 

 

Toutes les fonctionnalités de la norme ne sont pas encore implémentées. On nous promet qu’elles le seront dans un roche avenir.

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-Eclipse-QVT-Operational-not-for-use-4.PNG
 

 

ATL (ATLAS Transformation Language)

 

meilleur-outil-MDA-MDE-IDM-transformation-de modeles-Eclipse-ATL-logo-6.PNG

 

Le langage de transformation ATL (ATLAS Transformation Language) est un langage (french tech) et un ensemble de transformation prêtes à l’emploi, développé et maintenu par OBEO et INRIA-AtlanMod (2006). Il a été initié par l'équipe AtlanMod (précédemment appelée ATLAS Group).

 

Les objectifs sont de :

  • Faciliter la résolution de problème d’interopérabilité entre systèmes,
  • Résoudre les problèmes de développement logiciel  
  • Traiter des structures de données hétérogènes

 

 

 

Dans le domaine de l'IDM (MDE), ATL fournit des moyens de produire un ensemble de modèles cibles à partir d'un ensemble de modèles sources.

 

 

Publié selon les termes de la Licence publique Eclipse, ATL est un composant M2M (Eclipse), à ​​l'intérieur du Projet de modélisation Eclipse (EMP Eclipse Modeling Project).

 

ATL est basé sur QVT qui est un groupe de gestion des objets standard pour effectuer des transformations de modèles. Il peut être utilisé pour faire une traduction syntaxique ou sémantique.

 

ATL est construit sur une machine virtuelle de transformation de modèles.

 

ATL est un langage à vocation déclarative, mais en réalité hybride, qui permet de faire des transformations de modèles aussi bien endogènes qu’exogènes.

 

Les outils de transformation liés à ATL sont intégrés sous forme de plug-in ADT (ATL Development Tool) pour l’environnement de développement Eclipse.

 

Un modèle de transformation ATL se base sur des définitions de métamodèles au format XMI. Sachant qu’il existe des dialectes d’XMI, ADT est adapté pour interpréter des métamodèles décrits à l’aide d’EMF Ecore (Eclipse) ou MDR (NetBeans).

  

ATL est défini par un modèle MOF pour sa syntaxe abstraite et possède une syntaxe concrète textuelle.

Pour accéder aux éléments d’un modèle, ATL utilise des requêtes sous forme d’expressions OCL. Une requête permet de naviguer entre les éléments d’un modèle et d’appeler des opérations sur ceux-ci.

 

 

Une règle déclarative d’ATL, appelée Matched Rule, est spécifiée par un nom, un ensemble de patrons sources (InPattern) mappés avec les éléments sources, et un ensemble de patrons cibles (OutPattern) représentant les éléments créés dans le modèle cible.

 

 

Depuis la version 2006 d’ATL, de nouvelles fonctionnalités ont été ajoutées telles que l’héritage entre les règles et le multiple pattern matching (plusieurs modèles en entrée).

  

Le style impératif d’ATL est supporté par deux constructions différentes. En effet, on peut utiliser soit des règles impératives appelées Called Rule, soit un bloc d’instructions impératives (ActionBlock) utilisé avec les deux types de règles.
Une Called Rule est appelée explicitement en utilisant son nom et en initialisant ses paramètres.

 

ATL supporte deux modes d’exécution différents : le mode standard et le mode par raffinement.

 

 

Dans le mode standard, les éléments sont créés seulement quand les patterns sources définis dans les règles déclaratives ont été reconnus dans le modèle ; le système instancie alors les éléments du pattern cible. Une fois l’étape d’instanciation passée, un lien de traçabilité est créé, et associe chaque élément reconnu du modèle source à un élément du modèle cible. Finalement, le système évalue ensuite ces liens de traçabilité afin de déterminer les valeurs des propriétés des éléments instanciés.

 

 

Dans le mode par raffinement, les éléments dont les patterns sources non pas été matchés par les règles sont automatiquement copiés dans le modèle cible par le moteur d’exécution. Ceci réduit considérablement le développement de transformations destinées à modifier une petite partie d’un modèle en gardant le reste inchangé.

 

L'écriture d’une transformation dans ATL est assez simple et la partie impérative d'une règle ATL aide beaucoup à gérer la création des éléments et le flux d’exécution. Il est également possible de générer la cible et de lier les modèles directement dans une exécution afin de rendre la règle plus intuitive.

 

ATL est une implémentation de la proposition QVT, mais c'est un langage hybride à la fois déclaratif et impératif. Cela améliore son expressivité et s'accorde avec la capacité à exprimer toute forme de transformation mais contrairement à QVT, les transformations ATL sont unidirectionnel.

 

Dans QVTr, les appels d'une relation à l'autre se font via la clause where mais dans ATL, ce n'est pas le seul moyen d'appeler d'autres règles.

Il est possible de spécifier dans une règle que la spécification d’un élément mappé doit être transformé en transformant un élément spécifique du modèle source.

En utilisant ce mécanisme, il est possible de réduire le nombre d'éléments qui doivent être adaptés dans une règle de transformation.

Le fait que ATL est également compilé et exécuté dans une machine virtuelle rend l'exécution plus rapide que l'interprétation classique des règles de transformation.

  

Le plugin ATL pour Eclipse est depuis plusieurs années dans un état finalisé, complet, stable, robuste, performant, supportant des modèles volumineux et s’inspire de QVTr et QVTo.

Je l’ai utilisé pour la migration d’un modèle de données vers un nouveau dans le cadre d’une fusion de 2 organisations qui en profitaient pour urbaniser et intégrer des innovations dans leur nouveau Système d’Information.

 

Vous trouverez ci-dessous un cours exhaustif en français sur ATL. 

 

  1. Ingénierie Dirigée par les Modèles (IDM) : tutoriel ATL (ATLAS Transformation Language), concevez les métamodèles avant de passer aux choses sérieuses
     
  2. Ingénierie Dirigée par les Modèles (IDM) : tutoriel ATL (ATLAS Transformation Language), le "Da Vinci code" de la transformation ATL
     
  3. Ingénierie Dirigée par les Modèles (IDM) : documentation ATL (ATLAS Transformation Language), vous saurez tout ou presque sur les modules
     
  4. Ingénierie Dirigée par les Modèles (IDM) : cours complet sur ATL (ATLAS Transformation Language)
     
  5. Ingénierie Dirigée par les Modèles (IDM) : cours complet sur ATL (ATLAS Transformation Language) : librairie ATL
     
  6. Ingénierie Dirigée par les Modèles (IDM) : cours complet sur ATL (ATLAS Transformation Language) : les types ATL
     
  7. Cours complet sur ATL (ATLAS Transformation Language) : les types primitifs
     
  8. Cours complet sur ATL (ATLAS Transformation Language) : les collections
     
  9. Cours complet sur ATL (ATLAS Transformation Language) : les énumérations
     
  10. Cours complet sur ATL (ATLAS Transformation Language) : les tuples
     
  11. Cours complet sur ATL (ATLAS Transformation Language) : les éléments de modèles des métamodèles
     
  12. Cours complet sur ATL (ATLAS Transformation Language) : Les expressions déclaratives dans OCL / ATL
     
  13. Cours complet sur ATL (ATLAS Transformation Language) : quelques trucs et astuces sur les expressions
     
  14. Cours complet sur ATL (ATLAS Transformation Language) : les helpers
     
  15. Cours complet sur ATL (ATLAS Transformation Language) : introduction aux règles ATL
     
  16. Cours complet sur ATL (ATLAS Transformation Language) : le code impératif ATL, l’instruction d’affectation
     
  17. Cours complet sur ATL (ATLAS Transformation Language) : le code impératif ATL, l’instruction de test : if
     
  18. Cours complet sur ATL (ATLAS Transformation Language) : le code impératif ATL, l’instruction de boucle : for
     
  19. Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules” (les règles de correspondance), présentation (1/5)
     
  20. Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, la section “from” (pattern source) (2/5)
     
  21. Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, la section des variables locales (3/5)
     
  22. Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, le pattern élément cible (4/5)
     
  23. Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, la section bloc impératif (5/5)
     
  24. Cours complet sur ATL (ATLAS Transformation Language) : les règles paresseuses (Lazy Rules)
     
  25. Cours complet sur ATL (ATLAS Transformation Language) : les règles appelées (Called Rules)
     
  26. Cours complet sur ATL (ATLAS Transformation Language) : l’héritage des règles
     
  27. Cours complet sur ATL (ATLAS Transformation Language) : De la bonne utilisation des règles dans le langage ATL
     
  28. Cours complet sur ATL (ATLAS Transformation Language) : le mode “affiné” ATL
     
  29. Cours complet sur ATL (ATLAS Transformation Language) : les requêtes ATL
     
  30. Cours complet sur ATL (ATLAS Transformation Language) : les mots clés ATL
     
  31. Cours complet sur ATL (ATLAS Transformation Language) : pour terminer, une dernière chose à laquelle il faut prendre garde !
     
  32. Le plugin ATL (ATLAS Transformation Language) pour Eclipse : les étapes pour réaliser une transformation (1/2)
     
  33. Le plugin ATL (ATLAS Transformation Language) pour Eclipse : les étapes pour réaliser une transformation (2/2)

  

Sans aucune hésitation, le meilleur outil MDA, MDE/IDM est ATL d’OBEO / AtlanMod INRIA.
 
Il répondra à tous vos besoins de traitement de modèles que ce soit des transformations, des dérivations, la possibilité de faire des requêtes complexes à des fins de traçabilité, de vérification de règles, de comparaison, de statistiques ou bien de migration d’un modèle de données vers un nouveau.

 

Rhona Maxwel

@rhona_helena

 

"Créer, c'est donner une forme à son destin."

Albert Camus

 

 

Articles conseillés :

 

 



14/10/2017
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au site

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 719 autres membres