melange: a meta-language for modular and reusable ... › pdf › sle15melange.pdf · melange: a...
TRANSCRIPT
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/7.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/35.jpg)
▪ 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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/36.jpg)
▪ 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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/37.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/38.jpg)
▪ 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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/39.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/40.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/41.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/42.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/43.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/44.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/45.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/46.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/47.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/48.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/49.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/50.jpg)
![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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/51.jpg)
▪ 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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/52.jpg)
▪ 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](https://reader034.vdocuments.net/reader034/viewer/2022052612/5f0e3dae7e708231d43e49e1/html5/thumbnails/53.jpg)
▪ Feel free to ask for a demonstration
Melange: a Meta-language for Modular and Reusable Development of DSLs 21
http://melange-lang.org