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. 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.
Une transformation est la génération automatique d'un modèle cible à partir d'un modèle source.
Une transformation est dite endogène lorsque son modèle source et son modèle cible instancient le même métamodèle. Par exemple, le réusinage de code ou l'optimisation de code sont des transformations endogènes. 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. C'est notamment le cas en rétro-ingénierie.
Une transformation est dite horizontale lorsque son modèle source et son modèle cible se trouvent au même niveau d'abstraction. Par exemple, la migration d'un programme de Java à C++ est un exemple de transformation horizontale. En revanche, une transformation est dite verticale lorsqu'elle opère à des niveaux d'abstraction différents. Le raffinement est une transformation verticale.
Une transformation est dite syntaxique lorsqu'elle n'utilise que la syntaxe du ou des modèles source. Ainsi, la génération d'un arbre syntaxique à partir de code source par un analyseur syntaxique est une transformation syntaxique. Lorsque des traitements plus complexes prenant en compte la sémantique des modèles sont effectués, la transformation est dite sémantique.
Une transformation est dite bidirectionnelle (en abrégé : ) si tous les modèles qu'elle comprend peuvent être à la fois des modèles source et cible. 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.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
A model transformation language in systems and software engineering is a language intended specifically for model transformation. The notion of model transformation is central to model-driven development. A model transformation, which is essentially a program which operates on models, can be written in a general-purpose programming language, such as Java. However, special-purpose model transformation languages can offer advantages, such as syntax that makes it easy to refer to model elements.
A transformation language is a computer language designed to transform some input text in a certain formal language into a modified output text that meets some specific goal. Program transformation systems such as Stratego/XT, TXL, Tom, DMS, and ASF+SDF all have transformation languages as a major component. The transformation languages for these systems are driven by declarative descriptions of the structure of the input text (typically a grammar), allowing them to be applied to wide variety of formal languages and documents.
Un langage dédié (en anglais, domain-specific language ou DSL) est un langage de programmation dont les spécifications sont conçues pour répondre aux contraintes d’un domaine d'application précis. Il s'oppose conceptuellement aux langages de programmation classiques (ou généralistes) comme Java ou C, qui tendent à traiter un ensemble de domaines. Néanmoins, aucun consensus ne définit précisément ce qu'est un langage dédié. Ce manque de définition précise sur la nature d'un langage dédié rend délicate la tâche d'établir un historique clair sur l'origine du concept.
Explore l'interprétation des modèles, la compilation par l'évaluation partielle, les appels de fonctions et la transition vers l'évaluation partielle, en soulignant l'importance des interprètes modèles pour soutenir les langages de modélisation.