ATL for the Eclipse GMT project
The ATL project aims at providing a set of transformation tools for GMT [GMT]. These include a transformations repository, some sample ATL transformations, an ATL transformation editor plug-in, an ATL transformation engine, etc.
The Atlas Transformation Language (ATL) is being developed by the ATLAS team, INRIA. It is a hybrid language (a mix of declarative and imperative constructions) designed to express model transformations as required by any MDA™ [MDA] approach (see the QVT RFP [QVTRFP]). It is described by an abstract syntax (a MOF meta-model), a textual concrete syntax and an additional graphical notation allowing modelers to represent partial views of transformation models. A transformation model in ATL is expressed as a set of transformation rules. The recommended style of programming is declarative. Transformations from Platform Independent Models (PIMs) to Platform Specific Models (PSMs) can be written in ATL to implement the MDA™ approach as suggested by the OMG.
For the time being, a prototype engine is running with minimal functionalities. It implements ATL v0.1 language (declarative part). The next version (ATL v0.2) of the engine that will be ported to Eclipse will integrate both declarative and imperative styles of transformation.
Eclipse is going to be used as an IDE for ATL, with advanced code edition features (syntax highlighting, auto-completion, etc.). ATL will provide a context in which transformation-based MDA™ tools can be designed and implemented for Eclipse.
The ATL project will progressively provide a complete environment for developing, testing and using model transformation programs through the following items:
- A transformation repository supporting the creation of a library of transformations ranging from simple examples to fully reusable components. A prototype repository (RAS-like [RAS]) already exists that stores transformation components in compressed archives (ZIP files) including a meta-data description in the form of an XML file. Components can be: transformations (written in ATL, written in another language or composite transformations using others), meta-models (a transformation depends on the transformation meta-model, the input and output meta-models) and models (input/output samples).
- A source code editor for transformations adapted from the Eclipse source code editor. Several levels of implementation are possible, from a simple text editor to a full-featured one (including syntax highlighting, auto-completion, etc.). Users will be able to launch transformations from the IDE, which could interpret error messages and use them to point out the problems to the modeler.
- A debugger will also be integrated, in order to complete the Eclipse IDE for ATL.
- And finally a transformation engine (for ATL v0.2) will be released as part of the GMT project.
The objective is to complete these tasks by the end of 2004. A higher level of integration of ATL into Eclipse will be achieved later by adding the possibility to use EMF [EMF] as a meta-meta-model for ATL transformations. Further than the IDE for ATL, this last step is aimed at building a fully integrated MDA™ tool on top of Eclipse. The execution engine would then use the Eclipse EMF repository and thus be able to transform models created within the EMF.Edit framework.
Although the QVT RFP asks for a transformation language for MOF models, we think that making other meta-meta-models usable, provided they are semantically close enough to MOF, would add considerable value to a transformation language. This meta-meta-model
independence would even be very interesting among OMG standards, MOF 2.0 being different from MOF 1.4.
Finally, the ATL framework also integrates the notion of "technological spaces" [Kurtev0001]. Although mainly intended to deal with MDA™ models (based on MOF meta-models and accessible via XMI [wwwXMI] or JMI [JMI10][JMIfaq]), this framework should also handle other kinds of models from different technological spaces (e.g. Java programs, XML documents, DBMS artifacts, etc.). To this end, what we need is a collection of adaptable "injectors" and "extractors" to complement the library of MDA™ transformation components. Models, meta-models, transformations, injectors and extractors are examples of MDA™ components that will be handled as uniformly as possible by the ATL repository.
