Eclipse Model-to-Model Transformation (M2M) Project Proposal
The project has been created. Please visit the project page.
Proposal Updated: 30 October 2006
The Model-to-Model Transformation (M2M) Project is a proposed open source project under the Eclipse Modeling Project.
This proposal is in the Project Pre-Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.m2m newsgroup.
This proposal focuses on model-to-model transformation, while model-to-text transformation (M2T) is covered by the M2T project proposal.
Model-to-model transformation is a key aspect of model-driven development (MDD). There are many existing technologies for model-to-model transformation, including implementations found within the Eclipse Modeling Project, such as the ATL component of the GMT project.
Model-to-model transformations are being standardized by the OMG in the MOF Query, View, Transformation standard. This standard reached the final adopted state and is being finalized. Because the support of modeling standards is an element of the Eclipse Modeling Project charter, the QVT standard is integral part of this project.
ATL (Atlas Transformation Language) is currently a component of the GMT project. ATL is a hybrid language (a mix of declarative and imperative constructions) designed to express model transformations. ATL is described by an abstract syntax (a MOF meta-model), and a textual concrete syntax. A transformation model in ATL is expressed as a set of transformation rules. The recommended style of programming is declarative.
An initial library of ATL transformations is available at: http://www.eclipse.org/gmt/atl/atlTransformations/. Any user is welcome to contribute to this library as open source under the EPL License. The documentation on ATL is available from: http://www.eclipse.org/gmt/atl/doc/. Additional information may also be found at: http://www.sciences.univ-nantes.fr/lina/atl/. ATL is a QVT-like language but is not, in the present state, 100% compatible with the 12 levels of compliance stated in the OMG document. A comparative description of ATL and QVT may be found at: http://www.sciences.univ-nantes.fr/lina/atl/bibliography/SAC06a.
Currently the main ATL mailing list is running under Yahoo groups: http://tech.groups.yahoo.com/group/atl_discussion/. However, as soon as the M2M project is active, this list will migrate to an Eclipse list.
ATL is based on a transformation virtual machine. Its architecture is very modular so that it can evolve by adding new functionalities or building in improved performance. The complete code of the virtual machine is available. The documentation of the control machine (description of bytecodes) will also be made available under the M2M project. Also available is the complete development environment.
It is anticipated that several bridges may be established between ATL and various other transformation languages.
QVT addresses the need for standardizing the way transformations are achieved between models whose languages are defined using MOF. In addition, QVT offers a standard way of querying MOF models, and creating views onto these models. This is similar to the need for XSLT for XML, where an XSLT script defines the mapping between a pair of DTDs and dictates how XMLs (compliant with the DTDs) are transformed.
Queries on MOF models are required both to filter and select elements from a model on an ad-hoc basis, as well as to select elements that are the sources for transformations. This is similar to the need for Xpath within XSLT.
The QVT specification defines three languages, two declarative and one imperative:
- Relations: A user-friendly Relations meta model and language which supports complex object pattern matching and object template creation. Traces between model elements involved in a transformation are created implicitly.
- Core: A Core meta model and language defined using minimal extensions to EMOF and OCL. All trace classes are explicitly defined as MOF models, and trace instance creation and deletion is defined in the same way as the creation and deletion of any other object.
- Operational: an imperative language.
The M2M project will deliver a framework for model-to-model transformation languages. The core part is the transformation inftrastructure. Transformations are executed by transformation engines that are plugged into the infrastructure. There are three transformation engines that are developed in the scope of this project. Each of the three represents a different category, which validates the functionality of the infrastructure from multiple contexts.
The three are:
- Procedural QVT (Operational)
- Declarative QVT (Core and Relational)
An exemplary implementation will be for the QVT Core language, using EMF as implementation of Essential MOF and the OCL implementation from the OCL subproject. The main deliverable for this part of the project will be an execution engine that supports transformations. The engine will execute the Core language in either interpreted or compiled form.
Following Core, the M2M project will provide an implementation of the QVT Relations language, based on the QVT Core execution engine, EMF and OCL. For both languages full language support will be delivered.
Concrete examples will be developed as part of the project. The ATL project already has a published set of example transformations, which will be complemented by a set of QVT transformation definitions.
Follow-on development phases will accommodate community feedback and the knowledge gained during the initial development phase.
We propose that this project be undertaken as part of the Eclipse Modeling Project. It uses EMF and OCL and provides capabilities for Querying, Viewing and Transforming EMF models. The project will initially be comprised of infrastructure, ATL, procedural QVT and declarative QVT components.
The ATL component will migrate to M2M from GMT, where information on ATL can be found as can a list of transformation definitions for common domain models.
Borland's Together Architect modeling product has an implementation of QVT which is being reviewed for contribution. A current dependency on the Kent OCL library will need to be processed for third party inclusion, and will ultimately be replaced by the MDT OCL implementation.
The following companies will contribute committers to get the project started:
INRIA - ATL component
- Frédéric Jouault (proposed project lead)
- Freddy Allilaire
- Radek Dvorak (procedural QVT component lead)
- Aleksandr Igdalov
- Sergey Boyko
- Peter Braker (Infrastructure and declarative QVT component lead)
- Wim Bast
- Ronald Krijgsheld
The following companies/individuals have expressed interest in the project:
- IBM www.ibm.com
- Unisys www.unisys.com
- France Telecom www.francetelecom.com
- Software Engineering, University of Twente, the Netherlands trese.cs.utwente.nl
- Software Composition and Modeling Laboratory, University of Alabama at Birmingham www.cis.uab.edu/softcom
- Giovanni Tosto
Critical to the success of this project is participation of developers in the modeling application development community. We intend to reach out to this community and enlist the support of those interested in making a success of the Model-to-Model Transformation project. We also anticipate that several industry verticals will have an interest in M2M, and will therefore contact these companies and associated standard organizations. Otherwise, we ask interested parties to contact the M2M newsgroup to express interest in contributing to the project.