Keeping the baby in the bath

Xactium’s Andy Evans has written an interesting article on Language Driven Development in David Frankel’s MDA Journal. In it there’s a paragraph directed at me:

In [2] it has been proposed that domain-specific languages have specific advantages over traditional style MDA PIM to PSM transformations. DSLs aim to provide targeted domain-specific modeling concepts, which can be used to accelerate development. However, our experience tells us that developers need to access a wide variety of languages. In particular, there will always be the need for general-purpose languages that cover multiple domains. Languages like UML attempt to fill this gap, but are not well defined. Discarding the general-purpose abstractions provided by UML is, in our opinion, throwing out the baby with the bathwater. Instead, these abstractions need to be semantically well defined so that developers can benefit from them.

[2] Cook, S. Domain-Specific Modeling and Model Driven Architecture, MDA

Journal, January 2004 (https://www.bptrends.com/publicationfiles/01-

04%20COL%20Dom%20Spec%20Modeling%20Frankel-Cook.pdf ).

I’d like to respond to that, because Andy has misunderstood what we mean by Domain Specific Languages. He’s absolutely correct that developers need a wide variety of languages. He’s also absolutely correct that these languages need to be built from semantically well-defined abstractions. But he has assumed that in Microsoft we are only interested in narrow, vertical domains. This is not at all the case. We’re just as interested in supporting well-defined general-purpose abstractions (domains) – constraints are a good example, data models another. The key to making this work, whether the languages are specific or general, is to have all aspects of the languages well integrated into the development process and architecture.