Leveraging Executable Language Engineering for Domain-Specific - - PowerPoint PPT Presentation

leveraging executable language engineering for domain
SMART_READER_LITE
LIVE PREVIEW

Leveraging Executable Language Engineering for Domain-Specific - - PowerPoint PPT Presentation

Observations From xDSMLs to DSTLs Conclusion and future work Leveraging Executable Language Engineering for Domain-Specific Transformation Languages (Position Paper) EXE 2016, Saint-Malo, France Erwan Bousse 1 Manuel Wimmer 1 Wieland Schwinger


slide-1
SLIDE 1

Observations From xDSMLs to DSTLs Conclusion and future work

Leveraging Executable Language Engineering for Domain-Specific Transformation Languages (Position Paper)

EXE 2016, Saint-Malo, France Erwan Bousse 1 Manuel Wimmer 1 Wieland Schwinger 2 Elisabeth Kapsammer 2

1TU Wien, Austria 2JKU Linz, Austria

October 3, 2016

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 1/10

slide-2
SLIDE 2

Observations From xDSMLs to DSTLs Conclusion and future work

Observations

Domain Specific Transformation Language (DSTL) = model transformation language tailored for specific tasks (eg. strings renaming, code generation) DSTLs more and more common:

– Two papers on DSTLs at ICMT’16 in a dedicated “Model Transformation Languages” session – This year TTC’16 use case: data-flow based DSTL – Increasing need for methods to develop DSTLs

Progress in executable Domain-Specific Modeling language (xDSML) engineering:

– Generic syntactic services (eg. editors using Xtext or Sirius) – Generic runtime services (eg. debugger using GEMOC studio) – Easier and easier to obtain a tool-supported xDSML

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 2/10

slide-3
SLIDE 3

Observations From xDSMLs to DSTLs Conclusion and future work

Observations

Domain Specific Transformation Language (DSTL) = model transformation language tailored for specific tasks (eg. strings renaming, code generation) DSTLs more and more common:

– Two papers on DSTLs at ICMT’16 in a dedicated “Model Transformation Languages” session – This year TTC’16 use case: data-flow based DSTL – Increasing need for methods to develop DSTLs

Progress in executable Domain-Specific Modeling language (xDSML) engineering:

– Generic syntactic services (eg. editors using Xtext or Sirius) – Generic runtime services (eg. debugger using GEMOC studio) – Easier and easier to obtain a tool-supported xDSML

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 2/10

slide-4
SLIDE 4

Observations From xDSMLs to DSTLs Conclusion and future work

Observations

Domain Specific Transformation Language (DSTL) = model transformation language tailored for specific tasks (eg. strings renaming, code generation) DSTLs more and more common:

– Two papers on DSTLs at ICMT’16 in a dedicated “Model Transformation Languages” session – This year TTC’16 use case: data-flow based DSTL – Increasing need for methods to develop DSTLs

Progress in executable Domain-Specific Modeling language (xDSML) engineering:

– Generic syntactic services (eg. editors using Xtext or Sirius) – Generic runtime services (eg. debugger using GEMOC studio) – Easier and easier to obtain a tool-supported xDSML

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 2/10

slide-5
SLIDE 5

Observations From xDSMLs to DSTLs Conclusion and future work

Questions Is it possible to apply techniques from xDSML engineering to define DSTLs? How are xDSMLs and DSTLs related?

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 3/10

slide-6
SLIDE 6

Observations From xDSMLs to DSTLs Conclusion and future work

Questions Is it possible to apply techniques from xDSML engineering to define DSTLs? How are xDSMLs and DSTLs related?

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 3/10

slide-7
SLIDE 7

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-8
SLIDE 8

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Petri net model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-9
SLIDE 9

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Place

+name: string +initialTokens: int

p1 p3 p4 p2

init=1 init=0 init=0 init=1

Petri net model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-10
SLIDE 10

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Place

+name: string +initialTokens: int

Transition

+name: string

Place

+name: string +initialTokens: int

p1 p3 p4 p2

init=1 init=0 init=0 init=1

t1 t2

Petri net model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-11
SLIDE 11

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

p1 p3 p4 p2

init=1 init=0 init=0 init=1

t1 t2

Petri net model conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-12
SLIDE 12

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Place

+name: string +initialTokens: int

Transition

+name: string

Place

+name: string +initialTokens: int imports imports State Metamodel

PlaceState

+tokens: int Execution transformation rules (summarized) : while there is an enabled transition, fires it. : removes a token from each input Place and adds a token to each output Place. run(Net) fire(Transition)

Transition

+name: string Operational semantics : while there is an enabled transition, fires it. : removes a token from each input Place, and adds a token to each output Place. place 1

p1 p3 p4 p2

