26
votes

I prefer to jot down UML-diagrams on paper and then implement them using Java. It would be nice to have a utility which could create UML-diagrams for me which I may share on-line and include in the digital documentation. In other words: I want to create UML diagrams from Java source code.

The utility must be able to:

  • Run in Linux.
  • Handle Generics, i.e show List<Foo> correctly in parameters and return type.
  • Show class inheritance and interface implementations.

It's nice if the utility is able to:

  • Run in Windows and Mac OS X.
  • Display enums in some nice manner.
  • Generate output in a diagram format which I may modify using some other utility.
  • Run from the command line.
  • Restrict the UML generation to a set of packages which I may specify.
  • Handle classes/interfaces which are not part of my source code. It could include the first class/interface which is external in the UML diagram. Perhaps in another color to indicate it being a library/framework created by someone else.
  • Focuses on this task and doesn't try to solve the whole issue of documentation.
5

5 Answers

6
votes

One method that we've experimented with is a combination of UMLGraph and GraphViz. What we were doing at the time was making the UML creation an automatic part of our CruiseControl build: the javadoc would be built with UML diagrams built in. It is pretty slick.

I think you'll find that the UMLGraph documentation answers pretty much all of your questions. Specifically, you should be able to create the class diagram that you want from the command line.

2
votes

A few monthes ago, I wrote a simple tool named "java2dot". It doesn't handle all you requirements but it might helps.

http://plindenbaum.blogspot.com/2008/10/javadoc-is-not-enough-java2dia.html

2
votes

doxygen has almost everything you need.

0
votes

It's not clear if you want to create code from UML or reverse Engineer code into UML. If you want to create code from UML, the Netbeans UML project type is probably the easiest set of tools for Java.

If you want stand alone

StarUML is an older UML modeling tool. It follow most of the UML guidelines pre 2. It can handle generics, but only if you manually type them in. However, I don't think it correctly generates the generics if I remember correctly. You have to adjust the code after generation.

Although not free, I personnaly think that Umodel is worth the money if you do UML regularly.

-1
votes

ArgoUML by tigris.org: see here : it's multi-platform. If you prefer a GNU/linux app and you use KDE, you can use Umbrello.