Skip to content
nmacedo edited this page Oct 31, 2013 · 11 revisions

Overview of Echo's features

Echo is a tool for model repair and transformation in the context of model-driven engineering (MDE). The main focuses of Echo are

  • correctness, in the sense that all constraints of the system are guaranteed to hold for repaired models;
  • least-change, since those repaired models are as close as possible to the original inconsistent ones.

At the core of Echo's repair procedures is the Alloy relational solver, which has support for model checking and model finding.

The constraints supported by Echo are of two kinds:

  • intra-model constraints, defined by the conformity of models to their metamodels (possibly with additional constraints);
  • inter-model constraints, defined by relations between coexisting models, which give rise to bidirectional transformations.

For both kinds of constraints, Echo is able to both check and repair models, in which case model resources are effectively repaired (as opposed to just proposing abstract repair operations). Despite the repairs being always minimal, the user is able to determine how the distance between the models is calculated. Echo provides two different metrics:

  • graph edit distance, which is automatically inferred from the metamodel and is context-oblivious;
  • operation-based distance, that is parametrizable by the user through the definition of the valid update steps as operations.

Furthermore, since there may exist multiple consistent models at a minimal distance, Echo presents all valid solutions to the user, allowing him to choose the best-suited one (as opposed to selecting an arbitrary one).

All efforts have been made to integrate Echo seamlessly in the MDE development process. Thus Echo is deployed as a plugin for the popular Eclipse IDE and over the Eclipse Modeling Framework (EMF). It is metamodel independent, processing any user-defined metamodels and corresponding models, and supports standard MDE file formats, mostly prescribed by OMG.

Supported formats

  • Metamodels are specified in Ecore (a version of MOF, OMG's meta-metamodel), as specified by the EMF.

  • Additional constraints in the metamodel can be defined by embedding OCL (OMG's constraint language) formulas in annotations. This is the same mechanism prescribed by EMF's OCLinEcore.

  • Operations (used for the operation-based distance), are also defined by OCL annotations over the operations' specifications.

  • Inter-model constraints are specified by QVT Relations (QVT-R) transformations, the language prescribed by OMG to specify model transformations. Well-founded recursion is supported and relations may contain arbitrary OCL constraints both in where and when clauses, as well as in the domain patterns.

  • Models are specified as XMI resources, that must conform to an Ecore metamodel.

  • The complete subset of the OCL language supported can be consulted in this paper. It includes the transitive closure operator, recently introduced by the OCL standard.

For a more comprehensive presentation of the supported languages, visit this page.

Functionalities

Model visualization
*Echo* has the ability to represent models as graphs by reusing the Alloy graph visualizer. The same visualizer is also used to present the user the calculated repaired models. For better readability, a theme is automatically inferred from the metamodel, although an user-defined theme can also be provided if desired.
Model generation
Given a metamodel 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 metamodel and the embedded constraints. This is performed in an online setting, in the sense that tests are performed every time the model is modified (or its metamodel, which changes the constraints).
Model repair
Given a model that does not conform to its metamodel, *Echo* can find a minimal repair that produces a consistent model. All valid solutions are presented to the user, which are guaranteed to be correct and minimal.
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 one 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 more information about how these features are implemented please consult the fundaments of Echo or the scientific publications. To start using Echo, please watch this video or follow this tutorial.

Clone this wiki locally