
QVT ( Query/View/Transformation ) est un ensemble standard de langages pour la transformation de modèles défini par l' Object Management Group .
Aperçu
La transformation de modèle est une technique clé utilisée dans l'architecture pilotée par les modèles . Comme son nom l'indique, la norme OMG couvre à la fois les transformations, les vues et les requêtes. Les requêtes et les vues de modèle peuvent être considérées comme des types particuliers de transformation de modèle, à condition que nous utilisions une définition suffisamment large de la transformation de modèle : une transformation de modèle est un programme qui opère sur des modèles.
La norme QVT définit trois langages de transformation de modèles. Tous fonctionnent sur des modèles conformes aux métamodèles Meta-Object Facility (MOF) 2.0 ; la transformation indique quels métamodèles sont utilisés. Une transformation dans l'un des trois langages QVT peut elle-même être considérée comme un modèle, conforme à l'un des métamodèles spécifiés dans la norme. La norme QVT intègre la norme OCL 2.0 et l'étend également avec des fonctionnalités impératives.
- QVT-Operational est un langage impératif conçu pour écrire des transformations unidirectionnelles.
- QVT-Relations est un langage déclaratif conçu pour permettre l'écriture de transformations de modèles unidirectionnelles et bidirectionnelles. Une transformation incarne une relation de cohérence sur des ensembles de modèles. La cohérence peut être vérifiée en exécutant la transformation en mode checkonly ; la transformation renvoie alors True si l'ensemble de modèles est cohérent selon la transformation et False sinon. La même transformation peut être utilisée en mode enforce pour tenter de modifier l'un des modèles afin que l'ensemble de modèles soit cohérent. Le langage QVT-Relations possède une syntaxe concrète à la fois textuelle et graphique.
- QVT-Core est un langage déclaratif conçu pour être simple et pour servir de cible à la traduction de QVT-Relations. Cependant, QVT-Core n'a jamais eu d'implémentation complète et en fait, il n'est pas aussi expressif que QVT-Relations. Par conséquent, l'architecture QVT illustrée ci-dessus est trompeuse : la transformation de QVT-Relations en QVT-Core donnée dans la norme QVT ne préserve pas la sémantique.
Enfin, QVT-BlackBox est un mécanisme permettant d'invoquer des fonctions de transformation exprimées dans d'autres langages (par exemple XSLT ou XQuery ).
Bien que QVT ait une portée large, il ne couvre pas tout ce qui a été considéré comme une transformation de modèle, une vue ou une requête. Par exemple, les langages QVT ne permettent pas les transformations vers ou depuis des modèles textuels, car chaque modèle doit être conforme à un métamodèle MOF 2.0. Les transformations de modèle en texte sont normalisées séparément par l'OMG (voir MOFM2T ).
Histoire
En 2002, OMG a publié une demande de propositions (RFP) sur MOF Query/View/Transformation afin de rechercher une norme compatible avec la suite de recommandations Model Driven Architecture (MDA) (UML, MOF, OCL, etc.).
Plusieurs réponses ont été données par un certain nombre d'entreprises et d'institutions de recherche qui ont évolué pendant trois ans pour produire une proposition commune, basée sur un projet du chercheur britannique Dr Laurence Tratt. La première version a été soumise et approuvée en 2005. La version 1.1 de QVT a été publiée en janvier 2011.
Implémentations
QVT-Opérationnel :
- Borland Together contient une implémentation de QVT Operational, qui a été apportée à la Fondation Eclipse et est maintenant développée sous le nom de projet Eclipse M2M Operational QVT.
- Eclipse M2M Operational QVT : implémentation open source officielle d'Eclipse de QVT Operational.
- MagicDraw dispose du plugin QVT qui utilise l'implémentation QVT opérationnelle fournie par le projet Eclipse M2M .
- SmartQVT : une implémentation open source Eclipse (Orange Labs) du langage QVT-Operational.
Noyau QVT :
- OptimalJ : L'implémentation en accès anticipé du langage QVT-Core était dans la version 3.4 d' OptimalJ de Compuware . Cependant, OptimalJ a été abandonné.
Relations QVT :
- ModelMorf : un outil propriétaire de Tata Consultancy Services Ltd. Entièrement compatible avec le langage QVT-Relations. La version d'essai fournit un utilitaire de ligne de commande qui consomme et produit des modèles au format XMI. Une version complète, intégrée au référentiel, est disponible dans le cadre de leur cadre de modélisation propriétaire.
- MediniQVT : Moteur de transformation basé sur EMF avec licence EPL pour le moteur et éditeur/débogueur sous licence non commerciale. Utilise la syntaxe QVT-Relations, mais s'écarte délibérément de la sémantique de la norme OMG.
- Le projet Eclipse M2M vise à produire une implémentation de QVT Core et Relations.
- Echo, un outil open source basé sur EMF pour la réparation et la transformation de modèles construit sur le moteur de recherche de modèles Alloy , qui fournit une implémentation de la syntaxe QVT-Relations, mais utilise une sémantique qui s'écarte délibérément de la spécification OMG.
Similaire à QVT :
- jQVT : Un moteur QVT compilé pour Java, utilisant Xbase à la place d'OCL. Une transformation relationnelle QVT est d'abord compilée dans le code source Java, qui produit ensuite directement le modèle cible à partir des modèles sources au moment de l'exécution, sans interpréter à nouveau la règle de transformation. Il prend en charge les modèles EMF, ainsi que les objets Java simples.
- Tefkat : une implémentation open source du langage Tefkat qui est également similaire à QVT. Open source.
- ATL : un composant du projet M2M Eclipse. ATL est un langage et un moteur de transformation de type QVT avec une large communauté d'utilisateurs et une bibliothèque open source de transformations.
- Model Transformation Framework (MTF) : un projet IBM alphaWorks, mis à jour pour la dernière fois en 2007.