lessons learned from developing mbeddr17-slides.pdf · an extensible set of integrated languages...
TRANSCRIPT
![Page 1: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/1.jpg)
Lessons Learned from Developing mbeddr
A Case Study in Language Engineering with MPS
Markus Völter Bernd Kolb
Tamas Szábó Daniel Ratiu
Arie van Deursen
[email protected] [email protected] [email protected] [email protected] [email protected]
![Page 2: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/2.jpg)
MPS
![Page 3: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/3.jpg)
A Language Workbench – a tool for defining, composing and using ecosystems of languages.
![Page 4: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/4.jpg)
Open Source Apache 2.0 http://jetbrains.com/mps
![Page 5: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/5.jpg)
V 2017.2 is current V 2017.3 released later in 2017
![Page 6: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/6.jpg)
[Language Workbench]
+ Refactorings, Find Usages, Syntax Coloring, Debugging, Language
Evolution and Models Migration, Configuration Management, ...
Comprehensive Support for many aspects of Language Definition.
![Page 7: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/7.jpg)
users
![Page 8: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/8.jpg)
Parsing
[Projectional Editing]
![Page 9: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/9.jpg)
Parsing Projectional Editing
[Projectional Editing]
![Page 10: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/10.jpg)
Regular Code/Text Mathematical
Tables Graphical
Syntactic Flexibility [Projectional Editing]
![Page 11: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/11.jpg)
Regular Code/Text Mathematical
Tables Graphical
Syntactic Flexibility [Projectional Editing]
![Page 12: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/12.jpg)
L2 L1
Separate Files In One File
Type System Transformation Constraints
Type System Transformation Constraints Syntax IDE
Language Composition [Projectional Editing]
![Page 13: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/13.jpg)
L2 L1
Separate Files In One File
Type System Transformation Constraints
Type System Transformation Constraints Syntax IDE
Language Composition [Projectional Editing]
50+ extensions to C 10+ extensions to requirements lang.
![Page 14: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/14.jpg)
![Page 15: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/15.jpg)
![Page 16: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/16.jpg)
Origins
„Language Workbenches for Embedded Systems“ Research project publicly funded between 2011 – 2013
Goal: show that it is cost effective to build domain specific languages and tools even for small companies or teams
… by using language workbenches
![Page 17: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/17.jpg)
An extensible set of integrated languages
for embedded software engineering.
![Page 18: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/18.jpg)
![Page 19: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/19.jpg)
Components (mbeddr)
![Page 20: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/20.jpg)
State Machines (mbeddr)
![Page 21: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/21.jpg)
Testing & State M. (mbeddr)
![Page 22: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/22.jpg)
Mocks & Units (mbeddr)
![Page 23: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/23.jpg)
Product Lines (mbeddr)
![Page 24: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/24.jpg)
Registers (smart meter)
![Page 25: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/25.jpg)
Interrupts (smart meter)
![Page 26: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/26.jpg)
Messages (smart meter)
![Page 27: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/27.jpg)
Size of the System
![Page 28: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/28.jpg)
Variety of Languages
![Page 29: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/29.jpg)
Dev Timeline
![Page 30: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/30.jpg)
Homepage
www.mbeddr.com
Open Source, Eclipse Public License https://github.com/mbeddr/mbeddr.core
![Page 31: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/31.jpg)
![Page 32: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/32.jpg)
Research Findings
![Page 33: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/33.jpg)
RQ1: Modularity Is it practically feasible to
define a modular set of languages of the size of mbeddr?
![Page 34: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/34.jpg)
Modularity
Language Composition Mechanisms used
![Page 35: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/35.jpg)
Modularity
OO-style composition for structure and syntax
![Page 36: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/36.jpg)
Modularity
Fine-grained nesting
![Page 37: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/37.jpg)
Modularity
Modular semantics/generators
![Page 38: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/38.jpg)
Modularity Wrap Up
mbeddr’s 34 extensions to C are a clear indication that MPS’ language modularity works. Modularity is useful for language understanding, testing and reuse. In rare cases, modularity is compromised by necessary changes to the base language and unwanted dependencies between independent extensions. Currently there is no way to detect (unwanted) semantic interactions between independent language extensions through analysis of their transformations.
![Page 39: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/39.jpg)
RQ2: Projection What is the contribution of projectional
editing to the success of mbeddr?
![Page 40: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/40.jpg)
Projection
Variety of notations used in mbeddr
Regular Code/Text Mathematical
Tables Graphical
![Page 41: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/41.jpg)
Projection Wrap Up
The two main benefits of projectional editing – language modularity and a range of combinable notations – have been used extensively in mbeddr. The anticipated benefits have been observed. The editor can be flexibly extended with new notational styles with acceptable effort, as exemplified by the support for math, tables and diagrams. The ability to use multiple and partial projections must be further improved by integrating with other language aspects, in particular, editor actions and type checks.
![Page 42: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/42.jpg)
RQ3: Complexity How effective are MPS’ mechanisms for
managing the complexity inherent in language development?
![Page 43: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/43.jpg)
Complexity Wrap Up
The approach of using a DSL for each language aspect works well based on our experience, even though some aspects are missing and some are not declarative enoughto support meaningful analyses. The support for debugging is spotty: it works well for transformations, but debugging generator macros, behaviors and type system rules is very tedious. The ability to extend MPS’ language definition DSLs with MPS itself is a powerful approach for managing complexity, and we have used it extensively, even though it has some limitations.
![Page 44: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/44.jpg)
RQ4: Scalability What are the performance
and scalability implications?
![Page 45: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/45.jpg)
Scalability
Generator Performance
![Page 46: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/46.jpg)
Scalability Wrap Up
If attention is paid to the size of roots and the distribution of code over multiple models, then systems of significantsize can be built with MPS. The performance of the type system (as it is evaluated in realtime in the editor) and support for cross-model generation are the two most critical ways of improving MPS performance. During the development of languages we have not run into any problems regarding performance or scalability (of editor, type system or generator definitions).
![Page 47: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/47.jpg)
RQ5: Process What are the interactions with the
development process?
![Page 48: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/48.jpg)
Process
Language Testing Support
![Page 49: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/49.jpg)
Process Wrap Up
Except for the missing test support for model migrations and single-step transformations, language testing works well, and we have achieved good coverage as demonstrated by a stable code base.
We have successfully integrated mbeddr’s build, test and packaging with the Teamcity CI server, but the effort to get there was significant, partially as a consequence of the inadequacy of MPS’ build language.
Migrating instance models as the underlying languages change incompatibly is feasible with manually scripted migrations and their automatic execution based on implicitly-maintained language version numbers.
![Page 50: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/50.jpg)
Back to the Present
![Page 51: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/51.jpg)
Today
Our SoSym paper “ends” in 12.2015 “new” developments
![Page 52: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/52.jpg)
Beyond mbeddr …
![Page 53: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/53.jpg)
mbeddr today is 20% bigger than in 12.2015
ESD doubles the size of mbeddr today
All Findings Remain Valid
![Page 54: Lessons Learned from Developing mbeddr17-slides.pdf · An extensible set of integrated languages for embedded software engineering. Components (mbeddr) State Machines (mbeddr) Testing](https://reader033.vdocumento.com/reader033/viewer/2022060719/607fe4bfb5a6ce314e6cb13e/html5/thumbnails/54.jpg)
Thank you!
www.mbeddr.com
Open Source, Eclipse Public License https://github.com/mbeddr/mbeddr.core