SlideShare a Scribd company logo
1 of 32
Download to read offline
Yakindu SCT

Domain-Specific Statecharts
Alexander Nyßen, Axel Terfloth
itemis AG

Donnerstag, 29. März 12
YAKINDU
is a modular toolkit
for model-based development
(of embedded systems)

Donnerstag, 29. März 12
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
YAKINDU Statechart Tools (SCT)
Editing

Validation

Simulation

Code Generation

Donnerstag, 29. März 12
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
Yakindu SCT - Editing

Donnerstag, 29. März 12
Yakindu SCT - Editing
Editor

SGraph
SText

Donnerstag, 29. März 12

Integrated
Graphical & Textual
Modeling
Yakindu SCT - Simulation

Donnerstag, 29. März 12
Yakindu SCT - Simulation
Editor

SGraph
SText

Donnerstag, 29. März 12

Easy adoptable
simulation

SExec

Simulator
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
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
DEMO

Donnerstag, 29. März 12
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
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
The Statechart Application Gap

Donnerstag, 29. März 12
The Statechart Application Gap
State-based modeling
is useful
in many domains

Donnerstag, 29. März 12
The Statechart Application Gap
State-based modeling
is useful
in many domains

Donnerstag, 29. März 12

Typically, statecharts
are independent
of any domain
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
Example: Domain Concepts - HMI

Donnerstag, 29. März 12
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
Integration of HMI Concepts

Donnerstag, 29. März 12
DEMO

Donnerstag, 29. März 12
Domain-Specific Statechart Approach

Donnerstag, 29. März 12
Domain-Specific Statechart Approach

Structural Concepts
(SGraph)
Generic
Donnerstag, 29. März 12
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
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
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
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
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
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
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/
Thank You! Questions?

Donnerstag, 29. März 12

More Related Content

Similar to Yakindu Statechart - Domain specific statecharts

Database & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdf
Database & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdfDatabase & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdf
Database & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdf
InSync2011
 
Automated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environmentsAutomated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environments
Pablo Gómez Abajo
 
advancedzplmacroprogramming_081820.pptx
advancedzplmacroprogramming_081820.pptxadvancedzplmacroprogramming_081820.pptx
advancedzplmacroprogramming_081820.pptx
ssuser6a1dbf
 

Similar to Yakindu Statechart - Domain specific statecharts (20)

MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
 
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
 
VEDAViz for ETSAP partners
VEDAViz for ETSAP partnersVEDAViz for ETSAP partners
VEDAViz for ETSAP partners
 
VLSI
VLSIVLSI
VLSI
 
2014 IEEE JAVA DATA MINING PROJECT Xs path navigation on xml schemas made easy
2014 IEEE JAVA DATA MINING PROJECT Xs path navigation on xml schemas made easy2014 IEEE JAVA DATA MINING PROJECT Xs path navigation on xml schemas made easy
2014 IEEE JAVA DATA MINING PROJECT Xs path navigation on xml schemas made easy
 
IEEE 2014 JAVA DATA MINING PROJECTS Xs path navigation on xml schemas made easy
IEEE 2014 JAVA DATA MINING PROJECTS Xs path navigation on xml schemas made easyIEEE 2014 JAVA DATA MINING PROJECTS Xs path navigation on xml schemas made easy
IEEE 2014 JAVA DATA MINING PROJECTS Xs path navigation on xml schemas made easy
 
Summarizing Software API Usage Examples Using Clustering Techniques
Summarizing Software API Usage Examples Using Clustering TechniquesSummarizing Software API Usage Examples Using Clustering Techniques
Summarizing Software API Usage Examples Using Clustering Techniques
 
VLSI
VLSIVLSI
VLSI
 
HSA-4123, HSA Memory Model, by Ben Gaster
HSA-4123, HSA Memory Model, by Ben GasterHSA-4123, HSA Memory Model, by Ben Gaster
HSA-4123, HSA Memory Model, by Ben Gaster
 
Rock Overview
Rock OverviewRock Overview
Rock Overview
 
Database & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdf
Database & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdfDatabase & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdf
Database & Technology 1 _ Tom Kyte _ Efficient PL SQL - Why and How to Use.pdf
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-op
 
Automated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environmentsAutomated engineering of domain-specific metamorphic testing environments
Automated engineering of domain-specific metamorphic testing environments
 
Oo Design And Patterns
Oo Design And PatternsOo Design And Patterns
Oo Design And Patterns
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
01 oracle architecture
01 oracle architecture01 oracle architecture
01 oracle architecture
 
SYNTHESIS OPTIMIZATION FOR FINITE STATE MACHINE DESIGN IN FPGAS
SYNTHESIS OPTIMIZATION FOR FINITE STATE MACHINE DESIGN IN FPGASSYNTHESIS OPTIMIZATION FOR FINITE STATE MACHINE DESIGN IN FPGAS
SYNTHESIS OPTIMIZATION FOR FINITE STATE MACHINE DESIGN IN FPGAS
 
