Yakindu Statechart - Domain specific statecharts

803 views
651 views

Published on

YAKINDU is a modular toolkit for model-based development. The YAKINDU Statechart Tools' (SCT) formalism is similar to state machines as defined by David Harel, but comes
• self-contained with a well defined interface
• with a cycle-based execution semantics

Find our more in this presentation!

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
803
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Yakindu Statechart - Domain specific statecharts

  1. 1. Yakindu SCT Domain-Specific Statecharts Alexander Nyßen, Axel Terfloth itemis AG Donnerstag, 29. März 12
  2. 2. YAKINDU is a modular toolkit for model-based development (of embedded systems) Donnerstag, 29. März 12
  3. 3. language workbenches ➡ Reuse of • modeling language • tools Donnerstag, 29. März 12 CoMo CReMa • open & extendable • composable to (domain-specific) Damos (Blocks) • independent and self-contained • not bound to a specific methodology • usable on their own SCT (Statecharts) YAKINDU Modules Eclipse Platform
  4. 4. YAKINDU Statechart Tools (SCT) Editing Validation Simulation Code Generation Donnerstag, 29. März 12
  5. 5. YAKINDU Statechart • Formalism similar to state machines as defined by David Harel, but: • self-contained • with with a well defined interface a cycle-based execution semantics • • event-driven behavior can be defined on top • Donnerstag, 29. März 12 allows processing concurrent events time control is delegated to the environment
  6. 6. Yakindu SCT - Editing Donnerstag, 29. März 12
  7. 7. Yakindu SCT - Editing Editor SGraph SText Donnerstag, 29. März 12 Integrated Graphical & Textual Modeling
  8. 8. Yakindu SCT - Simulation Donnerstag, 29. März 12
  9. 9. Yakindu SCT - Simulation Editor SGraph SText Donnerstag, 29. März 12 Easy adoptable simulation SExec Simulator
  10. 10. Yakindu SCT - Code Generation • Yakindu • All comprises code generators for Java, C, C++ generators can be „customized“ by a generator model • Custom generators based on Xpand & Xtend2/Java can be easily integrated Donnerstag, 29. März 12
  11. 11. Yakindu SCT - Code Generation • Yakindu • All comprises code generators for Java, C, C++ generators can be „customized“Flexible by a generator model Editor Code Generation SGraph • Custom SExec Simulator SGen CodeGenerators generators based on Xpand & Xtend2/Java can be easily integrated SText Donnerstag, 29. März 12
  12. 12. DEMO Donnerstag, 29. März 12
  13. 13. Yakindu SCT - Extensibility • Recap: different models are used around the Statechart formalism • SGraph (EMF): specification of graphical structures • SText (Xtext): textual specification of declarations & expressions • SExec (EMF): sequentialized statechart execution • SGen (Xtext): code generator parameterization Donnerstag, 29. März 12
  14. 14. Built-In Extensibility • Restriction of structural concepts (SGraph) • Customization of declarations & expressions (SText) • Adoption of the execution semantics (SExec) • Adoption of existing or integration of custom code generators • Integration of custom type system, augmentation by application types • Integration Donnerstag, 29. März 12 of additional validation constraints
  15. 15. The Statechart Application Gap Donnerstag, 29. März 12
  16. 16. The Statechart Application Gap State-based modeling is useful in many domains Donnerstag, 29. März 12
  17. 17. The Statechart Application Gap State-based modeling is useful in many domains Donnerstag, 29. März 12 Typically, statecharts are independent of any domain
  18. 18. The Statechart Application Gap State-based modeling is useful in many domains Typically, statecharts are independent of any domain • How can statecharts be adopted to a specific domain? • How can tools support this adoption? Donnerstag, 29. März 12
  19. 19. Example: Domain Concepts - HMI Donnerstag, 29. März 12
  20. 20. Domain Specific Statecharts • Improving expressiveness and semantic integration by adopting domain concepts: • Refer to domain concepts within declarations (events, variables) and expressions (feature-calls) • Concepts from HMI domain: widget (button, label, etc.), scene, popup, animation, button-click, intro, outro,... Donnerstag, 29. März 12
  21. 21. Integration of HMI Concepts Donnerstag, 29. März 12
  22. 22. DEMO Donnerstag, 29. März 12
  23. 23. Domain-Specific Statechart Approach Donnerstag, 29. März 12
  24. 24. Domain-Specific Statechart Approach Structural Concepts (SGraph) Generic Donnerstag, 29. März 12
  25. 25. Domain-Specific Statechart Approach grammar org.yakindu.sct.model.stext.SText with org.eclipse.xtext.common.Terminals /* ---- root rules ---- Structural Concepts (SGraph) Declarations & Expressions (SText) These root rules are not relevant for the grammar integration into a single grammar. */ extends Root: (roots+=DefRoot)*; DefRoot: StatechartRoot | StateRoot | TransitionRoot; Scope returns sct::Scope: (SimpleScope | StatechartScope); // a SimpleScope is used for states and regions SimpleScope returns sct::Scope: {SimpleScope} (declarations+=Declaration)*; // defines the poosible scopes for statecharts StatechartScope returns sct::Scope: InterfaceScope | InternalScope; InterfaceScope returns sct::Scope: Generic Donnerstag, 29. März 12
  26. 26. Domain-Specific Statechart Approach Domain-Specific HMI Meta Model grammar org.yakindu.sct.model.stext.SText with org.eclipse.xtext.common.Terminals /* ---- root rules ---- Structural Concepts (SGraph) Declarations & Expressions (SText) These root rules are not relevant for the grammar integration into a single grammar. */ extends Root: (roots+=DefRoot)*; DefRoot: StatechartRoot | StateRoot | TransitionRoot; Scope returns sct::Scope: (SimpleScope | StatechartScope); // a SimpleScope is used for states and regions SimpleScope returns sct::Scope: {SimpleScope} (declarations+=Declaration)*; // defines the poosible scopes for statecharts StatechartScope returns sct::Scope: InterfaceScope | InternalScope; InterfaceScope returns sct::Scope: Generic Donnerstag, 29. März 12
  27. 27. Domain-Specific Statechart Approach Domain-Specific specialization HMI Meta Model grammar org.yakindu.sct.model.stext.SText with org.eclipse.xtext.common.Terminals /* ---- root rules ---- Structural Concepts (SGraph) Declarations & Expressions (SText) These root rules are not relevant for the grammar integration into a single grammar. */ extends Root: (roots+=DefRoot)*; DefRoot: StatechartRoot | StateRoot | TransitionRoot; Scope returns sct::Scope: (SimpleScope | StatechartScope); // a SimpleScope is used for states and regions SimpleScope returns sct::Scope: {SimpleScope} (declarations+=Declaration)*; // defines the poosible scopes for statecharts StatechartScope returns sct::Scope: InterfaceScope | InternalScope; InterfaceScope returns sct::Scope: Generic Donnerstag, 29. März 12
  28. 28. Domain-Specific Statechart Approach Domain-Specific grammar com.yakindu.hmi.sctmodel.HMIText with org.yakindu.sct.model.stext.SText /* ---- root rules ---These root rules are not relevant for the into a single grammar. */ Root: HMI Meta Model (roots+=DefRoot)*; HMI Declarations Declaration returns sct::Declaration: EventDefinition | VariableDefinition | Clock | Operation | LocalReaction | Entrypoint | Exitpoint | HMIDeclaration; HMIDeclaration: HmiScene | HmiPopup | HmiAnimation | HmiTransition; HmiScene: 'scene' scene=[contract::Scene|QID]; specialization HmiPopup: 'popup' popup=[contract::Popup|QID]; HmiAnimation: 'animation' animation=[contract::Animation|QID]; grammar org.yakindu.sct.model.stext.SText with org.eclipse.xtext.common.Terminals /* ---- root rules ---- Structural Concepts (SGraph) Declarations & Expressions (SText) These root rules are not relevant for the grammar integration into a single grammar. */ extends Root: (roots+=DefRoot)*; DefRoot: StatechartRoot | StateRoot | TransitionRoot; Scope returns sct::Scope: (SimpleScope | StatechartScope); // a SimpleScope is used for states and regions SimpleScope returns sct::Scope: {SimpleScope} (declarations+=Declaration)*; // defines the poosible scopes for statecharts StatechartScope returns sct::Scope: InterfaceScope | InternalScope; InterfaceScope returns sct::Scope: Generic Donnerstag, 29. März 12
  29. 29. Domain-Specific Statechart Approach Domain-Specific grammar com.yakindu.hmi.sctmodel.HMIText with org.yakindu.sct.model.stext.SText /* ---- root rules ---These root rules are not relevant for the into a single grammar. */ Root: HMI Meta Model (roots+=DefRoot)*; HMI Declarations Declaration returns sct::Declaration: EventDefinition | VariableDefinition | Clock | Operation | LocalReaction | Entrypoint | Exitpoint | HMIDeclaration; references HMIDeclaration: HmiScene | HmiPopup | HmiAnimation | HmiTransition; HmiScene: 'scene' scene=[contract::Scene|QID]; HmiAnimation: 'animation' animation=[contract::Animation|QID]; extends specialization HmiPopup: 'popup' popup=[contract::Popup|QID]; grammar org.yakindu.sct.model.stext.SText with org.eclipse.xtext.common.Terminals /* ---- root rules ---- Structural Concepts (SGraph) Declarations & Expressions (SText) These root rules are not relevant for the grammar integration into a single grammar. */ extends Root: (roots+=DefRoot)*; DefRoot: StatechartRoot | StateRoot | TransitionRoot; Scope returns sct::Scope: (SimpleScope | StatechartScope); // a SimpleScope is used for states and regions SimpleScope returns sct::Scope: {SimpleScope} (declarations+=Declaration)*; // defines the poosible scopes for statecharts StatechartScope returns sct::Scope: InterfaceScope | InternalScope; InterfaceScope returns sct::Scope: Generic Donnerstag, 29. März 12
  30. 30. Domain-Specific Statechart Approach Domain-Specific grammar com.yakindu.hmi.sctmodel.HMIText with org.yakindu.sct.model.stext.SText /* ---- root rules ---These root rules are not relevant for the into a single grammar. */ Root: HMI Meta Model (roots+=DefRoot)*; HMI Declarations Declaration returns sct::Declaration: EventDefinition | VariableDefinition | Clock | Operation | LocalReaction | Entrypoint | Exitpoint | HMIDeclaration; references HMIDeclaration: HmiScene | HmiPopup | HmiAnimation | HmiTransition; HmiScene: 'scene' scene=[contract::Scene|QID]; HmiAnimation: 'animation' animation=[contract::Animation|QID]; Domain Specific Statechart extends specialization HmiPopup: 'popup' popup=[contract::Popup|QID]; grammar org.yakindu.sct.model.stext.SText with org.eclipse.xtext.common.Terminals /* ---- root rules ---- Structural Concepts (SGraph) Declarations & Expressions (SText) These root rules are not relevant for the grammar integration into a single grammar. */ extends Root: (roots+=DefRoot)*; DefRoot: StatechartRoot | StateRoot | TransitionRoot; Scope returns sct::Scope: (SimpleScope | StatechartScope); // a SimpleScope is used for states and regions SimpleScope returns sct::Scope: {SimpleScope} (declarations+=Declaration)*; // defines the poosible scopes for statecharts StatechartScope returns sct::Scope: InterfaceScope | InternalScope; InterfaceScope returns sct::Scope: Generic Donnerstag, 29. März 12
  31. 31. Yakindu SCT • Open Source / EPL • Hosted at EclipseLabs • Eclipse-Proposal • Interested • Important planned for 2012 parties welcome! Links: • Project Site: http://yakindu.org • Eclipse Labs Site: http://code.google.com/a/eclipselabs.org/p/yakindu/ • Update Donnerstag, 29. März 12 Site: http://updates.yakindu.com/indigo/milestones/
  32. 32. Thank You! Questions? Donnerstag, 29. März 12

×