Open Source Model Driven Translators Written in Java
|
|
Let's say for a moment that we have to translate this complex domain model into another form, possibly an equivalently complex domain model. What tools then do we have at our disposal? We could imagine using a tool like XSLT or XQuery, but let's say for argument that we don't consider them. The argument is that you need tools that surface the semantic level rather than working only at the syntax level. We are looking for tools that are driven from the meta-level desciption (i.e. Model Driven). What tools are out there are truly designed for this kind of a job? I did a bit of research on this and came out with this list:
- ATL - AThe Atlas Transformation Language (ATL) is a hybrid language (a mix of declarative and imperative constructions) designed to express model transformations within the MDA framework (Model Driven Architecture) recently proposed by the OMG. 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.
- openArchitectureWare - openArchitectureWare (oAW) is a suite of tools and components assisting with model driven software development built upon a modular MDA/MDD generator framework implemented in Java supporting arbitrary import (design) formats, meta models, and output (code) formats. At the core there is a workflow engine allowing the definition of transformation workflows as well as a number of prebuilt workflow components that can be used for reading and instantiating models, checking them for constraint violations, transforming them into other models and then finally, for generating code.
- MOFScript -The MOFScript subproject aims at developing tools and frameworks for supporting model to text transformations. It provides a metamodel-agnostic framework that allows usage of any kind of metamodel and its instances for text generation. Features include the generation of text from MOF-based models, the ability to specify basic control mechanism such as loops and conditional statements, string manipulation, output of expressions referencing model elements and supports traceability between models and generated text.
- UMT-QVT - UMT-QVT is a tool for model transformation and code generation of UML/XMI models. UMT-QVT provides an environment in which new generators can be plugged in. Generators are implemented in either XSLT or Java.
- QiQu - QiQu is an open source framework to support the MDA and MDSD approach. QiQu-Scripts reads XML models (such as XMI), navigate over a model and perform all the transformations you need.
- Kermeta - Kermeta is a new language designed to fill a gap in the meta-languages such as MOF, EMOF or Ecore. These meta-languages focus on structural specifications but have no built-in support for the definition of actions. Kermeta is built as an extension to EMOF and adds execution semantics to it. It can simulate a metamodel, be a model transformation language or a constraint language. Kermeta is fully integrated with Eclipse and includes features such as an interpreter, a debugger, a prototyper, an editor and various import/export transformations.
- Tefkat - Tefkat implements a state-of-the-art declarative model transformation language suitable for Model-Driven Development (MDD) and data transformation. Unlike XSLT, Tefkat has a simple and familiar SQL-like syntax, is specifically designed for writing scalable and re-usable transformation specifications using high-level domain concepts rather than operating directly on XML syntax.
- Mod Trasf - Mod-Transf is a XML and rules based transformation language. Multiple input and output models including JMI, XML and graphs of objects. The XML based rules language features a declarative syntax, inheritance and customizable rules.
- MoTMoT - MoTMoT is a MOdel driven, Template based, MOdel Transformer, capable of generating model transformation code from visual transformation specifications. It is a compiler from visual model transformations to repository manipulation code. The compiler takes models conforming to a UML profile for Story Driven Modeling (SDM) as input and outputs JMI code.
If you think that I've blatantly missed something that should belong in this, then do let me know.

