As model transformations have become an integral part of the automated software engineering lifecycle, reuse, modularisation, and composition of model transformations becomes important. One way to compose model transformations is to compose modules of transformation rules, and execute the composition as one transformation (internal composition). This kind of composition can provide fine-grained semantics, as it is part of the transformation language. The downside is that internal composition relies on specific transformation language semantics, and often applies to one transformation language only.
The EMF Transformation Virtual Machine (EMFTVM) aims to mitigate the problem of internal composition being specific to one transformation language by defining the composition mechanism at the VM level. The VM provides a common, executable semantics for (composition of) transformation modules and rules. Two internal composition mechanisms for rule-based transformation languages are generalised in this way: module import and rule inheritance. The EMFTVM is based on the Eclipse Modeling Framework (EMF), which represents a de facto standard for modelling today. As a result, the proposed composition mechanisms are specific to EMF.
The generality of EMFTVM – within the scope of EMF – is demonstrated by compiling more than one rule-based model transformation language to the VM, and by extension provide executable semantics for those languages. As a proof of concept, we discuss how ATL and graph transformations can be mapped to modules and rules in our VM. For this purpose, we've developed SimpleGT, a minimal graph transformation language on top of EMF, based on double push-out (DPO) semantics. The combination of ATL and SimpleGT already provides a nice spectrum of rule-based languages, as ATL is a model mapping language, and SimpleGT is a recursive model rewriting language.
The generality of EMFTVM also applies to the composition mechanisms implemented in EMFTVM: ATL's and SimpleGT's notion of module import and rule inheritance are mapped to the same implementation, and therefore have common executable semantics. In the long term, EMFTVM may evolve towards a general interoperability solution for model transformation languages that leverages commonalities between languages. EMFTVM is available in the form of an Eclipse plug-in. It is expected that EMFTVM will become part of the ATL plug-in as a research VM in the near future.
Below is a video of the MoDELS 2011 paper presentation on EMFTVM:
Below is a video of how the Transformation Tool Contest 2011 Live challenge was solved using EMFTVM:
You'll need the following installed on your computer:
To download and install the EMFTVM Eclipse plugin, install it from either of the following Eclipse update sites:
- http://soft.vub.ac.be/eclipse/update-3.7/ for Eclipse 3.6 or 3.7
See links for the source code.
To use EMFTVM for your ATL transformations, just add
– @atlcompiler emftvm on the first line of your ATL module to compile them to EMFTVM. An example ATL file can be found here.
The Eclipse update site above also includes a proof-of-concept graph transformation language, called SimpleGT. SimpleGT modules compile to EMFTVM modules by default. An example SimpleGT module can be found here.
EMFTVM includes a separate launch configuration dialog that looks very much like ATL's launch configuration dialog. It can be found via “Run → Run Configurations…”.
EMFTVM also includes its own Ant tasks. See this example build.xml file to find out how to use the Ant tasks.
- Dennis Wagelaar, Massimo Tisi, Jordi Cabot, Frédéric Jouault. Towards a general composition semantics for rule-based model transformation. Proceedings of the ACM/IEEE 14th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2011), LNCS 6981, pp.623 - 637.
- Dennis Wagelaar. A Revised Semantics for Rule Inheritance and Module Superimposition in ATL. Proceedings of MtATL 2011, CEUR Workshop Proceedings, vol.742, pp.63 - 74.
- ATL source code (incl. EMFTVM): http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.m2m/org.eclipse.m2m.atl/plugins/?root=Modeling_Project
- EMFTVM source code (old): http://soft.vub.ac.be/viewvc/EMFTVM/trunk/