Dec 6, 2011

Quick and Simple UML with UMLet

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.

About the Author

Object Partners profile.
Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blog Posts
An Exploration in Rust: Musings From a Java/C++ Developer
Why Rust? It’s fast (runtime performance) It’s small (binary size) It’s safe (no memory leaks) It’s modern (build system, language features, etc) When Is It Worth It? Embedded systems (where it is implied that interpreted […]
Getting Started with CSS Container Queries
For as long as I’ve been working full-time on the front-end, I’ve heard about the promise of container queries and their potential to solve the majority of our responsive web design needs. And, for as […]
Simple improvements to making decisions in teams
Software development teams need to make a lot of decisions. Functional requirements, non-functional requirements, user experience, API contracts, tech stack, architecture, database schemas, cloud providers, deployment strategy, test strategy, security, and the list goes on. […]
JavaScript Bundle Optimization – Polyfills
If you are lucky enough to only support a small subset of browsers (for example, you are targeting a controlled set of users), feel free to move along. However, if your website is open to […]