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.
Echo is deployed over the Eclipse Modeling Tools 4.3 (Kepler). The following steps assume a fresh installation of Eclipse.
- Download Eclipse Modeling Tools 4.3 (Kepler);
- Download and install in Eclipse (through the Help > Install New Software...) menu the following archives in the given order:
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.
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.
- N. Macedo, T. Guimarães and A. Cunha. Model repair and transformation with Echo. To appear in proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering (ASE'13). ACM, 2013.
- N. Macedo and A. Cunha. Implementing QVT-R Bidirectional Model Transformations Using Alloy. In the proceedings of the 16th International Conference on Fundamental Approaches to Software Engineering (FASE'13). LNCS 7793. Springer, 2013.
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.