Microsoft and Domain Specific Languages, Reprise

Two weeks ago, Grady Booch posted a blog entry titled “Microsoft and Domain Specific Languages”. The posting is part of a running debate between Grady, and my colleagues at Microsoft Steve Cook and Alan Wills.

While there are several points in the posting on which Grady and I disagree, which I will address over the course of the next few postings, there are also several points on which we agree. In particular, we share the conviction that packaging knowledge for reuse in patterns, languages, frameworks, tools and other form factors is “the right next stage in cutting the Gordian knot of software”. You can read about what we think is required to accelerate this type of knowledge reuse in the Software Factories book, and about Microsoft’s work on patterns, led by David Trowbridge and Ward Cunningham, here and here.

That said, the devil is in the details of how to automate more of the software life cycle using metadata captured by models, a goal often described as model driven development. At least that’s the goal here at Microsoft. Of course, that is not the goal for which UML was developed. It was developed to provide a common notation for the practice of object oriented analysis and design (OOA&D), as described here.

So, is it fair to judge the UML on how well it measures up as a medium for model driven development? Well, one might not think so, except for the fact that it is being promoted by a standards organization (i.e., the Object Management Group), not only as A medium, but as THE (official, sanctioned, approved, acceptable and appropriate) medium. The implication is that the UML has already been demonstrated to be the most appropriate medium for model driven development, and that the burden of proof falls not to the UML, nor to its promoters, but to those who would use some other medium.

This debate, then, is about the suitability of the Unified Modeling Language (UML) as a medium for developing source artifacts from which running systems are created, and for capturing information about those systems (i.e., metadata) that can be used to automate activities across the software life cycle.

The first point in Grady’s posting on which we disagree is his claim that Microsoft has rejected the UML in favor of proprietary domain-specific languages. Of course, this is not an accurate description of our position, which we have stated publicly on many occasions. We have not rejected the UML. Rather, we agree with Grady that UML has indeed proven to be very useful as a repository for notational conventions that support a range of modeling styles. There is no question that this was a valuable contribution that significantly advanced the practice of modeling, as traditionally understood, where the focus is primarily on creating documentation that describes system structure or behavior.

What we have rejected is the claim that the UML is the most appropriate medium for model driven development, where models are used as source artifacts that are compiled, interpreted, or otherwise used to automate software life cycle activities. On this point, we agree with Grady that UML is not appropriate for all purposes. After all, it is a unified modeling language, so called because it was developed to integrate notational styles used by multiple methodologists, not a universal language that can solve all problems.

Clearly, developing, testing, deploying, managing and maintaining software are quite different than creating documentation. One obvious difference is that models used for development must have semantics defined precisely enough to support computation, not just human interpretation. A second is that models used for automation must fit well into the software development process, and the file oriented world in which it is practiced.

Perhaps, instead of trying to bend an existing language designed for designed for creating documentation to the duties of this new and promising approach to software development, we would do better to come at the question from the opposite direction, and ask what the most appropriate language or languages would look like. On this point, we agree with Martin Fowler, who expresses skepticism about attempts to use the UML as a language for model driven development here, and with Dave Thomas, who wrote here about issues with UML and its use in the OMG branded methodology called Model Driven Architecture.

I’ll have a lot more to say about this topic, and about the broader question of how to practice model driven development effectively in subsequent postings.

Comments (13)

  1. Hey Jack!

    I look forward to reading more of your thoughts, both on Mr. Booch’s post, and Software Factories in general. I have been doing some research on "Software Factories", or at least how Microsoft is using the term. I think my biggest hang up, at this time, in grasping the concept, is the use of the word "Factories".

    I look forward to learning a lot more!



  2. In addition to my previous entry, I’d like to comment on Jack Greenfield’s view of UML and it’s shortcomings in the field of Model-Driven-Development (MDD). Jack describes UML as a useful means of object oriented analysis and design here and…

  3. JD says:

    Jack, what you describe about UML being more appropriate for documentation than execution was once undeniably true. In fact, when Rational Software was driving the standardization of UML (via the OMG)this was significant sticking point.

    At that point in time, a counter proposal was hammered out by IBM and more ObjecTime, which already had executable models. The resulting compromise changes to UML (including rigorous definitions in the metamodel and powerful usage of sterotyping) actually addressed this concern of yours in fundamental ways. In other words, you describe UML 1.0 accurately, but UML 1.1 is a greatly deeper beast than you admit.

    Of course, since then all the relevant parties (including ObjecTime and Rational) have merged together and now all are part of IBM. So it’s clear why many in Microsoft view this as political in nature. Of course anyone promoting ‘one true methodology’ is also being quite political.

    That said, your arguments do not go very deep here. It does not seem that you are truly arguing that the UML metamodel is unable to express the DSLs that you envision. (And if you are, then you should not simply slur it as a ‘documentation’ language, which is an out of date characterization)

    Instead, you (and your colleagues) seem to be arguing that UML is ‘beside the point’. This is not very compelling, as "Software Factories" and the new terminology being promulgated here seems equally ‘beside the point’. Domain-specific languages are going to be built on some foundation. You can argue that it doesn’t have to be UML, fine. But you will be providing your own conceptual framework and sets of tools to build them on. This is mostly political and not a fundamentally different approach (or not as it had been articulated, at least).

    So, the following are some relevant questions:

    1. Are you familiar with the latest versions of UML?

    2. Do you deny that some metamodel is needed to underly the common aspects of DSLs?

    3. Is there a fundamental limitation to the UML metamodel that makes it ill-suited as the basis for DSLs? [And can you articulate a precise limitation?]

    4. Do you admit that there are already complex, complete UML models that are compiled, interpreted, and otherwise used for software execution?

    5. Assuming that you are right about the unsuitability of UML (which orignated in software engineering) for modeling other domains, what commonality do you forsee between the DSLs? What are the key properties of the metamodel that you support?

    6. How is the DSL framework (fundamentaly, the metamodel) that you envision different from the UML? [can you articulate a clear advantage?]

    I hope that Microsoft develops a better, less academic approach than UML, but haven’t been convinced yet.

    [My bias? I actually am on both sides of this issue. I once developed for Rational and now develop for Microsoft. I personally love a good political war; like DCOM vs CORBA – I think both were ugly but DCOM was more practical. UML should not be the de facto anything, but I prefer to see criticism on the merits, not the politics.]

  4. Ok, so Clarry and I where flat out yesterday with sessions, unfortunately, after each session, my stock…