Transformation de modèles

Un article de Wikipédia, l'encyclopédie libre.
Principe d'une transformation de modèles entre deux métamodèles

En ingénierie dirigée par les modèles, une transformation de modèles est un programme qui permet de générer automatiquement et de modifier des modèles. Tout comme les métamodèles, les transformations de modèles sont un concept central de l'ingénierie dirigée par les modèles[1]. Il existe plusieurs standards de transformations de modèles comme QVT ou MOFM2T ainsi que de nombreux langages de transformation de modèles comme ATL.

Définition[modifier | modifier le code]

Une transformation est la génération automatique d'un modèle cible à partir d'un modèle source[2].

Classification[modifier | modifier le code]

Transformations endogènes et exogènes[modifier | modifier le code]

Une transformation est dite endogène lorsque son modèle source et son modèle cible instancient le même métamodèle[3]. Par exemple, le réusinage de code ou l'optimisation de code sont des transformations endogènes[4]. Au contraire, une transformation est dite exogène lorsque son modèle source et son modèle cible n'instancient pas le même métamodèle[3]. C'est notamment le cas en rétro-ingénierie[3].

Transformations horizontales et verticales[modifier | modifier le code]

Une transformation est dite horizontale lorsque son modèle source et son modèle cible se trouvent au même niveau d'abstraction[4]. Par exemple, la migration d'un programme de Java à C++ est un exemple de transformation horizontale[5]. En revanche, une transformation est dite verticale lorsqu'elle opère à des niveaux d'abstraction différents[4]. Le raffinement est une transformation verticale[5].

Transformations syntaxiques et sémantiques[modifier | modifier le code]

Une transformation est dite syntaxique lorsqu'elle n'utilise que la syntaxe du ou des modèles source[5]. Ainsi, la génération d'un arbre syntaxique à partir de code source par un analyseur syntaxique est une transformation syntaxique[5]. Lorsque des traitements plus complexes prenant en compte la sémantique des modèles sont effectués, la transformation est dite sémantique[5].

Transformations bidirectionnelles et unidirectionnelles[modifier | modifier le code]

Une transformation est dite bidirectionnelle (en abrégé : bx[6]) si tous les modèles qu'elle comprend peuvent être à la fois des modèles source et cible[7]. Autrement dit, tous les modèles peuvent être modifiés durant une exécution de la transformation. Dans le cas contraire, la transformation est dite unidirectionnelle. Les transformations bidirectionnelles forment une classe importante des transformations de modèles. Elles interviennent naturellement lorsque plusieurs modèles doivent rester cohérents entre eux : les modifications d'un modèle doivent alors se répercuter sur les autres modèles[8].

Aspects théoriques[modifier | modifier le code]

Références[modifier | modifier le code]

Annexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

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

  • (en) Faris Abou-Saleh, James Cheney, Jeremy Gibbons, James McKinna et Perdita Stevens, « Introduction to Bidirectional Transformations », Lecture Notes in Computer Science « Bidirectional Transformations »,‎ , p. 1-28 (lire en ligne). Ouvrage utilisé pour la rédaction de l'article
  • (en) Anneke Kleppe, Jos Warmer et Wim Bast, MDA Explained: The Model Driven Architecture: Practice and Promise, (lire en ligne). Ouvrage utilisé pour la rédaction de l'article
  • (en) Tom Mens et Pieter Van Gorp, « A Taxonomy of Model Transformation », Electronic Notes in Theoretical Computer Science,‎ . Ouvrage utilisé pour la rédaction de l'article
  • (en) Shane Sendall et Wojtek Kozaczynski, « Model transformation: the heart and soul of model-driven software development », IEEE Software,‎ . Ouvrage utilisé pour la rédaction de l'article
  • (en) Perdita Stevens, « Bidirectional model transformations in QVT: semantic issues and open questions », Software & Systems Modeling,‎ (lire en ligne, consulté le ). Ouvrage utilisé pour la rédaction de l'article

Voir aussi[modifier | modifier le code]