Wednesday 13.00-13.50

Add this session to your schedule

Developing software often requires using a number of tools and languages. In embedded software, for example, it is common to use C and its IDE, Matlab/Simulink, a number of custom XML files, a requirements management tool such as DOORS and and possibly a UML tool and a variant management tool. The integration of such a zoo of tools is often a major source of (accidental) complexity in development projects.

Contrast that with the "good old days" when everything was text files and command line executables running on the unix shell. This approach had two important properties: the infrastructure was extremely generic (unix shell, pipes, text editors) and the actual contents were easily extensible and composable (new text file formats/languages and new command line tools); a productive environment for a given project or domain could easily be built from the generic infrastructure plus a few custom extensions.

In this talk I want to propose that creating (domain-specific) development environments based on language workbenches results in many of the same advantages that we all valued in the unix shell-world. A language workbench is an extremely generic infrastructure that is easily extensible with new languages. It is easy to create domain-specific development tools that can address different aspects of the system with suitable abstractions, but are nonetheless very well integrated in terms of semantics and tooling.

In the talk, I illustrate the idea with mbeddr, which is just such an environment optimized for embedded software development. However, this approach is generally not specific to embedded software, and no knowledge about embedded software or C is required.

The session is not intended as a PR initiative for mbeddr. In the talk, I look at mbeddr from the perspective of language engineering and tool customization. The approach can easily be used in other domains. Also, mbeddr is open source software. More info can be found at