Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a...

53
Melange: a Meta-language for Modular and Reusable Development of DSLs Thomas Degueule , Benoit Combemale, Arnaud Blouin, Olivier Barais, Jean-Marc Jézéquel

Transcript of Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a...

Page 1: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for

Modular and Reusable

Development of DSLsThomas Degueule, Benoit Combemale, Arnaud Blouin, Olivier Barais, Jean-Marc Jézéquel

Page 2: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 2

Page 3: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 3

DSLs specificities

• Closely evolve with the domain• Extended, shrunk, customized, etc.• Quick prototyping, small development teams

Page 4: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 4

Software Language Engineering

• Breathing software engineering into languages

• In this talk: reuse, modularity• Goal: reduce engineering costs

• Instead of starting from scratch, can we reuse previously-defined language artifacts?

• But, is reuse relevant in a domain-specific context?

Page 5: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Crane et al., UML vs. classical vs. rhapsody statecharts: not all models are created equal, SoSyM, 2007

Page 6: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Reuse is not enough! Context matters!

Imported artifacts may not fit exactlydomain-specific requirements

Finely tune the imported artifacts and theresulting languages withcustomization facilities

Page 7: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 8: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 6

• A metamodel specifies the AS

Page 9: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 6

• A metamodel specifies the AS

• Sem consists of computation steps and runtime data

Page 10: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 6

• A metamodel specifies the AS

• Sem consists of computation steps and runtime data

• Aspect-oriented modeling: Semis woven as methods in the AS

• Based on static introduction

• Interpreter pattern

Jézéquel et al., Mashup of metalanguages

and its implementation in the kermeta

language workbench, SoSyM, 2013

Page 11: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 7

Page 12: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 7

Page 13: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 7

Inspired by eg. Erdweg et al., Language Composition Untangled, LDTA, 2012

Page 14: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 8

Page 15: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 8

Steel et al., On Model Typing, SoSyM, 2007

Guy et al., On Model Subtyping, ECMFA, 2012

Page 16: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Running Example: a Simple State Machine Language in Melange

Page 17: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 9

Page 18: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 9

Page 19: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 9

Page 20: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 9

Page 21: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 10

Page 22: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 10

Page 23: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 11

Page 24: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 11

Page 25: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 12

Page 26: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 12

Page 27: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 12

Page 28: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 13

Page 29: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 13

Page 30: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 13

Page 31: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 14

Page 32: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 14

Page 33: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 14

Page 34: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

A Language Workbench

Page 35: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

▪ An open-source (EPL) language workbench

▪ or… a language-based, model-oriented language for DSL engineering

▪ An implementation of the algebra

▪ Supported by a model-oriented type sytem

▪ Based on Xtext

▪ Seamlessly integrated with the EMF ecosystem

▪ Bundled as a set of Eclipse plug-ins

Melange: a Meta-language for Modular and Reusable Development of DSLs 15

Page 36: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

▪ Abstract syntax: Ecore (EMOF)

▪ Merging: Customized UML PackageMerge1

▪ Trading UML specificities with EMOF specificities

▪ Support for renaming

▪ Slicing: Kompren2

▪ Operational semantics: K3 (Xtend on steroids)

Melange: a Meta-language for Modular and Reusable Development of DSLs 16

Dingel et al., Understanding and Improving UML PackageMerge, SoSyM, 2008

Blouin et al., Kompren: Modeling and generating model slicers, SoSyM, 2012

1

2

Page 37: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 38

Page 38: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

▪ Abstract syntax: Ecore (EMOF)

▪ Merging: Customized UML PackageMerge1

▪ Trading UML specificities with EMOF specificities

▪ Support for renaming

▪ Slicing: Kompren2

▪ Operational semantics: K3 (Xtend on steroids)

Melange: a Meta-language for Modular and Reusable Development of DSLs 16

Dingel et al., Understanding and Improving UML PackageMerge, SoSyM, 2008

Blouin et al., Kompren: Modeling and generating model slicers, SoSyM, 2012

1

2

Pointcut

Advice

Page 39: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 17

Page 40: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 17

Page 41: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

An Executable Modeling Language for the Internet of Things

Page 42: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 18

IDL

Modelsensors’

interfaces

Behavior

Modelsensors’

control flow

Actions

Expresssensors’ action

cf. fUML, ThingML, etc.

Page 43: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

Melange: a Meta-language for Modular and Reusable Development of DSLs 18

IDL

Modelsensors’

interfaces

Behavior

Modelsensors’

control flow

Actions

Expresssensors’ actions

Ecore ActivityDiagram

FromEclipse

FromTTC’15

FromGithub

cf. fUML, ThingML, etc.

Page 44: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 45: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 46: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 47: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 48: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 49: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 50: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies
Page 51: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

▪ Comparison with a top-down approach

▪ No runtime penalty

▪ Reuse and customization operators ease the development

▪ Glue: ~30 LoC (mainly Lua/AD context translation)

Melange: a Meta-language for Modular and Reusable Development of DSLs 19

Page 52: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

▪ Viewpoints engineering

▪ Fine-grained modularity: language units / features / modules

Melange: a Meta-language for Modular and Reusable Development of DSLs 20

Page 53: Melange: a Meta-language for Modular and Reusable ... › pdf › sle15melange.pdf · Melange: a Meta-language for Modular and Reusable Development of DSLs 6 • A metamodel specifies

▪ Feel free to ask for a demonstration

Melange: a Meta-language for Modular and Reusable Development of DSLs 21

http://melange-lang.org