You have your shiny new DSL up and running thanks to the Eclipse Modeling Technologies and you built a powerful tooling with graphical modelers, textual syntaxes or dedicated editors to support it. But how can you see what is going on when a model is executed ? Don't you need to simulate your design in some way ? Wouldn't you want to see your editors being animated directly within your modeling environment based on execution traces or simulator results?
The GEMOC Research Project designed a methodology to bring animation and execution analysis to DSLs. The companion technologies required to put this in action are small dedicated components (all open-source) at a "proof of concept" maturity level extending proven components : Sirius, Eclipse Debug, Xtend making such features within the reach of Eclipse based tooling. The general intent regarding those OSS technologies is to leverage them within different contexts and contribute them to Eclipse once proven strong enough. The method covers a large spectrum of use cases from DSLs with a straightforward execution semantic to a combination of different DSLs with concurrent execution semantic. Any tool provider can leverage both the technologies and the method to provide an executable DSL and animated graphical modelers to its users enabling simulation and debugging at an early phase of the design.
This talk presents the approach, the technologies and demonstrate it through an example: providing Eclipse Debug integration and diagram animation capabilities for Arduino Designer (EPL) : setting breakpoints, stepping forward or backward in the execution, inspecting the variables states... We will walk you through the steps required to develop such features, the choices to make and the trade-offs involved. Expects live demos with simulated blinking leds and a virtual cat robot ! This talks presents also xCapella an industrial use case onwhich the Gemoc methodology was applied.
This talks was presented at SiriusCon 2015 in collaboration with Jérôme Le Noir from Thales.
The Arduino Designer documentation is available on : https://github.com/mbats/arduino/wiki/Documentation
6. Analysis of Behavioral Models
● Early V&V of behavioral properties
● Software engineering, systems engineering, enterprise architecture, scientific
modeling...
19. Model Debugging
● Traversing step forward the states reached by the model through the application
of the interpreter
● Intuitive model comprehension technique
○ No abstraction gap
○ Better turn-arounds
→ Fast convergence towards an acceptable design
20. How To Get Your Own (Domain-Specific)
Debugger ?
21. Gemoc ANR project
“A Language Workbench for concurrent
execution and simulation of
heterogeneous models”
http://gemoc.org/ins
39. Leverage the animation framework
● Encapsulate step over/into/return in transactions
● Bridge the Eclipse Debug APIs and the EMF APIs
40. Leverage the animation framework
● Encapsulate step over/into/return in transactions
● Bridge the Eclipse Debug APIs and the EMF APIs
● Transmit events and requests
41. Leverage the animation framework
● Encapsulate step over/into/return in transactions
● Bridge the Eclipse Debug APIs and the EMF APIs
● Transmit events and requests
● Initialize the tooling extension
42. Leverage the animation framework
● Encapsulate step over/into/return in transactions
● Bridge the Eclipse Debug APIs and the EMF APIs
● Transmit events and requests
● Initialize the tooling extension
● Provide off-the-shelf ecore model for runtime data
47. Leverage the simulation framework
● Use Xtend/Kermeta to define the interpreter
● A generic execution engine
● A generic control panel and timeline
58. Leverage the Model Debugging
● Relies on an execution trace to revert the executed model into a prior state
● Forward/backward navigation into the execution trace
○ No record & replay
○ (similar) Replay
59. Supporting Efficient and Advanced Omniscient Debugging for xDSMLs
(Erwan Bousse, Jonathan Corley, Benoit Combemale, Jeff Gray, Benoit Baudry)
In 8th International Conference on Software Language Engineering (SLE 2015), ACM, 2015.
https://hal.inria.fr/hal-01182517
62. xCapella Data flow
Coordination
Specification
xCapella Mode Automata
Data Flow Animator
(animator.odesign)
Capella Mode
Automata (EMF)
Language
Interface
Capella Data
flow (EMF)
Language
Interface
Mode Automata
AnimatorxCapella
Model Interpreter Model Interpreter
xCapella : An industrial case study
63. Execution engine
Sirius Animator
framework
xCapella Data flow
parameterizes
(Coordination model)
Timeline
B-COoL
Coordination
Specification
parameterizes
MoCCML
xCapella Mode Automata
Melange (K3 AL )
Data Flow Animator
(animator.odesign)
Capella Mode
Automata (EMF)
Execution engine
Sirius Animator
framework
Language
Interface
Capella Data
flow (EMF)
Heterogeneous
Coordination engine
Language
Interface
Timeline
Mode Automata
Animator
parameterizes parameterizes
xCapella
GEL
parameterizes
Model Interpreter Model Interpreter
69. In a nutshell
1. Model debugging
→ Quick results, easy to integrate, execution control, analysis capabilities
70. In a nutshell
1. Model debugging
→ Quick results, easy to integrate, execution control, analysis capabilities
2. Industrial case study : xCapella
○ Define the behavioral semantics of mode automata language
○ Customization of each language graphical notation for animation
○ Integration of the GEMOC execution engine and the Sirius animator framework into the Capella
industrial engineering workbench
○ The experiments result in a prototype (TRL 3) named xCapella, an extension of Capella that
supports the execution and animation of behavioral models.
72. To be continued
● Try executable Arduino Designer v0.1.x
● Read the GEMOC Publications
● Join the GEMOC Initiative
● Get in touch with us to breathe life into your designer