Over the last five years we have built mbeddr, a collection of integrated languages and language extensions built with the Jetbrains MPS language workbench. mbeddr consists of 81 languages, incl. IDE support, 34 of them C extensions. The mbeddr languages use a wide variety of notations – textual, tabular, symbolic and graphical – and the C extensions are modular; new extensions can be added without changing the existing implementation of C. mbeddr’s development has spanned roughly 15 person years so far, and the tool is used in practice and continues to be developed. This makes mbeddr a case study in language engineering of non-trivial size and complexity. In this keynote, I look back at mbeddr’s development to identify what worked well and what are still challenges in language engineering with a modern language workbench. I will address five areas: language modularity, notational freedom and projectional editing, mechanisms for managing complexity, performance and scalability issues and the consequences for the development process. I will close by highlighting a set of issues which need further research and engineering.
22. SoKware Architecture
Energy
data
Non-
Volatile
data
Mains frequency
measurement
Instantaneous voltage &
current sampling
RMS voltage & current
calculation
Power & power factor
calculation
Energy and consumption
calculation
Energy data
display
Multi-tariff &
billing periods
support
Magnetic
interference
protection
DLT645
calibraEon
commands
Load profile
support
Reset function,
historical data
recording
COSEM
objects/OBIS
codes
Anti-tampering/
anti-fraud
Last/average/
maximum
demand
Output relay
control
Watch-
dog
Clock
System
USCI
LCD
Line
Temperature
Provider
RTC
Flash
Memory
Timer ADC10SD24EEPROM
HAL
Calibration
Protocol
Rem. Device
Access Prot’l
...
Bin/Bcd
Converter
LCD format
Low-Pass
Filter
TickerModem Protocol
UTIL COMM
METROLOGY APPLICATION
No RTOS
Interrupt-Driven
One-Threaded Programming
Required Precision leads to
4096 Hz Sampling Rate
Interrupt-Triggered:
Measurement
Foreground Tasks:
App Logic, RTC