Alan Cameron Wills - UML for Agile development

I work on Visual Studio, which has extensible tools for modeling in UML. Before joining Microsoft I was a consultant in UML. So I'm interested in hearing from and talking to people who use UML.

Writing about UML - my favorite pastime!

In the days long ago before I joined Microsoft, I was an itinerant consultant in UML.

I'd wander the countryside with a slide deck, a projector and a cooking pot on my back, gathering small crowds under the shade of a tree to tell them the Good News: about how they could better understand and communicate about their software designs by drawing boxes, lines and stick people on their cave walls; and about how they would, if they did this properly, surely achieve their goals and feed their families. Well - they'd improve the chances a bit, anyway. I asked only a mug of tea and a biscuit in return. (And my standard fee, of course.) It was an ascetic life but a rewarding one, particularly when some youngster would show especial enthusiasm and I would introduce them, by the flickering light of my camp PC, to the arcane beauty of the Object Constraint Language and its virtues in the successful construction of tests; or the subtleties of covalent and contravalent composition among collaborations, and their uses in describing and applying design patterns.

But there were sorrows too. And the most poignant of these came whenever my followers gathered about me would ask, as they inevitably would, "OK chief, this UML stuff is cool. But what about tools?" And I would have to shake my head with a heavy sigh and reply that alas, there were apps that would help you draw the diagrams, but few that really delivered the goods in terms of what you'd want to do with the drawings once you'd drawn them. And that in consequence, they might as well stick to drawing on the cave walls. (Note: if you wish to do this, please make sure your walls are made of glass, and use dry-wipe pens.)

And one or two of them, perhaps those who had traveled beyond the bounds of their own village, would sometimes say "Yeah, but we heard you can get these tools where you can reverse engineer your code into diagrams, and then edit the diagrams and transform the diagrams back into code." And I would agree that these tools are indeed of value in showing you the complex interactions between the objects, and to help you visualize the links and dependencies between the classes. But after all, they only give you pictures of what is there in the program text. These tools have no power to abstract the higher design of your code, the grand vision that was in your mind when you wrote it (always assuming you had a grand vision, of course...); they cannot know what you meant when you wrote the code. That meaning has to come from you.

This is the real strength of UML, properly used: to help you think about and discuss and communicate the crucial aspects of your design in just a handful of skillfully-chosen lines. A bit like a cartoonist drawing the key features of a politician; and not like a camera slavishly recording pixels. Good UML tools don't just do the reverse engineering - they also help you express your big ideas, help you look at them from different angles, and help you turn them into plans, designs, and tests.

So I'm delighted, now that I'm working for a toolsmith, to be working on modeling tools. And yes, some of the tools are about reverse engineering from code - and they do in fact help you abstract the overall structure. But they are also about using UML to understand your users' needs better, and to help you meet those needs successfully.

My role is to write the user guides - not just at the mechanical level of what button to push, but also about how to make good use of UML in your project. So in this blog, I'm going to talk about that - and, I hope, hear from you how you use UML - and what you want from our tools.

 

BTW, I wrote a blog about domain specific languages a few years back.

Published Saturday, January 31, 2009 5:15 PM by Alan Cameron Wills

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Writing about UML - my favorite pastime! » Click & Solve said:

January 31, 2009 2:39 PM
 

Robin Hall said:

I’ve just recently caught up again with the UML world and have to admit to being pleasantly surprised. Not only have IBM created  what appears to be a huge group of varying modelling tools but Microsoft are also supporting it in Oslo!  Does this mean that the naysayers will finally accept the position of modelling, or still insist on ill formed criticism and snide comments?  Only time will tell!

Anyway, it’s great to have someone talking about the strengths of UML again.

April 15, 2009 12:02 PM
 

Alan Cameron Wills said:

Yes, we're going for modeling in two different ways. In the short term, we've got the DSL Toolkit that's out there as part of the Visual Studio SDK, and coming very soon (with VS 2010) the UML tools that are built on top of that. Then longer term, there's Oslo, where models are kept in a database.

April 22, 2009 11:41 PM
 

rch83188 said:

Having used modelling on several projects (without code generation)  the whole idea of having an executable model prior to implementation is vastly appealing.  Do you feel that Oslo will offer a template/blueprint oriented approach, i.e. a software architect specifies, executes and validates a model, deploys to the development team and tracks via code synchronisation, or are we not quite there yet, or is this even an optimal process of working? (I hope it is as a library of reference architectures is highly appealing)

Additionally, the later versions of UML support requirements modelling, do you see any obvious advantage in translating requirements into notation, i.e. does it improve requirements analysis and will Oslo support it?

May 5, 2009 7:17 AM
 

Alan Cameron Wills said:

VS SDK and Oslo both provide platforms on which you can build tools like that, but they may be a while in coming. Certainly it will be possible to build prototyping tools on top of both of these platforms.

So for example with VS Team System 2010 - Beta1 coming soon - you will be able to create models in UML. With a little extra work, you'll be able to design generators that will generate code and/or tests from the models. You could use these as your prototypes.

One thing I'm a little wary of is tools that provide a general round-trip experience straight out of the box, translating from code to diagrams and back again. The tools I and my clients worked with years ago (when I was a methods consultant) did that. What it really meant was that your diagrams are just a picture of your code - which has rather limited value, and isn't the best use you can put a diagram to. The diagrams are much better, I've found, at representing high-level concepts. The translation to and from code would be different for each different family of products. If I'm a designer of phone systems and I draw a class diagram, the way I'd expect it to turn into code would be different than if I design banking systems. So what we provide is the tools to make your own translators between models and code (or other stuff).

I've always found UML supportive of requirements modeling. Class diagrams are great for mapping out business concepts; activity diagrams are great for understanding what the business does, and what the system should do, quite separately from any implementation. You can even use sequence diagrams at a high level, to describe interactions between a system and its users.

May 5, 2009 9:00 AM

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required
Submit

About Alan Cameron Wills

Programming Writer, Visual Studio Team System

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker