From Ubiquitous Language to Domain Specific language

Thursday afternoon 14:00 - 16:00 CET (UTC+1)


Herman Peeren and Federico Tomassetti


In Domain Driven Design developers and domain experts use a shared (“ubiquitous”) language to build a model. Then software is implemented, using the model as a guide. In the implementation the model is formalised by using a general purpose computer language. That language is no longer readable by most domain experts.

A domain specific language (DSL) is a formalisation of the ubiquitous language, that is still readable by the domain experts. It can be used to validate the model and to produce the final software for the end-user. This has a lot of benefits, especially when the model changes frequently.

When do the benefits of using a DSL outweigh the costs? We’ll use a model to estimate that for your domain.

Then we’ll build a DSL from an example domain model. We’ll look at structure, types, behaviour, syntax and semantics. We’ll build an editor to work with the language and validate the model. And we’ll show how end-user software is generated from that model. In this hands-on we’ll walk through the whole process, from domain concepts to a working DSL, but the emphasis will be on creating the DSL.

We’ll show several tools of the trade: grammar based, like Xtext, or projectional, like JetBrains MPS.

Practical information

To prepare for this lab:

  1. download MPS 2020.3 from and install
  2. clone the repo with examples for the workshop from
  3. open the project in the repo from MPS
  4. please pull the latest version of the repo just before the workshop
About Herman Peeren

creative developer Twitter LinkedIn Blog Company Website

Herman Peeren likes creativity and exploring new ideas. Modeling is a way to better understand the world around us. Computer Science is Philosophy. Languages carry our thoughts, and that holds for both natural languages and computer languages.

About Federico Tomassetti

Independent Software Architect Twitter LinkedIn Blog Company Website

Federico Tomassetti is an independent Software Architect specialized in Language Engineering. He builds languages, editors, parsers, compilers, and interpreters. After getting his PhD he has worked in Italy, Germany, Ireland, and France. He worked for small companies and large ones like TripAdvisor and Groupon. Currently he works remotely with companies from all over the world.