Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » Larger Epsilon examples
Larger Epsilon examples [message #1234989] Thu, 23 January 2014 09:42 Go to next message
Filip Krikava is currently offline Filip KrikavaFriend
Messages: 43
Registered: January 2012
Member
Hi,

I was wondering if there are any larger (100-1000 SLOC) examples of Epsilon used for model consistency checking (EVL) and model-to-model (ETL) / model-to-text transformations (EGL). The examples I found on both the website and in the referenced papers are rather small. I'd like to see the use of Epsilon in larger modelling projects in order to evaluate it better.

Thanks a lot for help!
Filip
Re: Larger Epsilon examples [message #1235103 is a reply to message #1234989] Thu, 23 January 2014 15:29 Go to previous messageGo to next message
Dimitris Kolovos is currently offline Dimitris KolovosFriend
Messages: 918
Registered: July 2009
Senior Member
Hi Filip,

Pongo [1] is an example of a non-trivial M2T transformation implemented with EGL. For EVL, I'd suggest having a look at Eugenia's constraints [2] and at some constraints from the CertWare project [6, 7]. Non-trivial publicly available ETL transformations would include [3-5].

Cheers,
Dimitris

[1] https://code.google.com/p/pongo/
[2] http://dev.eclipse.org/svnroot/modeling/org.eclipse.epsilon/trunk/plugins/org.eclipse.epsilon.eugenia/transformations/ECore2GMF.evl
[3] https://trac.ce.utwente.nl/TERRA/browser/nl.utwente.ce.terra.xxsim.transform.xml.to.cspm/epsilon/XXSim4122ToCSPM.etl?rev=1108%3A73286fb31db9
[4] https://code.google.com/p/unicaneer2sql/source/browse/trunk/Software/es.unican.moses.transformations.db.eer2relational/Transformations/eer2relational.etl
[5] http://dev.eclipse.org/svnroot/modeling/org.eclipse.epsilon/trunk/performance/TransformLargeSourceModel/Java2StateMachine-SeparateRules.etl
[6] https://github.com/nasa/CertWare/blob/master/net.certware.argument.gsz.validator/validation/gsz.evl
[7] https://github.com/nasa/CertWare/blob/master/net.certware.argument.caz.validator/validation/caz.evl
Re: Larger Epsilon examples [message #1236589 is a reply to message #1235103] Mon, 27 January 2014 16:01 Go to previous messageGo to next message
Filip Krikava is currently offline Filip KrikavaFriend
Messages: 43
Registered: January 2012
Member
Hi Dimitris,

Thanks a lot for the links. I guess there is not a singe project using all of EVL, EGL, ETL right?
Concerning M2M transformation, besides eer2relational.etl, the other two include only one rule thus not really exploiting the capabilities of ETL.

A little question:
while looking into the ECore2GMF.evl I saw also ECore2GMF.eol [1]. This looks like a ECore to GMF M2M transformation. Why is it in EOL and not in ETL

Thanks a lot,
Filip

[1] http://dev.eclipse.org/svnroot/modeling/org.eclipse.epsilon/trunk/plugins/org.eclipse.epsilon.eugenia/transformations/ECore2GMF.eol

[Updated on: Mon, 27 January 2014 16:02]

Report message to a moderator

Re: Larger Epsilon examples [message #1236620 is a reply to message #1236589] Mon, 27 January 2014 17:31 Go to previous messageGo to next message
Dimitris Kolovos is currently offline Dimitris KolovosFriend
Messages: 918
Registered: July 2009
Senior Member
Hi Filip,

You're welcome. [1] is another example of a non-trivial ETL transformation (I'll try to dig out a few more when I get a chance). Regarding ECore2GMF.eol, it could have probably been written in ETL but in all honesty I started with EOL and then was too lazy to rewrite it in ETL.

Cheers,
Dimitris

[1] http://dev.eclipse.org/svnroot/modeling/org.eclipse.epsilon/trunk/plugins/org.eclipse.epsilon.eugenia/transformations/Ecore2GenModel.etl
Re: Larger Epsilon examples [message #1237293 is a reply to message #1236620] Wed, 29 January 2014 10:14 Go to previous messageGo to next message
Maarten Bezemer is currently offline Maarten BezemerFriend
Messages: 117
Registered: February 2012
Senior Member
<warning: shameless self-advertisement>

In our (Robotics and Mechatronics chair of the University of Twente) modeling tool, called TERRA [1], we have used

  • EGL for code generation to C++ and machine-readable CSP
  • ETL to convert (intermediate) models to our own (TERRA) models
  • EGL to transform models from one type to another (should be converted to ETL as well, I know...)
  • EVL for model validation
  • plain EOL for providing operations (as a sort template providing shared code/support of the things described above)

All these Epsilon related code is called directly from the code (similar to the Java/standalone examples) and not from the Eclipse editor.

Although the project consists of lots of plugins, so the Epsilon related stuff is (mostly) in its own plugins/projects, the project also contains lots of other things (clutter with respect to your question I suppose), so I do not know whether it is useful for you.

</warning: shameless self-advertisement>

[1]: https://trac.ce.utwente.nl/TERRA
Re: Larger Epsilon examples [message #1237414 is a reply to message #1237293] Wed, 29 January 2014 17:04 Go to previous messageGo to next message
Filip Krikava is currently offline Filip KrikavaFriend
Messages: 43
Registered: January 2012
Member
Thanks Maarten,

This kind of advertisement is exactly what I was looking for Smile

I just got the sources and looking at the project. I have not studied your ETL transformation very carefully, but they all contain only one rule.

Do you have some existing models (ideally of different sizes) that I could test the model transformations / consistency checking with? Something that I could simply test for example directly through Epsilon UI.
We have been working on alternative approach to model manipulation and now we would like to make some end-to-end comparison with state-of-the-art approaches like Epsilon. The TERRA project seems to be very good candidate for a comparison with Epsilon. However, it is a big project so being able to quickly play only with the Epsilon stuff would help a lot.

Thanks a lot
Filip
Re: Larger Epsilon examples [message #1237484 is a reply to message #1237414] Wed, 29 January 2014 20:54 Go to previous messageGo to next message
Maarten Bezemer is currently offline Maarten BezemerFriend
Messages: 117
Registered: February 2012
Senior Member
Filip Krikava wrote on Wed, 29 January 2014 18:04

I just got the sources and looking at the project. I have not studied your ETL transformation very carefully, but they all contain only one rule.


True, the single rule basically contains plain EOL (EGL?) to convert the source model into the target model.
I do not have the details, as I did not made the transformations, but I thought that

  • XXSim transformation to CSPm does not match one-to-one, so the EOL was required to convert one element into a bunch.
  • SCXML transformation to CSPm does match, but the student who wrote the transformation did either not understand the rules or did not have enough time before his graduation (or both)

I was planning to take a look at the ETL in the project until my commit permissions were solved. But that jsut happened, so I first have other priorities to implement.
But maybe I still have some time to take a look at them.

Quote:

Do you have some existing models (ideally of different sizes) that I could test the model transformations / consistency checking with? Something that I could simply test for example directly through Epsilon UI.

It is easy to obtain SCXML models: you can just draw some state charts using scxmlgui.
XXSim models are a bit more difficult as you need the (commercial) tool 20-sim to convert the 20-sim models into intermediate models which are used by our transformation.

The model validation rules (written in EVL) can be applied on CPS models, which you can draw using TERRA itself. WHen you have a CSP model open in an editor it is automatically checked using live validation. To manually check them, using batch validation, you can Click "Diagram -> Validate" or press F5.

Quote:

We have been working on alternative approach to model manipulation and now we would like to make some end-to-end comparison with state-of-the-art approaches like Epsilon. The TERRA project seems to be very good candidate for a comparison with Epsilon. However, it is a big project so being able to quickly play only with the Epsilon stuff would help a lot.


If you just want to test TERRA you can install it in Eclipse (without the need to download the sources, compile them ,etc.), just follow the installation instructions on out website [1].
This version is quite old(er), compared to the source code, as we are in the middle on the transition to use some other techniques, but for testing purposes it does not really matter, I suppose.

But, as you already found out: Our ETL implementation is not as it is supposed to be (using rules to transform on model type into another). So I you want to compare ETL against you own method, TERRA is not the best candidate until its ETL implementation is sanitized.


[1]: http://www.ce.utwente.nl/ECSSoftware/terra.php
Re: Larger Epsilon examples [message #1287485 is a reply to message #1235103] Mon, 07 April 2014 21:06 Go to previous message
Helge Mising name is currently offline Helge Mising nameFriend
Messages: 17
Registered: October 2010
Junior Member
Hi,

I am currently experimenting, stumbled across this thread, and tried to run the "Java2StateMachine" example, which you linked under [5] (http://dev.eclipse.org/svnroot/modeling/org.eclipse.epsilon/trunk/performance/TransformLargeSourceModel/Java2StateMachine-SeparateRules.etl)

I have checked out the "TransformLargeSourceModel" project. When I run the ANT script, the transformation is not executed completely. It is aborted with the error message:

BUILD FAILED
.../TransformLargeSourceModel/run.xml:19: The following error occurred while executing this line:
.../TransformLargeSourceModel/run.xml:21: Internal error: java.lang.ClassCastException: The value of type 'class org.emftext.language.java.classifiers.impl.ClassImpl' must be of type 'org.eclipse.emf.ecore.impl.EClassImpl@2285b380 [name: Classifier] [instanceClassName: null] [abstract: true, interface: false]'
...


I am now wondering where I should search for the error. Is there perhaps an error in the committed transformation? Or could you please point me to what I am doing wrong when running the test?


Best,
Helge
Previous Topic:Create connection between two classes
Next Topic:Handling Epsilon keywords as metamodel element names
Goto Forum:
  


Current Time: Fri Dec 19 11:57:24 GMT 2014

Powered by FUDForum. Page generated in 0.02314 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software