View on GitHub


Model repair and transformation

Download this project as a .zip file Download this project as a tar.gz file

Echo is a tool for model repair and transformation built over the Alloy model finder, with support for bidirectional model transformations. It is able to both check and recover, through minimal updates, both intra- and inter-model consistency, and is deployed over the Eclipse Modeling Framework (EMF).


Echo is meta-model independent, being able to process any meta-model specified in ECore and its respective instances in XMI. Additional constraints, as well as operations, are specified by embedding OCL in annotations, as prescribed by EMF. Inter-model consistency is specified by the QVT Relations (QVT-R) or ATL transformation languages.

Over these constraints and models, Echo v0.3.1 possesses the following features:

Model visualization
Models are presented using the Alloy visualizer. For better readability, an Alloy theme is automatically inferred from the meta-model, although an user-defined theme can also be provided if desired.
Model generation
Given a meta-model and user-specified size, Echo can generate a new model conformant with the metamodel. Additional OCL constraints can also be specified to generate instances with a parametrized shape.
Consistency check
Given a model, Echo can check if it conforms to the respective meta-model annotated with OCL constraints.
Model repair
Given a model that does not conform to its OCL-annotated meta-model, Echo can find a minimal repair that produces a consistent model.
Inter-model consistency check
Given a QVT-R or ATL transformation and a set of models that are supposed to be consistent via it, Echo can check if such is the case.
Inter-model consistency repair
QVT-R or ATL transformation are interpreted as bidirectional (or multidirectional) transformations, so that given inconsistent models, Echo is able to repair them in order to recover consistency.
Batch transformation
Given a QVT-R or ATL transformation and existing models, Echo can generate the minimal model consistent with the existing models by the specified transformation.

For all generation and repair procedures, Echo presents all valid solutions, allowing the user to select the desired one.

Repair procedures are always minimal, in the sense that the resulting consistent model is as close as possible to the original inconsistent one. The user is able to choose how to measure this distance: either through graph edit distance, a meta-model independent metric that sees models as graphs and counts modifications of edges and nodes, or through an operation-based distance, that counts the number of applications of user-defined operations required to obtain the new model.

For more information about how the tool is implemented please consult the paper Implementing QVT-R Bidirectional Model Transformations Using Alloy. For an overview of Echo's features please watch this video.

(read more)


Echo is deployed over the Eclipse (Kepler) Modeling Tools. The following steps assume a fresh installation of Eclipse.

For Mac OS users, versions of Java earlier than 7up40 have an issue with the bridge between AWT and SWT that does not allow the embedding of the Alloy Visualizer in Eclipse. This is fixed in posterior releases.

(read more)


The best way to get started with Echo is to watch the following video or to follow this tutorial.


Folder examples contains ECore meta-models and QVT-R implementations of some typical bidirectional transformations, as well some example XMI model instances. Alternatively, download this archive containing the same examples.

(read more)


(read more)


The contributors are members of the High-Assurance Software Laboratory (HASLab) at University of Minho, and have developed this work under the FATBIT project, funded by the ERDF through the programme COMPETE and by the Portuguese Government through FCT (Foundation for Science and Technology), project reference FCOMP-01-0124-FEDER-020532.