MPS DSL Book is out!
For the last two years,
Antonio Bucchiarone and his colleagues have been working on editing a book on
domain-specific languages in MPS. In addition to an introduction, it contains
ten chapters, most of them case studies of real-world DSLs developed with MPS.
The book is available now directly from Springer or
at Amazon (for way too high a price, but that’s another
I have been involved in two of the chapters, and since you’re reading my medium article, let me point out these two :-)
The first one is called A Domain-Specific Language for Payroll Calculationsand is a case study of a DSL the DATEV folks have built over the last couple of years with the help of yours truly and a couple of itemis people. The language enables subject matter experts to efficiently implement, test, and validate payroll calculations independent of downstream deployment considerations. The language is fundamentally functional and builds on top of KernelF. It addresses core domain challenges such as versioning of calculation rules and data and the processing of temporal data. We evaluate the language regarding reduction of complexity in payroll programs, the impact on quality, its suitability for use by domain experts as well as the integration into the IT infrastructure. The chapter concludes with general learnings about building business DSLs. The DSL constitutes the backbone of DATEV’s payroll calculation software development process and is one.
While I have been lead author on the chapter mentioned above, I worked in a supporting role mainly to Dan Ratiu in the second chapter I was involved in. It covers FASTEN, an extensible platform for experimenting with rigorous modeling of safety-critical systems.
So, if you are interested in MPS-based DSLs, you might want to check out the book. If you’re specifically interested in only one or two of the chapters you can also buy each chapter separately for the bargain of 25,95 EUR. Or maybe you just send the authors and email and a virtual beer to make a PDF pop up in your inbox :-)