Jeff said:
I'm no expert on UML, but I have tried to use it to communicate with
coworkers, without much success.
Probably at least partially because nobody knows the language.
It seems to have been largely
influenced by the Smalltalk-derived, runtime-heavy school of OOP that is
now so popular.
Yeah, but you can "extend" it if you need. The little <<xxxx>> guys are
meant for that. StarUML has a couple "stereotypes" already defined for
C++ use if that helps.
I find that if I've written a design in UML before coding it that I can
usually slap it out rather quickly. On the other hand, I've written it.
Some things I think could help us write better UML are:
1) experiment first.
2) be as complete as possible (people often try to shorthand uml)
3) write proof code
The reason to do the last is that it is so easy to come up with a design
that looks great in UML, but doesn't work at all in code.
Another thing you can do is get a decent tool for writing it. I'm using
StarUML right now and am pretty happy with it.
Beyond that, you have to learn it, which is really hard (it's a
complicated language), get the team to learn it...you can't just draw a
diagram and expect people to get it. Like, what's the difference
between the black diamond and the white one? Developing a subset out of
UML to use within the team might be a good idea.
Really, as was mentioned, some people are visual and some otherwise. In
a team you're going to have both and have people that are both. You
need everyone to know what the code's supposed to be doing and look
like. So you really can't get away from UML, or something like it, even
if you, personally, work better without it.