FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Architecture Blog: On Using UML
Architecture & Design
PATTERN LANGUAGE

Modeling, Managing, Making it Right.

by Jonathan Erickson
IF YOU BUILD IT

... Will they Come?

by Arnon Rotem-Gal-Oz
September 19, 2006

On Using UML

A few days ago Silvia (one of this blog's readers) sent me a question regarding a (UML) deployment diagram she was working on. She wanted to know if the UML was good enough. I answered that it was good enough because it helped convey the point she was trying to make. (I also let her know about a couple of other UML features she can use to make it clearer, but that is besides the point.)

The interesting question this raises is what are you using UML for?

Most of the time I stick to the UML as a sketch camp. If you use UML in this mode it doesn't really matter if you are fully compliant with the UML spec as long as you can get your message across. UML is beneficial as many people are familiar with the notation. (As a side note I'd say that when presenting to non-developers UML can sometimes cause more confusion than help as the notation can seem cryptic to non technical people.)

We have development groups that use UML statecharts to general (real-time) parts of real-time systems. I guess that many (not all, maybe not even most) real-time systems have a relatively simple logic (what makes them complex is the dead-lines, jitter requirements etc.). In these scenarios you can create a state diagram to encompass all of the system's state (and these get real ugly, real fast as well). I can't imagine that happening for a CRM system, for example.

The point is that unless you are going to generate major parts of your application, I don't see a real reason to try to be fully compliant to the UML standard--because the benefit you get from that is rather low. I think that it is more important to use UML to express high-level decisions and design. Then, (if needed...) reverse engineer the code to get detailed design. if you are doing detailed design in UML you'd probably be much quicker coding it anyway.

There is a place for code generation using Domain Specific Languages (which, by the way, you can implement on top of UML 2.x) but this has a lot of other problems; see my post on Domain Specific Modeling.

P.S.
This is probably a good opportunity to remind you that you can send design/architecture questions you have to ask@rgoarchitects.com. While I don't promise I'll solve your problem, I will try to at least give some directions and if the issue is interesting to the general public, I'll post my view on the matter and try to answer on this blog.

Posted by Arnon Rotem-Gal-Oz at 02:19 AM  Permalink




 
INFO-LINK