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.

Related Blog Posts
Natively Compiled Java on Google App Engine
Google App Engine is a platform-as-a-service product that is marketed as a way to get your applications into the cloud without necessarily knowing all of the infrastructure bits and pieces to do so. Google App […]
Building Better Data Visualization Experiences: Part 2 of 2
If you don't have a Ph.D. in data science, the raw data might be difficult to comprehend. This is where data visualization comes in.
Unleashing Feature Flags onto Kafka Consumers
Feature flags are a tool to strategically enable or disable functionality at runtime. They are often used to drive different user experiences but can also be useful in real-time data systems. In this post, we’ll […]
A security model for developers
Software security is more important than ever, but developing secure applications is more confusing than ever. TLS, mTLS, RBAC, SAML, OAUTH, OWASP, GDPR, SASL, RSA, JWT, cookie, attack vector, DDoS, firewall, VPN, security groups, exploit, […]