Quick and Simple UML with UMLet

Introduction to UMLet; a free simple tool for creating UML diagrams from the stand alone app or from Eclipse with the plugin..

Object Partners

I like using UML but I’m not fond of most of the tools used to create the diagrams. They tend to be very heavy and/or difficult to use. Enter UMLet. This is a great tool for quick UML diagraming. The interface isn’t fancy but its easy to use and fast. Here are some of the things I like about it:

  • Double click any element to create a copy. Its a small thing but it saves a lot of time.
  • Edit an element’s properties in a simple text box. This includes everything from changing line style and arrow type to creating an entire diagram.
  • You can email a diagram directly from the application.
  • It saves diagrams in an XML format and can export to many others: bmp, eps, gif, jpg, pdf, png, svg.
  • There is an Eclipse plugin. Again, nothing fancy. It just allows you to create and edit diagrams from within Eclipse.
  • There are a lot of examples.
  • Its free.

The ability to modify element properties in a text box saves an amazing amount of time. There are “all in one” palettes (diagram templates) for activity and sequence diagrams that represent the entire diagram as a single element. Using the all in one sequence diagram element you can create a sequence diagram with object foo of class Foo sending object bar of class Bar a message named doIt by setting the properties to this: _foo:Foo~id1_|_bar:Bar~id2_ id1->>id2:doIt Creating that entire diagram took 3 mouse clicks (double click on the palette element to copy it to my diagram then click the properties box to edit) and typing the text in the properties box. It doesn’t get much easier than that. The first line defines the diagram’s lifelines. ”foo:Foo~id1” means create a lifeline with the label foo:Foo underlined (the underscores) and give it id1 for future reference. Each additional lifeline is pipe delimited. Each of the remaining lines defines a message. “id1->>id2:doIt” means create a message between id1 and id2 (the IDs assigned to the foo and bar lifelines) using a solid line (the dash) with an open box arrow on the right side (the double arrow) and label the line doIt. To change the solid line to a dashed line replace ->> with .>>. To change the open box arrow with a closed box arrow replace ->> with ->>>.

Setting the properties in the text box does take some getting used to. The only way to know what properties are available is to look at the elements in the palettes or the examples. It doesn’t take much effort to figure out though and there is a link to the examples right in the help menu. You will probably make up the time spent figuring out the properties with the time you save creating your first diagram.

You can also create new element types. This is more complicated but there is a nice tutorial you can navigate to right from the Custom Elements menu. UMLet provides a decent interface for this with a window to define properties for your element, a window to define behaviors which is done using java code, and a preview window. I haven’t had to do this as they provide all the elements I’ve needed in the default palettes.

UMLet is light weight. If you want to generate code from your diagrams or vice-versa, or you want a tool to verify your UML is strictly correct this isn’t the tool for you. UMLet does not do any type of validation. If you just want to quickly and easily create diagrams then UMLet is worth a try.

Share this Post

Related Blog Posts

JVM

Java Synchronization Method Performance Comparison

November 29th, 2011

Compares the performance of the various thread synchronization mechanisms provided by Java.

Object Partners
JVM

Brief Introduction to REST

November 9th, 2011

This is from a guest lecture that I delivered to a web-programming class at Bethel University this past month.

Object Partners
JVM

Eclipse Service Release Adds Support for Java7

October 6th, 2011

Just last week the Eclipse group released a service release to their Indigo version, including support for Java 7.

Object Partners

About the author