DSLs and UML? Whatever to do?
So I've been speaking a lot to customers about Visual Studio Team System. The excitement is certainly building, and for good reason. Team System (in my opinion) has the potential to significantly enhance the development process for projects of all sizes, from the single developer to enterprise sized teams. Even more exciting is the partner ecosystem that is emerging around Team System. The general extensibility of Visual Studio 2005's IDE will, no doubt, lead to a large community of add-ins from commercial vendors and individuals.
I get a lot of questions, particularly around the class designer and UML support. Does the class designer to UML? The short answer is no. It is build around the concept of Domain Specific Languages, or DSLs, for short. Developers are already familiar with DSLs- they've used them to build applications in the past. SQL modelling and development tools are a good example of DSLs.
Is it important that Microsoft provide UML in it's tool suite? Politically, probably. Practically, not really. Most organizations, indeed the vast majority, don't use UML, and for those who do (some 9-11 %, depending on the report you look at), use it primarily as a preliminary tool to model applications. With the vast majority of UML that is generated being left on the shelf to collect dust as it becomes outdated during the overall development lifecycle, as developers get down to the work of actually implementing an application design. Indeed, if all of the designers in VS2005 were made in accordance with the UML 2.0 specifications, they would have to use or extend some of the most confusing, complicated, and indeed expansive set of sub-languages around. More complexity. That's just what we developers need.
The nice thing is that development organizations that use existing UML tools (the top two are Rational and Vision UML), they can continue to use their tools to generate class libaries for applications in the .NET world, as before, and open them up in a team system project. The DSL Class designer will accept these classes just fine, and allow the developers to take the step of implementing the application with all the time savings they get in the IDE and using the DSLs.
And for the hard-core, or those that have to use UML for more than just the beginning of a project, folks like Borland, Sybase, and others have already announced plans to make UML 2.0 DSLs for Visual Studio Team System.
Politics and Practicality. Remember, in the end, it's the money, and how efficient you are with spending it.
That's just my 2 cents.