Data processing platforms with SMACK: Spark and Mesos internals
Data processing platforms with SMACK:  Spark and Mesos internalsData processing platforms with SMACK:  Spark and Mesos internals
Data processing platforms with SMACK: Spark and Mesos internals
 
Generic Synchronization Policies in C++
Generic Synchronization Policies in C++Generic Synchronization Policies in C++
Generic Synchronization Policies in C++
 
advancedzplmacroprogramming_081820.pptx
advancedzplmacroprogramming_081820.pptxadvancedzplmacroprogramming_081820.pptx
advancedzplmacroprogramming_081820.pptx
 

More from itemis AG

More from itemis AG (15)

YAKINDU Statechart Tools Training (look-inside)
YAKINDU Statechart Tools Training (look-inside)YAKINDU Statechart Tools Training (look-inside)
YAKINDU Statechart Tools Training (look-inside)
 
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbHMigration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
Migration einer Oracle Forms Anwendung - Rhenus Freight Network GmbH
 
Zukunftsfähige Softwarearchitekturen
Zukunftsfähige SoftwarearchitekturenZukunftsfähige Softwarearchitekturen
Zukunftsfähige Softwarearchitekturen
 
Modernisierung von Altanwendungen
Modernisierung von AltanwendungenModernisierung von Altanwendungen
Modernisierung von Altanwendungen
 
YAKINDU Traceability
YAKINDU TraceabilityYAKINDU Traceability
YAKINDU Traceability
 
GEF Past, present, future
GEF Past, present, futureGEF Past, present, future
GEF Past, present, future
 
Model-based Automotive Software Development
Model-based Automotive Software DevelopmentModel-based Automotive Software Development
Model-based Automotive Software Development
 
Personas als Methode des Usability Engineerings
Personas als Methode des Usability EngineeringsPersonas als Methode des Usability Engineerings
Personas als Methode des Usability Engineerings
 
Entwicklung in Spielen als Innovationstreiber für Usability
Entwicklung in Spielen als Innovationstreiber für UsabilityEntwicklung in Spielen als Innovationstreiber für Usability
Entwicklung in Spielen als Innovationstreiber für Usability
 
Gemeinsam kreativ für bessere Software - Vortragsreihe Dortmund
Gemeinsam kreativ für bessere Software - Vortragsreihe DortmundGemeinsam kreativ für bessere Software - Vortragsreihe Dortmund
Gemeinsam kreativ für bessere Software - Vortragsreihe Dortmund
 
Von der Nutzungsanforderung zur formalen Softwarespezifikation
Von der Nutzungsanforderung zur formalen SoftwarespezifikationVon der Nutzungsanforderung zur formalen Softwarespezifikation
Von der Nutzungsanforderung zur formalen Softwarespezifikation
 
Usability und agile Softwareentwicklung
Usability und agile SoftwareentwicklungUsability und agile Softwareentwicklung
Usability und agile Softwareentwicklung
 
Scrum Portfolio itemis
Scrum Portfolio itemisScrum Portfolio itemis
Scrum Portfolio itemis
 
Warum macht Usability Engineering Sinn? Was kann ich tun?
Warum macht Usability Engineering Sinn? Was kann ich tun?Warum macht Usability Engineering Sinn? Was kann ich tun?
Warum macht Usability Engineering Sinn? Was kann ich tun?
 
itemis Unternehmenspräsentation
itemis Unternehmenspräsentationitemis Unternehmenspräsentation
itemis Unternehmenspräsentation
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

Yakindu Statechart - Domain specific statecharts

  • 1. Yakindu SCT Domain-Specific Statecharts Alexander Nyßen, Axel Terfloth itemis AG Donnerstag, 29. März 12
  • 2. YAKINDU is a modular toolkit for model-based development (of embedded systems) Donnerstag, 29. März 12
  • 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. YAKINDU Statechart Tools (SCT) Editing Validation Simulation Code Generation Donnerstag, 29. März 12
  • 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. Yakindu SCT - Editing Donnerstag, 29. März 12
  • 7. Yakindu SCT - Editing Editor SGraph SText Donnerstag, 29. März 12 Integrated Graphical & Textual Modeling
  • 8. Yakindu SCT - Simulation Donnerstag, 29. März 12
  • 9. Yakindu SCT - Simulation Editor SGraph SText Donnerstag, 29. März 12 Easy adoptable simulation SExec Simulator
  • 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. 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
  • 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. 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. The Statechart Application Gap Donnerstag, 29. März 12
  • 16. The Statechart Application Gap State-based modeling is useful in many domains Donnerstag, 29. März 12
  • 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. 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. Example: Domain Concepts - HMI Donnerstag, 29. März 12
  • 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. Integration of HMI Concepts Donnerstag, 29. März 12
  • 24. Domain-Specific Statechart Approach Structural Concepts (SGraph) Generic Donnerstag, 29. März 12
  • 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. 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. 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. 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. 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. 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. 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/