ABIS Infor - 2013-01

Free UML drawing tools

Ludo Van den dries (ABIS) - 1 January 2013

Abstract

If you want to draw UML diagrams, and you don't want to spend the money, which tools could you use? Here are some options.

Drawing UML?

If you are developing according to some 'full ceremony' process, then you will probably use a sophisticated commercial environment (e.g. Rational Software Architect, Enterprise Architect) allowing model driven development, round trip engineering and the like, and the UML drawing capability will be integrated in your environment.

On the other hand, if you are into the Agile approach, you will only model and draw 'as far as needed', so the question could even be: do I need UML at all? Most Agile advocates emphasize that some form of modeling and diagramming remains necessary to ensure communication, creative thinking etc, and so UML could be useful, probably at a less formal and less systematic level ('UML as a sketch', to quote Martin Fowler), e.g. for domain modeling or for designing complex interactions.

In the Agile context, the only UML tool needed might well be a whiteboard: it is very accessible and visible to the team, and not too picky about the things you put on it. Moreover some people pretend that (curly) hand drawing stimulates creative thinking. And if you want to preserve your drawing for a longer period, just make a snapshot of the whiteboard (avoiding reflections in the picture seems to be the biggest challenge ...).

For those who really want to draw UML with a (free) software, there still are several possibilities (free software, open source software, community editions, etc). A comprehensive list is found in the Wikipedia. We just mention a few of them.

ArgoUML

ArgoUML was one of the first comprehensive efforts into open source UML modeling tools (written in Java), and it included some interesting project and team support features, design checking and code generation options, but it did not evolve fast enough, and it never made the switch to UML2.

In 2003 a split-off took place into a commercial product, called Poseidon.

astah*

Formerly called Jude, now astah* (the asterisk is part of the name it seams), this is a commercial closed source product, but it does have an interesting free community edition. The commercial version does a lot of diagrams (UML, DFD, flowchart, mindmap, etc) and supports some code generation / reverse engineering, but the community edition is stripped down to basically a UML(2) modeler.

It has a rather intuitive user interface and repository, and produces good looking diagrams in a flexible way: e.g. in the class diagram you can choose to show/hide attributes, their visibility, their type, etc., and when drawing association and message arrows, you can move the corresponding text with respect to the arrow.

Especially the sequence diagram part is well done: e.g. inserting extra messages in the middle of the drawing and adapting the layout is no problem (many other UML tools fall short in this area).

Diagrams can be exported in raster formats (BMP, PNG, JPG), unfortunately not in vector format.

The program has a reasonably small footprint (20 MB) and does not require an installation (just download the java code and run).

UMLet

UMLet is an open source UML drawing tool (written in Java). As a drawing tool it is rather limited, and it does not have the repository like in astah*, but from a programmatical point of view it presents some interesting aspects.

The contents of a symbol (e.g. the attributes & operations in a class) are specified in a declarative way.

The user can even modify/add symbol templates (e.g. the shape of the class symbol and the number of sections).

You can even modify the drawing by editing the Java coding at runtime (e.g. to add an extra border around the class symbol).

If you take a look at the (open) source, you will admire it as a showcase of Java design, including many design patterns.

Noteworthy is also the UMLet diagram storage format (*.UXF files): it is XML based and well documented.

UMLet is also available as an Eclipse plugin.