DSL Toolkit on CTP VS?

Doug wanted to know if the new DSL toolkit runs on the December CTP of VSTS. In a word, no. The March DSL Toolkit requires Beta 1 of VS05 Beta 1 or Beta 1 refresh. However, at some point, there will be a version of the DSL Toolkit that runs on VS05 Beta 2. (“At some point” meaning not on the day that VS05 Beta 2 ships but some short period of time after that.)

This is why I use Virtual PC. I can install the CTP build in one VPC and the Beta 1 build w/ DSL toolkit in another.

Update on DSL Toolkit and VC++

Yesterday, I mentioned that you need VC++ installed to use the DSL Toolkit. Apparently, it’s needed for building a DLL related to VS integration. However, Gareth let me know that they should be able to do that with managed code in a future build which means they won’t have a dependency on VC++. I didn’t install VC++ because I was trying to save space in my VPC where I’m running the VS2005 beta 1 bits.

New DSL Tool Drop Available

I’ve been doing a bunch of thinking about the use of heavily stereotyped UML class diagrams and how similar it is to the DSL approach. I’m working on a new post, but I wanted to parrot Gareth who announced earlier today that the March 05 CTP build of the DSL toolkit is now available. I’m installing it as I type. Well, not exactly true – I’m installing VC++. This drop apparently requires it.

Simulating Class Designer

It’s Thursday, and the Class Designer team is sticking to their new entry every Thursday policy. I don’t want to just post a link to their blog every week, but if they keep doing stuff this cool I’ll have no choice.

Eugene Chigirinskiy could have just posted a screen shot showing tooltips at work in the class designer. But instead, he’s built out an HTML image map on top of said screen shot and set up the areas with titles so that as you hover over areas the screen shot, tooltips pop up the same way they do in the tool. Awesome! I have no idea how long it took him to do this, but that’s dedication!

Modeling vs. Visualization

Javier got me thinking when he left a comment to my square peg model post. I’ll get to intended semantics of class diagrams in another post, but I wanted respond to the latter part of the following comment:

I suppose you are assuming that the Class Diagram is intended to be used for design purposes. Then, a class diagram could be considered simply as a code visualizer.

That’s a great point that ties into something I’ve been thinking about lately: the Class Designer in VS2005 is not a modeling tool, it’s a visualization tool. For me, the difference comes down to abstraction and transformation. In VS2005, the Class Designer is built on top of the same metamodel as the underlying language. This means there is no transformation and that the diagram and the text of the code itself are at exactly the same level of abstraction. To me, you’re not modeling unless you’ve raised the level of abstraction.

However, while I think VS2005′s class diagram is a visualization, I also believe that UML’s class diagram is a model. UML is not built on the same metamodel as the underlying language. It’s at a slightly higher level of abstraction. That’s why you can generate Java, C++, Ruby or C# from a given class model. That transformation step between diagram and code is what makes UML a model. Granted, the class model of UML is intentionally close in abstraction to the code, but it’s still an abstraction.

The only reason it matters IMO if a given diagram is a model or a visualization is to be explicit about the need for transformation. And even the need or lack of transformation is only important for usage purposes. Each method has its pros and cons. UML can’t model C# code as precisely as VS2005 can visualize it, but VS2005 can’t be used to generate code for non .NET languages.

Javier’s point cuts right to the idea that modeling classes “for design purposes” isn’t particularly valuable as classes are such a low level abstraction. I think that’s why so many people use UML’s class model as a general purpose “thing” designer. The question is, what was the class diagrams intended use?