init=1 init=0 init=0 init=1

t1 t2

Petri net model conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-13
SLIDE 13

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Place

+name: string +initialTokens: int

Transition

+name: string

Place

+name: string +initialTokens: int imports imports State Metamodel

PlaceState

+tokens: int Execution transformation rules (summarized) : while there is an enabled transition, fires it. : removes a token from each input Place and adds a token to each output Place. run(Net) fire(Transition)

Transition

+name: string Operational semantics : while there is an enabled transition, fires it. : removes a token from each input Place, and adds a token to each output Place. place 1

p1 p3 p4 p2

init=1 init=0 init=0 init=1

t1 t2

Petri net model

initialization

− − − − − − − →

p1 p3 p4 p2 t1 t2

Executed model conforms to conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-14
SLIDE 14

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Place

+name: string +initialTokens: int

Transition

+name: string

Place

+name: string +initialTokens: int imports imports State Metamodel

PlaceState

+tokens: int Execution transformation rules (summarized) : while there is an enabled transition, fires it. : removes a token from each input Place and adds a token to each output Place. run(Net) fire(Transition)

Transition

+name: string Operational semantics : while there is an enabled transition, fires it. : removes a token from each input Place, and adds a token to each output Place. place 1

p1 p3 p4 p2

init=1 init=0 init=0 init=1

t1 t2

Petri net model

initialization

− − − − − − − →

p1 p3 p4 p2 t1 t2

Executed model

(t1 fired)

conforms to conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-15
SLIDE 15

Observations From xDSMLs to DSTLs Conclusion and future work

Example of Petri nets xDSML and model

Abstract Syntax input 1..*

  • utput

1..*

Net Place

+name: string +initialTokens: int

Transition

+name: string places * transitions *

Place

+name: string +initialTokens: int

Transition

+name: string

Place

+name: string +initialTokens: int imports imports State Metamodel

PlaceState

+tokens: int Execution transformation rules (summarized) : while there is an enabled transition, fires it. : removes a token from each input Place and adds a token to each output Place. run(Net) fire(Transition)

Transition

+name: string Operational semantics : while there is an enabled transition, fires it. : removes a token from each input Place, and adds a token to each output Place. place 1

p1 p3 p4 p2

init=1 init=0 init=0 init=1

t1 t2

Petri net model

initialization

− − − − − − − →

p1 p3 p4 p2 t1 t2

Executed model

(t1 fired) (t2 fired)

conforms to conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 4/10

slide-16
SLIDE 16

Observations From xDSMLs to DSTLs Conclusion and future work

Generalizing xDSMLs

Abstract syntax xDSML Executable model Parameter metamodel State metamodel Parameter model Execution state Execution transformation

Model Model transformation data flow depends on / uses conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 5/10

slide-17
SLIDE 17

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-18
SLIDE 18

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

MiniTL model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-19
SLIDE 19

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation

MiniTL model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-20
SLIDE 20

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation Transformation Rule

+name: string

MiniTL model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-21
SLIDE 21

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation Transformation Rule

+name: string

Rule

+name: string

ObjectTemplate

+name: string

MiniTL model

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-22
SLIDE 22

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

MiniTL model conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-23
SLIDE 23

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation Transformation Rule

+name: string

Rule

+name: string

ObjectTemplate

+name: string imports Operational semantics Execution transformation rules (partial) : while there is an enabled transition, fires it.

  • ves a token from each input Place and adds a token to each output Place.

run(Transformation) apply(Rule) : applies all the rules : while there is a match, applies the rule on the match

EObject

eClass 1 State metamodel (partial) transformation 1 currentRule 0..1

  • utputModel

* imports

ObjectTemplate

+name: string

TransformationState

MiniTL model conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-24
SLIDE 24

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation Transformation Rule

+name: string

Rule

+name: string

ObjectTemplate

+name: string imports Operational semantics Execution transformation rules (partial) : while there is an enabled transition, fires it.

  • ves a token from each input Place and adds a token to each output Place.

run(Transformation) apply(Rule) : applies all the rules : while there is a match, applies the rule on the match

EObject

eClass 1 State metamodel (partial) transformation 1 currentRule 0..1

  • utputModel

* imports

ObjectTemplate

+name: string

TransformationState

MiniTL model

initialization

− − − − − − − →

Output model

Executed model conforms to conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-25
SLIDE 25

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation Transformation Rule

+name: string

Rule

+name: string

ObjectTemplate

+name: string imports Operational semantics Execution transformation rules (partial) : while there is an enabled transition, fires it.

  • ves a token from each input Place and adds a token to each output Place.

run(Transformation) apply(Rule) : applies all the rules : while there is a match, applies the rule on the match

EObject

