I missed two blogs from some of my fellow Visual Studio Team System team members, Alan Cameron Willis [RSS] and Stuart Kent [RSS]. Both Alan and Stuart work with Gareth Jones in the UK (the sun never sets on Team System…) working on stuff like DSL for Team Architect Edition (aka Whitehorse). If you read Keith Short’s blog, you should probably read these guys, too.
Simon Johnston of IBM has written a note about DSLs (domain specific languages) compared with UML.
One of the excellent points he makes is that very few tools support refinement properly — that is, the layering of a design from abstract requirements to detailed implementation, with the layers connected by abstraction relations. One of the things I did before joining Microsoft was to develop a UML-based method, Catalysis, that was strong on refinement, so I support this wholeheartedly.
But it’s also one of the biggest reasons I like the idea of DSLs. Designing and keeping track of the refinements — especially when one of the layers changes — is tedious and time-consuming, and doesn’t ever get done properly.
In this posting I continue on the theme of designing tools and notations to support modeling.
On and off I’ve spent the last eight years thinking about the design of graphical (as opposed to purely textual) notations for use in software development. Until I started to build tools to support these notations, my thinking was unintentionally skewed towards how a notation would be used on paper or a whiteboard. As soon as I began building tools I realized that there’s a whole range of facilities for viewing, navigating and manipulating models, available in a tool but not on paper or whiteboard. Perhaps I should have realized this from just using modeling tools, but it seems that something more was required to make it sink in!