With Sirius & GEMOC
Mélanie Bats @melaniebatsObeo
Benoit Combemale@bcombemale
INRIA and Univ. Rennes 1
Breathe Life Into Your Designer!
(Domain specific) Models
Capella
https://www.eclipse.org/sirius/gallery.html
Structural models
Behavioral models
Business Processes, Orchestrations, Functional chains, Activities, Protocols, Scenarios...
Step 12Step 1
Model execution
Execution
Analysis of Behavioral Models● Early V&V of behavioral properties
● Software engineering, systems engineering, enterprise architecture, scientific
modeling...
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
Model Debugging
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
How To Get Your Own (Domain-Specific) Debugger ?
Gemoc ANR project
“A Language Workbench for concurrent
execution and simulation of
heterogeneous models”
http://gemoc.org/ins
Animating Arduino Designer
A simple Eclipse based tooling
Arduino DSL
Demo
Demo
… with no cat
Your own debugger recipe
1. Define the interpreter
2. Define the animator
Arduino simulator2 new plugins:
● fr.obeo.dsl.arduino.simulator
● fr.obeo.dsl.arduino.simulator.design
Executable DSL
Interpreter
Model Animator (simulator.odesign)
Model Editor (arduino.odesign)
Eclipse Debug
Control panel
Domain Model (EMF)
Breakpoints
Animator
parameterizes
Debugger
Stack frame configuration
Variables configuration
Stack frame
Variables
controls
provided by the GEMOC Frameworkspecific to Arduino Designerexisting Eclipse components
Arduino simulator2 new plugins:
● fr.obeo.dsl.arduino.simulator
● fr.obeo.dsl.arduino.simulator.design
------------------------------------------------------------
Language files blank comment code
------------------------------------------------------------
Java 14 229 318 1185
XML 5 0 0 329
Maven 2 12 18 54
------------------------------------------------------------
SUM: 21 241 336 1568
------------------------------------------------------------
Interpreter
Interpreter
Interpreter
Interpreter
Debug Controller
Debug Controller
Debug Controller
Debug Controller
Our debugger
Our debugger
Our debugger
Our debugger
Our debugger
Current instruction
Current instruction
Current instruction
Update variables
Animator
simulator.odesign
Animator
simulator.odesign
customizing
arduino.odesign
Animator● Contributing actions
Animator● Contributing actions
● Adapting style
That’s all folks!
Leverage the animation framework
Leverage the animation framework● Encapsulate step over/into/return in transactions
Leverage the animation framework● Encapsulate step over/into/return in transactions
● Bridge the Eclipse Debug APIs and the EMF APIs
Leverage the animation framework● Encapsulate step over/into/return in transactions
● Bridge the Eclipse Debug APIs and the EMF APIs
● Transmit events and requests
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
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
Ecore model for runtime data
Ecore model for runtime data
Ecore model for runtime data
Ecore model for runtime data
Ecore model for runtime data
Ecore model for runtime data
Ecore model for runtime data
Launch configurations
Leverage the simulation framework
Leverage the simulation framework● Use Xtend/Kermeta to define the interpreter
Leverage the simulation framework● Use Xtend/Kermeta to define the interpreter
● A generic execution engine
● A generic control panel and timeline
Aspects
Aspects
Aspects
@Step
Executable DSL
Interpreter
Model Animator (simulator.odesign)
Model Editor (arduino.odesign)
Eclipse Debug
Control panel
Domain Model (EMF)
Breakpoints
Animator
parameterizes
Debugger
Stack frame configuration
Variables configuration
Stack frame
Variables
controls
provided by the GEMOC Frameworkspecific to Arduino Designerexisting Eclipse components
Executable DSL
Execution engine
Model Animator (simulator.odesign)
Model Editor (arduino.odesign)
Eclipse Debug
Control panel
Domain Model (EMF)
Breakpoints
Animator
parameterizes
Debugger
Stack frame
Variables
controls
Model Interpreter(K3)
Xtend
parameterizes
Stack frame configuration
Variables configuration
provided by the GEMOC Frameworkspecific to Arduino Designerexisting Eclipse components
Executable DSL
Execution engine
Model Animator (simulator.odesign)
Model Editor (arduino.odesign)
Eclipse Debug
Control panel
Domain Model (EMF)
Breakpoints
Animator
parameterizes
Debugger
Stack frame
Variables
controls
Model Interpreter(K3)
Xtend
parameterizes
Timeline
Stack frame configuration
Variables configuration
provided by the GEMOC Frameworkspecific to Arduino Designerexisting Eclipse components
Arduino simulator based on simulation framework2 new plugins:
● org.gemoc.arduino.operationalsemantics
● fr.obeo.dsl.arduino.simulator.design
------------------------------------------------------------
Language files blank comment code
------------------------------------------------------------
Xtend 2 35 1 413
Java 3 34 4 178
XML 2 0 0 329
------------------------------------------------------------
SUM: 7 69 5 920
------------------------------------------------------------
Demo
… still with no cat
Leverage the Model Debugging
Executable DSL
Execution engine
Model Animator (simulator.odesign)
Model Editor (arduino.odesign)
Eclipse Debug
Control panel
Domain Model (EMF)
Breakpoints
Animator
parameterizes
Debugger
Stack frame
Variables
controls
Model Interpreter(K3)
Xtend
parameterizes
Timeline
Stack frame configuration
Variables configuration
provided by the GEMOC Frameworkspecific to Arduino Designerexisting Eclipse components
Executable DSL
Execution engine
Model Animator (simulator.odesign)
Model Editor (arduino.odesign)
Eclipse Debug
Control panel
Domain Model (EMF)
Breakpoints
Animator
parameterizes
Debugger
Stack frame
Variables
controls
Model Interpreter(K3)
Xtend
parameterizes
Trace managerTimeline
Stack frame configuration
Variables configuration
Traces
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
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
In a nutshell1. Leverage Animation Framework (POJO simulator)
○ Code the interpreter
○ Code the execution engine
→ Quick results, easy to integrate, minimum execution control
In a nutshell1. Leverage Animation Framework (POJO simulator)
○ Code the interpreter
○ Code the execution engine
→ Quick results, easy to integrate, minimum execution control
2. Leverage Simulation Framework (Advanced simulator)
○ Code the interpreter
○ Use the generic execution engine
→ More analysis capabilities and rich execution control (timeline...)
In a nutshell1. Leverage Animation Framework (POJO simulator)
○ Code the interpreter
○ Code the execution engine
→ Quick results, easy to integrate, minimum execution control
2. Leverage Simulation Framework (Advanced simulator)
○ Code the interpreter
○ Use the generic execution engine
→ More analysis capabilities and rich execution control (timeline...)
3. Leverage Model Debugging
○ Use the trace manager
→ Advanced trace management facilities
Introducing Sirius Labhttp://www.eclipse.org/sirius/lab.html
Generic technologies (EPL) which have proven
helpful and are looking for an interest to bring it at
full maturity level.
https://github.com/SiriusLab
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
http://www.siriuscon.org/
Thanks! Questions?
Mélanie Bats @melaniebatsObeo
Benoit Combemale@bcombemale
INRIA and Univ. Rennes 1
Get the slides :
http://fr.slideshare.net/melbats/eclipsecon-eu-2015-breathe-life-into-your-designer