Tutorial at ECSA 2023

Domain-Specific Modeling for Architecture-Centric Software Engineering

Juha-Pekka Tolvanen, Steven Kelly - MetaCase

Experience shows a clear synergy from the use of domain-specific modeling languages in architecture-centric software development. Embodying the architecture and domain concepts in a modeling language makes the architecture more visible at all levels of development, makes it easy to learn, and can ensure it is followed.

This tutorial will teach participants about domain-specific modeling languages, how to create them for a particular domain and architecture, and how to provide tool support for modeling with them, learning stepwise through practical demonstrations. We will look at some existing Architecture Definition Languages and see how they have been made progressively more specific to a given problem domain, and similarly look at some domain-specific languages and see how they encapsulate or are targeted at a particular architecture. The benefits and synergy of this combination will be examined in comparison to more generic languages, and guidelines given for when each approach is best used.

Including domain concepts in the modeling language raises the level of abstraction away from the code, but also makes models more specific. This improves the ability to know exactly what a model means, and thus be able to translate the models into accurate code — whether manually or by specifying how code should be generated. We will show how such code generators can be built, targeting the desired architecture, and how a given model can be used as a single reliable source to generate code for different architectures, as well as configuration and documentation, and to run various simulations and analyses.

Throughout the tutorial we provide examples from various fields of software development including consumer electronics, Internet-of-Things, industry automation, home automation and automotive. We also make use of appropriate tools to both create modeling languages and use them. Traditionally the effort to create your own modeling language, editor support and generators has been significant, but modern tools, like MetaEdit+ applied in this tutorial’s demonstrations, reduce the effort to implement production-ready DSM languages and code generators from months or years to a few working days — and working examples in minutes.

Tutorial agenda

The tutorial is based on slides and supporting DSM language and generator demonstrations. It includes some interactive group tasks to create relevant parts of sample domain-specific modeling languages and code generators.

  1. Introduction
      - Languages and software architecture
      - Domain-specific modeling languages
  2. Cases and examples
      - Industrial experience reports
      - Detailed demonstration
  3. Elements of language
      - Abstract syntax, concrete syntax, semantics
      - Metamodeling
      - Tool support for language definition
  4. How to create a modeling language
      - How to identify language concepts and rules
      - Defining language via metamodels
      - Defining notations
      - Language creation exercise
  5. Generators
      - Different code generation approaches
      - How to implement code generators
      - Code generation examples
      - Generator definition exercise
  6. Summary and discussion

Indented Audience

This tutorial is intended for all desiring to have better modeling support and consistent use of architectures. Participants are expected to have basic experience in some modeling language, but prior experience of metamodeling or language creation is not required.

Attending the Tutorial

A registration to ECSA 2023 is mandatory to attend the tutorial. Please tick the box next to our tutorial during the registration to indicate that you plan to attend the tutorial.


The tutorial is prepared and organized by Juha-Pekka Tolvanen and Steven Kelly. Juha-Pekka will present the tutorial. For any questions he can be contacted at jpt@metacase.com.