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.
Echo is deployed over the Eclipse (Kepler) Modeling Tools. The following steps assume a fresh installation of Eclipse.
- Download Eclipse Modeling Tools (Kepler Service Release 2);
- 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 and A. Cunha. Least-change bidirectional model transformation with QVT-R and ATL. Software and Systems Modeling. Springer, 2016
- N. Macedo, A. Cunha and H. Pacheco. Towards a framework for multi-directional model transformations. In the proceedings of the 3rd International Workshop on Bidirectional Transformations (BX'14). CEUR-WS, 2016.
- N. Macedo, T. Guimarães and A. Cunha. Model repair and transformation with Echo. In the proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering (ASE'13). IEEE, 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.