EMF Transformation Virtual Machine

Introduction

EMF

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.

ATL

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:

The Adobe Flash Plugin is needed to display this content.

Below is a video of how the Transformation Tool Contest 2011 Live challenge was solved using EMFTVM:

The Adobe Flash Plugin is needed to display this content.

Features

Contact

System Requirements

You'll need the following installed on your computer:

Download & Install

To download and install the EMFTVM Eclipse plugin, install it from either of the following Eclipse update sites:

More help on how to install Eclipse features from update sites can be found here (3.6) and here (3.7).

See links for the source code.

How to use EMFTVM?

Compiling to EMFTVM

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.

Running EMFTVM modules

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 Launch Configuration Dialog

EMFTVM also includes its own Ant tasks. See this example build.xml file to find out how to use the Ant tasks.

Publications

Links

 
research/mdd/emftvm.txt · Last modified: 08.01.2013 14:08 by dwagelaa
 

© 2014 • Software Languages Lab • Submit comments and bugs to our Bugzilla or to the webmaster