Tools, Process and More Reading
What sorts of UML tools are available? Well, when working with an analyst or customer to put together an initial object model in the form of one or more class diagrams, my favorite tools are colored sticky notes, flipcharts, and marker pens. Whiteboards are the next best thing; a digital camera to capture the result before it is erased by a helpful cleaner is useful in this case.
For refining object models, you can use tools that enable you to draw UML diagrams and generate some of the Java code for you, or use tools that parse Java source code (or even bytecode) and produce UML class diagrams from it. The best UML-enabled products create Java code as you draw the UML diagram, and immediately update the UML diagram if you edit the Java code. One of these products was used to produce the diagrams in this article, TogetherSoft's Together ControlCentre. Andy Carmichael and Dan Haywood's excellent book demonstrates how to get the most out of tools such as Together1. You can use the free Together Community Edition4 to try out various Java source code constructs and see what it might look like in UML.
Object modeling with UML is obviously only part of a larger software-development process. Feature-Driven Development3 is a process in which object modeling is used to produce just enough of a common, shared, overall understanding of the structure of the problem before going full steam into coding.