The Pharonic Architect is Blogging

Speaking of DSL Tools, Software Factories co-author Jack Greenfield just started blogging. He has jumped into the running debate between IBM’s Grady Booch and a variety of MS folks including Steve, Alan and myself. He does a good job summarizing the argument including pointing out where he and Booch 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”.

Jack rightly points out that while we all agree on these mechanisms for packaging knowledge that the devil is in the details. I look forward to seeing more on these details from Jack in the future.

Early Xmas Present

Maybe it’s not as exciting as what my 2 year old has on tap for Xmas, but some of my Xmas came early when I got the new release of the DSL toolkit. The website isn’t updated yet, but the download is available.

This release is way beyond what the team shipped right after OOPSLA. For example, the code generation engine is in there now. So where you could only design the concepts of your modeling environment in the last release, now you can build a set of concepts in what is now called the Domain Model Designer, design a notation for that model using the Designer Definitions file (visual designer for this file to be a part of a future release) and build a set of code templates that can in turn generate code during the compilation process. Very cool.

I’ve only played with the updated walkthrus so far, but I’m pretty impressed. Major congrats to the team for getting this out. I saw Jochen in the cafe on Friday and discovered that the entire team has moved to building 25 which is right across the street from building 18 where my office is. Now I can go bother Jochen, Keith, Jack and the rest of the team without having to track all the way across campus! 😄

Booch on DSLs (Round 3)

Steve Cook responded to Grady Booch’s latest comments on software factories and DSLs, which was in turn a response to an entry by Alan Wills. It’s obvious that Booch is never going to agree with the DSL approach, but there are a couple of fascinating elements of the exchange.

First off is Microsoft’s “rejection” of UML, which is just plain FUD. I’m behind on news reading (as usual) but I was clued into this conversation by a post on TSS.com that linked to Booch’s blog and read “Grady Booch explains why he disagrees with Microsoft’s rejection of the UML in favor of proprietary domain-specific languages.” Not exactly priming the pump for intelligent discourse on the subject. As Alan and Steve both point out, we’re not rejecting UML. UML is a tool, and like all tools it has things it’s good at and things it’s not good at. We’re talking about using DSLs for things UML is not good at.

The next is Common Semantics. Every time he posts on DSLs, Booch mentions something about “covering the same semantic ground as the UML”. I promised Dan in my comments that I would summarize this argument “in simple English” and I never got around to it. The term semantics simply means “meaning”. For example, in C#, the keyword “class” always means the same thing – it has what Steve pointed out is “objective semantics”. Obviously, the word “class” has widely varying semantics in common use – when a high school senior cuts class he’s not copying an object definition to the clipboard. But within the realm of C#, the word “class” has a well understood and precise meaning – it’s so precise that the C# compiler can tell you if you use it incorrectly.

So when Booch writes about a “common semantic model”, I take that to mean that he thinks there’s a core set of well-defined concepts that all languages build on. And if that’s what he means, I imagine he assumes all the interesting concepts are already defined by UML. I think that’s where the primary disagreement lies – we don’t think any one language can provide all the possible concepts needed for all programming domains. A language for developing a web app page flow will be built on very different semantic concepts that a language for developing telephone billing systems. Trying to build both of them on top of the same set of concepts is like putting a square peg in a round hole.

Furthermore, even if you wanted to build on a common set of concepts, it’s not clear if UML provides a precisely defined set of concepts to build on. Obviously, Booch thinks it does, but there certainly isn’t agreement in the industry. Steve refers to UML as having “cognitive semantics”, which means there is no one objective definition for a specific element of UML. For example, in covering Aggregation and Composition, Fowler refers to UML’s white diamond aggregation as a “modeling placebo” and having “no standard meanings”. When there’s no standard objective meaning, then each person brings their own experience and reason in order to formulate their understanding – hence the term “cognitive”. Of course, the chance that any two people will reach the same understanding via cognitive reasoning is slim to none – there’s just too much room for personal interpretation. Because of this lack of objective precision, Steve describes the resulting discussion of UML and its semantics as “political, rather than objective” which IMO is not a good foundation to build your own language on.

In the end, the proof is in the pudding. Personally, I think Booch looks at UML with rose-colored glasses and that his beliefs don’t mesh with reality. (Of course, our DSL modeling tools and software factories approach isn’t far enough along yet to test against reality.) How about your experience? What success or failure have you had with UML?

Another Model Blogger

Gareth Jones is another blogger from the VS modeling team. He’s got some great posts on using OneNote as a shared whiteboard and the use of color-coding in modeling. Given the fact that a popular use of modelling today is for sketching, it’s interesting to read about how the team is looking at bringing those idioms forward while also making the models precice enough to be used as development artifacts.

BTW, no problem on the image “borrowing” Gareth. 😄

DSL Tools Now Available

We announced it last week, but the DSL Tools home page just went live today. The big thing is the Microsoft Tools for Domain Specific Languages Technology Preview. There’s also a walkthru of the tool, a newsgroup and Jochen’s blog. We also published the third article in the Software Factories overview series.

The DSL Tools is the first in a collection of “workshop” projects that relate to Team System. These projects will be run as transparently as is feasible, so watch that site to be pretty dynamic as we post things like specs and lots of interim builds. Scoble has talked in the past of transparent projects, this I think will be a much more transparent project than we’ve done in the past.

(BTW, if you want to try out the DSL Tools, you need VS2005 Beta 1 as well as the VSIP SDK 2005 Beta 1)