To me, UML is good for a few things.  First, it is a language which can be
used to communicate with others.  If I draw a UML diagram, anyone else who
understands UML diagrams will know precisely what I mean.  If I just
doodle circles and squares and things, they are up for interpretation.

It might be easier to just start coding in a language like Ruby, if you
are the only developer.  On a team, where you may all be working on
different areas of a project, being able to refer to a diagram for most of
your questions is a good thing.

On my team, if it is in UML, it is what gets implemented, and if it isn't
reflected in the diagram and you implemented it, you are wrong, no matter
how much better the code is.  Of course, I am always willing to change the
UML after some discussion, but the point is that it is your blueprint.  It
keeps me from installing a toilet where you think the kitchen is, from
running electricity through the sewage lines, from putting a stairway in
the center of a closet.

It's great for test-first programming.  You can write your test cases
against the UML.  It really helps keep you on track.

--Gabriel

> What good is UML?  I mean, it seems to me that especially with languages 
> like Ruby you could just code your OO system and then refactor as needed.
> You could even use Ruby as a prototyping tool to come up with an OO design 
> for your application and then code the final app in C++ or Java after