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 based on 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 built 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) transformation language.

Over these constraints and models, Echo 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 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.
Model repair
Given a model that does not conform to its meta-model, Echo can find a minimal repair that produces a consistent model.
Inter-model consistency check
Given a QVT-R transformation and two models that are supposed to be consistent via it, Echo can check if such is the case. The checking semantics follows exactly the specified in the QVT standard.
Inter-model consistency repair
QVT-R specifications are interpreted as bidirectional transformations, thus, given inconsistent models, Echo is able to repair either one to recover consistency.
Inter-model generation
Given a QVT-R transformation and an existing model, Echo can generate the minimal model consistent with existing model by the QVT-R 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, accepted for publication at FASE'13. For an overview of Echo's features please watch this video.

(read more)


Echo is deployed over the Eclipse Modeling Tools 4.3 (Kepler). 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.