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.
Herman Peeren, 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.