Simon Johnston has recently joined our merry band of IBM bloggers (welcome, Simon!). In a recent post, Simon offered his reaction to an article by Keith Short of Microsoft regarding the UML versus domain-specific languages (DSL).
I violently agree with Simon's world view. The essential value of the UML remains unchanged from its creation: the UML is a simply a graphical language for visualizing, specifying, constructing, and documenting the artifacts of a software-intensive system. Ultimately, the UML is all about providing a language of expression for better understanding and reasoning about a system. To that end, the UML doesn't replace traditional languages such as Java and C++, but rather, the UML stands as a peer. Trying to grok a continuously evolving system that has tens of thousands of moving parts most likely running across multiple machines loaded with multiple platforms and built out of parts from multiple languages is just plain hard: the UML provides a language for expressing many of the structures and behaviors that span this cacaphony. Having the right language of expression for a given problem does wonders in melting away complexity, as the work of Edward Tufte shows (and Tufte's work greatly influenced my contributions to the UML). Keith draws a line in the sand between the UML and DSLs which essentially relegates the UML to nothing more than a primitive language for whiteboards (and then promotes Microsoft-specific DSLs for "real" development).
I, as does Simon, actually agree with Keith's view that the UML is absolutely brilliant as a common language of communication on whiteboards and napkins (and I'm tickled to get confirmation that such UML diagrams show up on Microsoft developer whiteboards). However, I think, as does Simon, that Keith misses the point when he distinguishes DSLs as something totally different from the UML. The last thing the world needs is yet another (non-open standard) programming model or language injected in an already complex space. Our experience has shown that domain-specific design and architectural patterns specified can (and should be) expressed in the very same language that one may use on a whiteboard or napkin, namely, the UML. Furthermore, in the real time space, there are already existence proofs of direct executability of UML models (see, for example, Rational's own Rose Real Time as well as David Harel's Play Engine).
One of the metagoals of my Handbook is to show that the UML is appropriate for modeling a large spectrum of software-intensive systems, from Amazon to the Spirit to Massive; thus far, I've not be disappointed or limited by what I can do in the UML.