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.
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 :
- Transformation de modèles et Ingénierie Dirigées par les Modèles (IDM ou MDE Model Driven Engineering ou bien encore MDA Model Driven Architecture)
- Ingénierie Dirigée par les Modèles : présentation MDA ( Model Driven Architecture ), mais est ce utilisé dans la vraie vie ?
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 :
- Modélisation de système : comment utiliser OCL avec Eclipse, c'est bien la question que tout le monde se pose
- Modélisation de système : UML n'est rien sans OCL !
- Modélisation de système : OCL ça se complique !
- Modélisation de système : OCL vous en redemandez ?
- Modélisation de système : tutoriel OCL, la gestion des évènements
« 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.
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.
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 :
- Eclipse Modeling Framework (EMF) : revoyons les fondamentaux
- Le métamodèle Eclipse Ecore DMN ( Decision Model and Notation ) : comment concevoir son propre outil de modélisation DMN ? [2/4]
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.
QVTr (Query View Tranformation Relational, (appélé QVTd Declarative dans Eclipse)
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.
QVTo (Query View Tranformation Operational)
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 :
ATL (ATLAS Transformation Language)
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.
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 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.
- 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
- Ingénierie Dirigée par les Modèles (IDM) : tutoriel ATL (ATLAS Transformation Language), le "Da Vinci code" de la transformation ATL
- Ingénierie Dirigée par les Modèles (IDM) : documentation ATL (ATLAS Transformation Language), vous saurez tout ou presque sur les modules
- Ingénierie Dirigée par les Modèles (IDM) : cours complet sur ATL (ATLAS Transformation Language)
- Ingénierie Dirigée par les Modèles (IDM) : cours complet sur ATL (ATLAS Transformation Language) : librairie ATL
- Ingénierie Dirigée par les Modèles (IDM) : cours complet sur ATL (ATLAS Transformation Language) : les types ATL
- Cours complet sur ATL (ATLAS Transformation Language) : les types primitifs
- Cours complet sur ATL (ATLAS Transformation Language) : les collections
- Cours complet sur ATL (ATLAS Transformation Language) : les énumérations
- Cours complet sur ATL (ATLAS Transformation Language) : les tuples
- Cours complet sur ATL (ATLAS Transformation Language) : les éléments de modèles des métamodèles
- Cours complet sur ATL (ATLAS Transformation Language) : Les expressions déclaratives dans OCL / ATL
- Cours complet sur ATL (ATLAS Transformation Language) : quelques trucs et astuces sur les expressions
- Cours complet sur ATL (ATLAS Transformation Language) : les helpers
- Cours complet sur ATL (ATLAS Transformation Language) : introduction aux règles ATL
- Cours complet sur ATL (ATLAS Transformation Language) : le code impératif ATL, l’instruction d’affectation
- Cours complet sur ATL (ATLAS Transformation Language) : le code impératif ATL, l’instruction de test : if
- Cours complet sur ATL (ATLAS Transformation Language) : le code impératif ATL, l’instruction de boucle : for
- Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules” (les règles de correspondance), présentation (1/5)
- Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, la section “from” (pattern source) (2/5)
- Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, la section des variables locales (3/5)
- Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, le pattern élément cible (4/5)
- Cours complet sur ATL (ATLAS Transformation Language) : les “Matched Rules”, la section bloc impératif (5/5)
- Cours complet sur ATL (ATLAS Transformation Language) : les règles paresseuses (Lazy Rules)
- Cours complet sur ATL (ATLAS Transformation Language) : les règles appelées (Called Rules)
- Cours complet sur ATL (ATLAS Transformation Language) : l’héritage des règles
- Cours complet sur ATL (ATLAS Transformation Language) : De la bonne utilisation des règles dans le langage ATL
- Cours complet sur ATL (ATLAS Transformation Language) : le mode “affiné” ATL
- Cours complet sur ATL (ATLAS Transformation Language) : les requêtes ATL
- Cours complet sur ATL (ATLAS Transformation Language) : les mots clés ATL
- Cours complet sur ATL (ATLAS Transformation Language) : pour terminer, une dernière chose à laquelle il faut prendre garde !
- Le plugin ATL (ATLAS Transformation Language) pour Eclipse : les étapes pour réaliser une transformation (1/2)
- Le plugin ATL (ATLAS Transformation Language) pour Eclipse : les étapes pour réaliser une transformation (2/2)
Rhona Maxwel
@rhona_helena
"Créer, c'est donner une forme à son destin."
Albert Camus
Articles conseillés :
- Pour trouver les services logiques, les modèles sémantiques et pragmatiques tu dériveras. (« Praxeme 4ème commandement extrait de la bible de l’aspect logique »).
- Urbanisation SI : comment marche le méta-modèle ?
- Libérez-vous, laissez votre stratégie prendre le leadership"
- Avec un peu de métier, métamodéliser la vue métier pour assurer la traçabilité avec la stratégie
- En urbanisation SI, comment définit-on la vue fonctionnelle et quels sont les liens avec la vue métier et applicative ?
- En urbanisation SI, comment met on en oeuvre la traçabilité entre la vue applicative et les vues fonctionnelle et infrastructure ?
- Le Big-Mac de l'urbanisation SI
A découvrir aussi
- 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
- Cours complet sur ATL (ATLAS Transformation Language) : les helpers
- Cours complet sur ATL (ATLAS Transformation Language) : le mode “affiné” ATL
Inscrivez-vous au site
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 786 autres membres