SiriusCon 2015 - Breathe Life into Your Designer!

727 vues

Publié le

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

Publié dans : Logiciels
  • Soyez le premier à commenter

SiriusCon 2015 - Breathe Life into Your Designer!

  1. 1. With Sirius & GEMOC Mélanie Bats @melaniebats OBEO Jérôme Le Noir THALES Breathe Life Into Your Designer!
  2. 2. (Domain specific) Models Capella https://www.eclipse.org/sirius/gallery.html
  3. 3. Structural models
  4. 4. Behavioral models Business Processes, Orchestrations, Functional chains, Activities, Protocols, Scenarios...
  5. 5. Step 12Step 1 Model execution Execution
  6. 6. Analysis of Behavioral Models ● Early V&V of behavioral properties ● Software engineering, systems engineering, enterprise architecture, scientific modeling...
  7. 7. Model Debugging
  8. 8. Model Debugging
  9. 9. Model Debugging
  10. 10. Model Debugging
  11. 11. Model Debugging
  12. 12. Model Debugging
  13. 13. Model Debugging
  14. 14. Model Debugging
  15. 15. Model Debugging
  16. 16. Model Debugging
  17. 17. Model Debugging
  18. 18. Model Debugging
  19. 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. 20. How To Get Your Own (Domain-Specific) Debugger ?
  21. 21. Gemoc ANR project “A Language Workbench for concurrent execution and simulation of heterogeneous models” http://gemoc.org/ins
  22. 22. Gemoc Initiative http://gemoc.org
  23. 23. Animating Arduino Designer
  24. 24. A simple Eclipse based tooling
  25. 25. Arduino DSL
  26. 26. Demo
  27. 27. Your own debugger recipe 1. Define the interpreter 2. Define the animator
  28. 28. 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 Framework specific to Arduino Designer existing Eclipse components
  29. 29. Arduino simulator 2 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 ------------------------------------------------------------
  30. 30. Interpreter
  31. 31. Debug Controller
  32. 32. Animator simulator.odesign
  33. 33. Animator simulator.odesign customizing arduino.odesign
  34. 34. Animator ● Contributing actions
  35. 35. Animator ● Contributing actions ● Adapting style
  36. 36. That’s all folks!
  37. 37. Leverage the animation framework
  38. 38. Leverage the animation framework ● Encapsulate step over/into/return in transactions
  39. 39. Leverage the animation framework ● Encapsulate step over/into/return in transactions ● Bridge the Eclipse Debug APIs and the EMF APIs
  40. 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. 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. 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
  43. 43. Ecore model for runtime data
  44. 44. Launch configurations
  45. 45. Leverage the simulation framework
  46. 46. Leverage the simulation framework ● Use Xtend/Kermeta to define the interpreter
  47. 47. Leverage the simulation framework ● Use Xtend/Kermeta to define the interpreter ● A generic execution engine ● A generic control panel and timeline
  48. 48. Aspects
  49. 49. 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 Framework specific to Arduino Designer existing Eclipse components
  50. 50. 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 Framework specific to Arduino Designer existing Eclipse components
  51. 51. 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 Framework specific to Arduino Designer existing Eclipse components
  52. 52. Arduino simulator based on simulation framework 2 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 ------------------------------------------------------------
  53. 53. Demo
  54. 54. Leverage the Model Debugging
  55. 55. 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 Framework specific to Arduino Designer existing Eclipse components
  56. 56. 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 manager Timeline Stack frame configuration Variables configuration
  57. 57. Traces
  58. 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. 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
  60. 60. Capella
  61. 61. How to coordinate heterogeneous models ?
  62. 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. 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
  64. 64. Debugger Trace manager Timeline parameterizes MoCCML xCapella Mode Automata Model interpreter Mapping MoCC Execution Data & Functions Mode Automata Animator (animator. odesign) Graphical Model Editor (Mode Automata. odesign) Abstract Syntax (ModeAutomata.ecore) Melange (K3 AL) Sirius Animator framework Execution engine GEL
  65. 65. Execution function Execution datum Execution Function & datum
  66. 66. Mapping & MoCC
  67. 67. Animator
  68. 68. xCapella Mode Automata Demonstration
  69. 69. In a nutshell 1. Model debugging → Quick results, easy to integrate, execution control, analysis capabilities
  70. 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.
  71. 71. Introducing Sirius Lab http://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
  72. 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
  73. 73. Thanks! Questions? Mélanie Bats @melaniebats Obeo Jérôme Le Noir THALES Get the slides : http://fr.slideshare.net/melbats/siriuscon-2015-breathe-life-into-your-designer

×