Javier Criado summarizes our work “Enabling the reuse of stored model transformations through annotations” by Javier Criado, Salvador Martínez, Luis Iribarne and Jordi Cabot to be presented at ICMT 2015
Model transformation languages lack mechanisms for describing and/or storing information about the properties of the rules and the transformation processes. This makes it difficult to find later the right transformation for the problem at hand unless we dig into the transformation code ourselves to carefully analyze what it does and how it does it. This is specially true considering there are few public M2M transformation repositories (exceptions would be the ATL model transformation ZOO or ReMoDD, for when a (virtual) model repository to rule them all?). Such mechanism would also be useful when dealing with non-functional requirements in MDD.
To deal with this issue, we propose a mechanism composed by two main elements:
- A Domain-Specific Language (DSL) to describe functional but also non-functional properties of Model-to-Model (M2M) transformations;
- A process to semi-automatically tag model transformation with information conforming to our DSL and to query repositories storing these annotated transformations. This work will be presented at the ICMT’2015 conference (full paper and slides will be available from the 25th July, 2015).
Example : A very common transformation use case is the translation from class diagram models to relational models. In this scenario, different transformation strategies can be followed to deal with inheritance:
While the first strategy could be better for space optimization requirements, the second and third versions improve the maintainability in different degrees. Properties related with these options could be defined and linked with the transformations, thus facilitating reuse and search processes.
DSL for Annotating Model Transformations
This language is independent from the concrete transformation language. It allows us to define: a) catalogues of properties and b) annotations of rules and modules conforming to the existing catalogues:
Properties are classified in functional or non-functional. In addition, both types can affect the value of related non-functional properties. In order to represent this relation, property definitions can be related with other property definitions, describing the type and the level of the relationship.
Process for reusing model transformations
We propose a semi-automatic process for annotating and reusing existing transformation. It starts by annotating a given transformation (to be stored) with attributes from a model instance of our proposed DSL. A simple concrete syntax has been developed for testing our DSL with ATL. This is a textual language developed with Xtext and integrated with ATL comments.
Basically, our textual syntax allows us to produce annotations that identify the transformation module or rule by name and assign to it couples of properties + their values (identifying also the catalogue containing the definition of the property as it will help the understandability of the annotation):
Then, the transformation is stored in a repository of choice. Finally, and transparently to the user, a search engine provides the user with the capability of using the OCL query language to search for model transformations fulfilling a set of given requirements. The complete overview of the process is the following:
For the full details please check the paper
Featured image by ArulNS