eClass 1 State metamodel (partial) transformation 1 currentRule 0..1

  • utputModel

* imports

ObjectTemplate

+name: string

TransformationState

MiniTL model

initialization

− − − − − − − →

Output model :B y = "1_out"

Executed model

(AToB app.)

conforms to conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-26
SLIDE 26

Observations From xDSMLs to DSTLs Conclusion and future work

Example of MiniTL DSTL and model

Abstract Syntax (partial)

Transformation Rule

+name: string rules * Ecore (partial)

EClass

input

  • utput

type 1 imports

ObjectTemplate

+name: string

Transformation Transformation Rule

+name: string

Rule

+name: string

ObjectTemplate

+name: string imports Operational semantics Execution transformation rules (partial) : while there is an enabled transition, fires it.

  • ves a token from each input Place and adds a token to each output Place.

run(Transformation) apply(Rule) : applies all the rules : while there is a match, applies the rule on the match

EObject

eClass 1 State metamodel (partial) transformation 1 currentRule 0..1

  • utputModel

* imports

ObjectTemplate

+name: string

TransformationState

MiniTL model

initialization

− − − − − − − →

Output model :B y = "1_out" :B y = "2_out"

Executed model

(AToB app.) (AToB app.)

conforms to conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 6/10

slide-27
SLIDE 27

Observations From xDSMLs to DSTLs Conclusion and future work

Generalizing DSTLs as specific xDSMLs

Abstract syntax DSTL Engine state metamodel Transformation and metamodels T ypes Metamodeling language Instances Instances Output and state Engine State Output model Input model Input metamodel Output metamodel Model transformation Transformation engine

(EClass, ERef., ...) (EObject) Executable model Parameter metamodel State metamodel Parameter model Execution state

Model Model transformation data flow depends on / uses conforms to

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 7/10

slide-28
SLIDE 28

Observations From xDSMLs to DSTLs Conclusion and future work

Research directions

Experiment with generic and generative approaches for DSTL engineering:

– Reuse xDSML engineering approaches , eg. getting a debugger “for free” for a given DSTL – Define/adapt new generic approaches for DSTL engineering

Evaluate the implications of DSTL specificities : eg. can we generate a usable/relevant debugger using generic approaches? DSTLs as case studies for xDSML engineering (cf. TTC’16)

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 8/10

slide-29
SLIDE 29

Observations From xDSMLs to DSTLs Conclusion and future work

Research directions

Experiment with generic and generative approaches for DSTL engineering:

– Reuse xDSML engineering approaches , eg. getting a debugger “for free” for a given DSTL – Define/adapt new generic approaches for DSTL engineering

Evaluate the implications of DSTL specificities : eg. can we generate a usable/relevant debugger using generic approaches? DSTLs as case studies for xDSML engineering (cf. TTC’16)

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 8/10

slide-30
SLIDE 30

Observations From xDSMLs to DSTLs Conclusion and future work

Research directions

Experiment with generic and generative approaches for DSTL engineering:

– Reuse xDSML engineering approaches , eg. getting a debugger “for free” for a given DSTL – Define/adapt new generic approaches for DSTL engineering

Evaluate the implications of DSTL specificities : eg. can we generate a usable/relevant debugger using generic approaches? DSTLs as case studies for xDSML engineering (cf. TTC’16)

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 8/10

slide-31
SLIDE 31

Observations From xDSMLs to DSTLs Conclusion and future work

Conclusion and future work

Just an observation: DSTLs are a sort of xDSMLs, complex and with interesting characteristics Prospects:

– Use state of the art xDSML engineering for DSTL engineering? – Consider DSTLs as nice case studies for model execution?

Future work

Short term: Experiment (more) xDSML engineering on some transformation languages, eg. MiniTL Long term: analyse a DSTL to automatically provide it with a white-box testing framework (test model generation, coverage metrics, fault localization, etc.)

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 9/10

slide-32
SLIDE 32

Appendix

Done! Thank you!

Implementation of MiniTL example: https://github.com/tetrabox/minitl Contact: erwan.bousse@tuwien.ac.at http://big.tuwien.ac.at/staff/ebousse Research project: TETRA Box: http://modeltransformation.net/tetrabox/

we have funding and an open position for a PhD student!

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 10/10

slide-33
SLIDE 33

Appendix

Generalisation of Metamodel-specific DSTLs

Input model Abstract syntax Transformation engine DSTL specific to M1 and M2 Model transformation Input metamodel M1 State and output Engine state metamodel Output metamodel M2 Execution state metamodel Output model Engine state

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 10/10

slide-34
SLIDE 34

Appendix

Screenshot of MiniTL debugging session

Bousse, Wimmer, Schwinger, Kapsammer Leveraging Executable Lang. Engineering for DSTLs 10/10