I've only recently added UML to my toolkit, and I'm still learning it. To date, the Use Case and the Class diagrams have been most useful for me, though I've been using a form of the implementation diagram for about twenty years now. Just these two diagrams alone have made code design easier for me, and I plan to continue learning and applying UML diagrams in my designs.
Give a man a fish, he'll eat for one day. <br />Teach a man to fish, he'll drink all your beer.<br /> <br />Cheers,<br /> <br />Jeff (SCJP 1.4, SCJD in progress, if you can call that progress...)
I find that I make occasional use of: class diagrams, sequence diagrams, collaboration diagrams and state diagrams. I almost never use use-case diagrams, activity diagrams, component diagrams, or processor diagrams. I admit that they might be useful to others. "UML for Java Programmers" (http://www.objectmentor.com/UMLFJP) focusses on the first batch of diagrams and does not address the others. I wanted to create a book that had a high degree of relevance to Java programmers. I did not want to load it with a lot of information which they would not find useful.
Originally posted by Robert Martin: I almost never use use-case diagrams, activity diagrams, component diagrams, or processor diagrams. I admit that they might be useful to others.
I find component diagram very useful as a second step (after use case/event flows). Identifying classes on a per-component basis takes less effort compared to identifying all classes in one go considering all requirements enmasse. Here is an example: http://www.mycgiserver.com/~nsenthil/articles/auctiondbdesign.html Regards, Nalla
I find that it depends on where you have entered the development process and what you want to accomplish has the greatest bearing on which diagrams you find most useful. If you are trying to develop the business process, and find out what you want the program to do and the overall flow of the process, use-cases and activity diagrams are quite beneficial. Use cases also have the added benefit of being able to be use to define test cases. However if you are given a set of requirements and are told to create the application, you don't need to recreate these diagrams, instead use the class diagrams, collaboration diagrams and sequence diagrams. If you don't like to do UML or feel that the diagrams are just going to be used for documentation purposes, use the sequence diagrams. The will tell you alot about the system.