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
matter).
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 :-)