UML is best when used informally. I find that some bits and pieces, like class and sequence diagrams, are useful for sketching ideas and communicating them.<p>But of course, that is exactly the opposite of what UML set out to achieve: a system so formal and complete that it could be used to generate code automatically.