« QVT » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Eneelk (discuter | contributions)
tableau des versions
Eneelk (discuter | contributions)
m sourçage
Ligne 25 : Ligne 25 :
*''QVT Relations'' (QVT-R) est un langage [[Programmation déclarative|déclaratif]] et relationnel ;
*''QVT Relations'' (QVT-R) est un langage [[Programmation déclarative|déclaratif]] et relationnel ;
*''QVT Operational'' (QVT-O) est un langage hybride qui propose une structure déclarative à base de règles et permet l'utilisation d'[[Programmation impérative|expressions impératives]] ;
*''QVT Operational'' (QVT-O) est un langage hybride qui propose une structure déclarative à base de règles et permet l'utilisation d'[[Programmation impérative|expressions impératives]] ;
*''QVT Core'' (QVT-C) est un langage déclaratif minimal (peu usité, QVT-R étant plus expressif).
*''QVT Core'' (QVT-C) est un langage déclaratif minimal (peu usité, QVT-R étant plus expressif{{sfn|Stevens|2011|p=180}}).


=== Concepts ===
=== Concepts ===
Ligne 129 : Ligne 129 :
* {{Ouvrage|langue=anglais|auteur=Tracy Gardner|et al.=oui|titre=A review of OMG MOF 2.0 Query/Views/Transformations Submissions and Recommendations towards the final Standard|mois=novembre|année=2003|lire en ligne=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.431.1002&rep=rep1&type=pdf|plume=oui|libellé=Gardner 2003}}
* {{Ouvrage|langue=anglais|auteur=Tracy Gardner|et al.=oui|titre=A review of OMG MOF 2.0 Query/Views/Transformations Submissions and Recommendations towards the final Standard|mois=novembre|année=2003|lire en ligne=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.431.1002&rep=rep1&type=pdf|plume=oui|libellé=Gardner 2003}}
* {{Ouvrage|langue=anglais|auteur1=[[Object Management Group]]|titre=Request for Proposal: MOF 2.0 Query / Views / Transformations RFP|url=http://web.archive.org/web/20070221083627/http://www.omg.org:80/docs/ad/02-04-10.pdf|date=avril 2002|consulté le=13 décembre 2019|id=RFP 2002|libellé=OMG-RFP 2002|plume=oui}}
* {{Ouvrage|langue=anglais|auteur1=[[Object Management Group]]|titre=Request for Proposal: MOF 2.0 Query / Views / Transformations RFP|url=http://web.archive.org/web/20070221083627/http://www.omg.org:80/docs/ad/02-04-10.pdf|date=avril 2002|consulté le=13 décembre 2019|id=RFP 2002|libellé=OMG-RFP 2002|plume=oui}}
* {{Article|langue=anglais|auteur1=Perdita Stevens|titre=A simple game-theoretic approach to checkonly QVT Relations|url=https://link.springer.com/article/10.1007/s10270-011-0198-8|date=mars 2011|consulté le=2 janvier 2020|libellé=Stevens 2011|périodique={{Lien|langue=en|Software and Systems Modeling}}|plume=oui}}
<!-- * K. Czarnecki and S. Helsen, « [http://www.swen.uwaterloo.ca/~kczarnec/ECE750T7/czarnecki_helsen.pdf Classification of Model Transformation Approaches.] », in proceedings of the OOPSLA'03 Workshop on the Generative Techniques in the Context Of Model-Driven Architecture, Anaheim, California, USA.
<!-- * K. Czarnecki and S. Helsen, « [http://www.swen.uwaterloo.ca/~kczarnec/ECE750T7/czarnecki_helsen.pdf Classification of Model Transformation Approaches.] », in proceedings of the OOPSLA'03 Workshop on the Generative Techniques in the Context Of Model-Driven Architecture, Anaheim, California, USA.
* M. Bohlen, « [http://galaxy.andromda.org/jira/secure/attachment/10780/QVT+article+mbohlen+2006.pdf QVT and multi metamodel transformation in MDA.]»
* M. Bohlen, « [http://galaxy.andromda.org/jira/secure/attachment/10780/QVT+article+mbohlen+2006.pdf QVT and multi metamodel transformation in MDA.]»

Version du 2 janvier 2020 à 11:46

QVT
Principe d'une transformation avec QVT
Principe d'une transformation avec QVT

Éditeur Object Management Group (OMG)
Auteurs Codagen Technologies Corporation, Compuware, DSTC (en), France Télécom, Inria, Interactive Objects Software, IBM, King's College de Londres, Laboratoire d'informatique de Paris 6, OMG, Softeam, Sun Microsystems, TNI-Valiosys, Tata Consultancy Services, Thales, Université d'York[1].
Genre Spécification formelle
État Version 1.3
Première publication
Dernière publication
Standard omg.org/spec/QVT/1.3

En ingénierie dirigée par les modèles, Query/View/Transformation, plus connu sous son sigle QVT, est un standard pour la spécification de transformations de modèles. Il fournit une architecture et des langages dédiés facilitant la génération de modèles à partir d'autres modèles. Défini pour la première fois en 2003 par l'Object Management Group (OMG), QVT fait partie du standard Meta-Object Facility (MOF). Il est à ce titre une composante importante de l'architecture dirigée par les modèles (MDA).

Le standard QVT est principalement représenté par deux langages de transformations de modèles : QVT Relations (QVT-R), un langage déclaratif, et QVT Operational (QVT-O), un langage impératif. D'autres langages de transformations de modèles comme ATL s'inspirent également des concepts du standard. Du fait de sa complexité, l'implémentation de QVT n'est pas achevée en 2019.

Description

Langages de transformations de modèles

Le standard QVT définit un ensemble de langages permettant d'exprimer des transformations de modèles à modèles[2],[Note 1] :

  • QVT Relations (QVT-R) est un langage déclaratif et relationnel ;
  • QVT Operational (QVT-O) est un langage hybride qui propose une structure déclarative à base de règles et permet l'utilisation d'expressions impératives ;
  • QVT Core (QVT-C) est un langage déclaratif minimal (peu usité, QVT-R étant plus expressif[3]).

Concepts

Requêtes

Une requête (query) est une expression évaluée sur un modèle donné[4]. Le résultat d'une requête est composé d'une ou plusieurs instances des types définis dans le modèle ou dans le langage de requête. Pour un modèle fondé sur MOF, le résultat d'une requête peut par exemple être un booléen ou un ensemble d'instances de métaclasses du métamodèle. Le langage OCL est un exemple de langage permettant d'évaluer des requêtes sur des modèles.

Vues

Une vue (view) est un modèle entièrement dérivé d'un autre modèle (appelé modèle de base)[5]. L'intérêt d'une vue est de réorganiser tout ou partie d'un modèle dans un but particulier. Le plus souvent, une vue n'est disponible qu'en lecture seule. Une requête peut être considérée comme un type particulier de vue.

Transformations

Une transformation (transformation) est un programme qui génère un modèle cible à partir d'un modèle source[6]. Une vue peut être considérée comme le résultat d'un type particulier de transformation dans laquelle le modèle cible est totalement dépendant du modèle source. Une transformation n'utilisant que des éléments du langage QVT-R est dite relationnelle tandis qu'une transformation n'utilisant que des éléments du langage QVT-O est dite opérationnelle[7].

Architecture

Architecture des langages du standard QVT
Architecture des langages du standard QVT

Le standard QVT possède ainsi une nature hybride, à la fois déclarative et impérative. La partie déclarative de QVT est le cœur du standard. Elle forme une architecture en deux couches[8]. Le langage QVT-C (Core) est la couche inférieure de l'architecture. Il définit les concepts bas niveau nécessaires à la spécification de transformations à partir du méta-métamodèle EMOF et du langage OCL. Il définit aussi explicitement la constitution des modèles de trace, c'est-à-dire la modélisation des étapes intermédiaires d'une transformation. Le langage QVT-R (Relations) est la couche supérieure de l'architecture. Il met l'accent sur l'utilisabilité, rend implicite l'écriture des modèles de trace et fournit des fonctionnalités comme le filtrage par motif[8]. Entre ces deux couches, la transformation Relations to Core est un moyen systématique de traduire une transformation écrite en QVT-R et un sens d'exécution donné en une transformation écrite en QVT-C[9].

Dans l'architecture de QVT, deux mécanismes supplémentaires se greffent aux couches déclaratives du standard pour y ajouter le paradigme impératif. D'abord, le mécanisme Operational Mappings fournit une définition de QVT-O[10]. Cette définition est en fait construite sur celle de QVT-R[10]. L'intérêt du paradigme impératif est de permettre une implémentation explicite des relations de QVT-R. Cette implémentation peut elle-même contenir des références à d'autres relations à la manière d'un appel de fonction. En cela, QVT-O est considéré comme un langage impératif (lorsque les transformations sont toutes opérationnelles) ou hybride (en support de transformations relationnelles)[11]. Un autre moyen, fourni par le mécanisme Black Box, est d'implémenter une relation avec un langage dédié en respectant la signature de la relation[10]. Dans ce cas, l'implémentation forme une boîte noire. L'interopérabilité est possible si le langage est lui-même conforme au méta-métamodèle MOF, par exemple Java (langage)[12].

Le métamodèle QVT, qui définit les éléments de QVT-R, QVT-O et QVT-C, est construit à partir du méta-métamodèle EMOF (Essential MOF) et d'Essential OCL.

Historique

Appel à propositions

Centrales à l'architecture dirigée par les modèles, les transformations de modèles à modèles font l'objet dès 2002 d'un appel à propositions (Request For Proposal) de l'OMG[13]. L'objectif de cet appel à propositions est de mettre au point un standard de transformations de modèles compatible avec le méta-métamodèle MOF et les technologies existantes du MOF[14]. Il est le sixième des sept appels de l'OMG pour construire la version 2.0 du MOF[15]. Les concepts de requête, vue et transformation sont introduits dans l'appel à propositions afin d'en unifier les réponses[4],[15] et de tirer parti d'avancées déjà effectuées avant la standardisation comme le modèle de transformation du Common Warehouse Metamodel[16].

L'appel à propositions pour QVT compte treize exigences, dont sept obligatoires[16] :

  1. La proposition doit définir un langage de requête pour les modèles ;
  2. La proposition doit définir un langage de définition de transformations entre un métamodèle source et un métamodèle cible. La définition de la transformation doit permettre de générer un modèle conforme au métamodèle cible à partir d'un modèle conforme au métamodèle source. Les deux métamodèles sont conformes au MOF et peuvent être identiques ;
  3. Les langages de la proposition doivent eux-mêmes être définis comme des métamodèles conformes au MOF ;
  4. Le langage de définition de transformations doit contenir toute l'information nécessaire à une exécution automatique de la transformation ;
  5. Le langage de définition de transformations doit permettre la création d'une vue d'un métamodèle ;
  6. Le langage de définition de transformations doit être déclaratif afin de permettre l'exécution incrémentale de la transformation ;
  7. Tous les mécanismes définis dans la proposition doivent fonctionner sur des instances de métamodèles conformes à la version 2.0 du MOF.

Les exigences optionnelles proposent des fonctionnalités pouvant être intégrées au langage de définition de transformations, parmi lesquelles la bidirectionnalité et l'héritage de transformations[17].

Réponses à l'appel et standardisation

L'appel à propositions obtient huit réponses[18].

Historique des versions

Version Adoption Changements majeurs[Note 2]
Ancienne version, toujours prise en charge : 1.0 Première adoption du standard QVT
Ancienne version, toujours prise en charge : 1.1 Génération de la syntaxe abstraite des langages de QVT
Ancienne version, toujours prise en charge : 1.2 Correction des incohérences dans les métamodèles de QVT, mise à jour des diagrammes
Dernière version stable: 1.3 Description de QVT Operational (signatures de transformations, traces), utilisation d'OCL dans QVT
Légende :
Ancienne version
Ancienne version, toujours prise en charge
Dernière version stable
Dernière version avancée
Version future

Implémentations

Langages propres à QVT

Plusieurs implémentations du standard QVT existent[19]. La plupart d'entre elles sont abandonnées ou inachevées, souvent en raison de l'absence d'une formalisation suffisante des langages du standard[19]. Après une refonte du standard en 2016[2], l'implémentation est principalement poursuivie par le projet Eclipse MMT (en) (Model-to-Model Transformations) qui utilise lui-même les outils du projet Eclipse Modeling Framework.

Langages compatibles avec QVT

  • Tefkat (en) : autre langage et moteur de transformation de modèles. Propose une compatibilité avec QVT.
  • ATL : implémentation du langage du même nom, très librement inspiré du langage QVT.
  • VIATRA (en) : environnement de transformation de modèle. Propose une compatibilité avec QVT.
  • GReAT (en) : autre langage de transformation de modèles. Propose une compatibilité avec QVT.

Approches complémentaires

Il est d'usage en ingénierie dirigée par les modèles de spécifier séparément les transformations qui utilisent ou qui produisent du texte (par exemple, du code source ou de la documentation)[20], bien que le texte soit lui-même un modèle[Note 3]. Cela permet de réutiliser certaines fonctionnalités des compilateurs comme la génération de code ou l'analyse syntaxique[23].

Le standard QVT a été conçu pour les transformations modèle-à-modèle (M2M). Pour les transformations modèle-à-texte (M2T), l'OMG propose le standard MOF2Text.

Notes et références

Notes

  1. La spécification du standard QVT recommande la notation QVT-X pour le nom entier du langage (p. ex. QVT-Relations) et QVTx pour son abréviation (p.ex. QVTr). Dans l'usage courant toutefois, les langages sont le plus souvent abrégés sous les formes QVT-R, QVT-C et QVT-O.
  2. Dans chaque nouvelle version de QVT, les portions de texte modifiées (en anglais : specification changebars) sont mises en avant et accompagnées de commentaires éditoriaux.
  3. « Tout est modèle » est un principe exposé pour la première fois par J. Bézivin. Il est depuis devenu un énoncé important de l'ingénierie dirigée par les modèles[21].

    « In MDE, the basic principle that “Everything is a model” has many interesting properties, among others the capacity to generate a realistic research agenda. »

    — Jean Bézivin, On the unification power of models[22]

    « En IDM, le principe de base que “Tout est modèle” possède beaucoup de propriétés intéressantes, parmi lesquelles la possibilité de générer un programme de recherche réaliste. »

    — On the unification power of models[22]

Références

  1. OMG 2016.
  2. a et b OMG 2016, p. 2.
  3. Stevens 2011, p. 180.
  4. a et b Gardner 2003, p. 2.
  5. Gardner 2003, p. 2, 3.
  6. Gardner 2003, p. 3.
  7. OMG 2016, p. 5.
  8. a et b OMG 2016, p. 9.
  9. OMG 2016, p. 6.
  10. a b et c OMG 2016, p. 10.
  11. OMG 2016, p. 65.
  12. (en) Fábio Levy Siqueira, « Using black box implementations in Eclipse QVTo », sur levysiqueira.com.br, (consulté le )
  13. Gardner 2003, p. 1.
  14. RFP 2002, p. 1.
  15. a et b RFP 2002, p. 21.
  16. a et b RFP 2002, p. 23.
  17. RFP 2002, p. 25.
  18. Gardner 2003, p. 8.
  19. a et b (en) Königs, Alexander, Model Integration and Transformation – A Triple Graph Grammar-based QVT Implementation, (OCLC 1111373557, lire en ligne)
  20. (en) Krzysztof Czarnecki et Simon Helsen, « Classification of Model Transformation Approaches », OOPSLA,‎ , p. 9 (lire en ligne, consulté le )
  21. (en) Marco Brambilla, Jordi Cabot et Manuel Wimmer, Model-Driven Software Engineering in Practice: Second Edition, , 8 p.
  22. (en) Jean Bézivin, « On the unification power of models », Software and Systems Modeling,‎ , p. 2
  23. (en) Krzysztof Czarnecki et Simon Helsen, « Classification of Model Transformation Approaches », OOPSLA,‎ , p. 9 (lire en ligne, consulté le )

Annexes

Bibliographie

Document utilisé pour la rédaction de l’article : document utilisé comme source pour la rédaction de cet article.

Voir aussi