Welcome to my home page!
EVL+Strace: a Novel Bidirectional Model Transformation Approach
Bidirectional transformation (Bx) is one of the key aspects in the model-driven development area.
EVL+Strace is a bidirectional model-to-model transformation approach that uses the Epsilon Validation Language (EVL) to define inter-model consistency constraints.
To provide a transformation, it is required to check that the source model is consistent with the target model and vice versa.
If an inconsistency is recognized by an EVL constraint, that constraint proposes some possible fixing solutions to restore the consistency.
In order to check inconsistencies between models, it is needed to keep their original information in a third model.
This model is a correspondence model, which is called trace model.
It is clear that a precise strongly typed trace model can provide more flexible ways for checking and fixing violations than a general one.
Therefore, EVL+Strace proposes to use a trace metamodel, which is specific to the domains of source and target metamodel.
The code of EVL+Strace and the specific trace metamodel are generated by the MoDEBiTE tool.
Case Study for TTC2017
Transformation Tool Contest 2017(TTC2017) provides a benchmarx (Families to Persons) case study.
The solution to this case study can be download from here.
The solution is implemented in two cases included automatic and interactive.
The automatic file in the mentioned link is named F2PEVLStrace.evl (in resources/bxFiles).
The interactive file is named BxViaEVLStrace.evl.
The test cases are written for the automatic approach. However, EVL+Strace is usually used in an interactive way.
Please read the readme.txt file for more information.
If you do not want to use test cases and want to run EVL manually. Please, note these files of the mentioned link.
Run the EVL+Strace based on the following task:
- one of the evl files in resources/bxFiles
- the atomacOperations.eol in resources/bxFiles
- the source model in resources/models/source.model
- the trace model in resources/models/trace.model
- the target model in resources/models/target.model
- the config model in resources/models/config.model (if you want to use the automatic EVL)
- four metamodel (.ecore) files in resources/metamodels
In the first run, if the models are empty, nothing will be happend. Now, add some elements in the source or target (or both) models and run again. If the automatic evl file is selected, you can see the results on the model files. However, If the interactive approach file is selected, the Validation view window is appeared. In it, the violated constraints are presented. To fix each violation, you need to right click on the message, and select on of the appeared fixing ways.
- First you need to register the packages in metamodel files. Therefore, right click on each .ecore file (in resources/metamodels), and click Register EPackages.
- After that, open the .evl file, which you want to run it. From the Project Explorer right click on the file and select Run as> Run configurations...
- From the opened Run Configuration window, double click on the EVL validation to create and set the source. (Note the address appeared in Source: field.)
- Select the Models tab.
- Click on the Add button to add the mentioned model files.
- To add the source model, from the select type of model window, select the EMF Model.
- From the Configure EMF Model window, click the Browse Workspace... and find the source.model file, and select it(be sure about the address of the file). Type "Source" for the Name: field.
- Again, click Add button to add another model. Note that, the field Name: for target.model, trace.model, and config.model should be "Target", "Families2Persons", and "Configuration" respectively
- At last, click Apply button, and then Run Button.
Other Case Studies
contact: Leila Samimi ([samimi] AT [eng] DOT [ui] DOT [ac] DOT [ir]) (Please contact with this email if there is any question about the approach.)