Tuesday, December 11, 2012

UML Diagramming Tools

I'm a big fan of UML -- especially class diagrams. I'm also a big fan of free. So I figured I'd put those things together and give you a quick review of some of the free UML tools out there!

UMLet

UMLet (presumably a play on the word "omelet", which is probably one of the only words for which you could substitute "UML" and still make it sound like something you'd recognize) is one of the more popular UML authoring tools out there. It's a Java app, and you can tell by the look and feel.

The idea behind this app is that you drag and drop new objects onto the canvas, and then edit them using simple wiki-style text entry. For example, here's what you'd write for a simple class, along with the way it appears in the class diagram.

/Animal/
--
+ name: string
--
+ eat(): void
+ drink(): void
bg=light_gray

Lion
--
+ roar(volume:int): void
bg=light_gray
Example of an UMLet class diagram

Honestly, I just haven't been able to get into the flow of this app enough to be productive with it. The way you edit the diagram objects just isn't natural for me. The diagrams aren't that pretty either. On top off all of that, their website is overflowing with advertisements, some of which appear as a large "Download" button, which will likely trick you into downloading something other than UMLet. Now that you've been warned, if you're still keen on visiting the UMLet site, I won't stop you.

You might enjoy this app. Many people do. It's not my cup of tea.

StarUML

I've used StarUML for years, and really like it. As a programmer, this one appeals to me, because it's built around UML specifically. It's not a general-purpose diagramming solution like Visio or LucidChart -- it's a tool that's made only for creating UML diagrams.

You can edit the aspects of your UML objects using property pages (kind of like Visual Studio), where you can manually specify things like name, visibility, type, etc. The UML model is also editable straight on the diagrams (e.g., click on a class object, and edit the text), and it'll parse out the lines into an actual model. In other words, if you enter something like:

+ roar(volume:int): Sound

… it will actually parse those elements into the model, so that they appear in the corresponding fields in the property pages.

Example of a UML class diagram in StarUML

This app respects the model. You can't just type any ol' text in the objects. That gives me a sense of control, but also allows it to do some snazzy things like code generation. Incidentally, I built a code generator for ColdFusion, if you're interested.

Update - StarUML had gone a number of years with no updates, but got some fresh wind in its sails in 2014 as it saw development of version 2. I'm delighted to see that it's back in full force with a slick new interface and new features. It's also now a paid product, although you can download and evaluate it first.

StarUML has a bit of a learning curve. So if you're looking for something to quickly sketch out a few ideas, you might prefer something else. But I like this one because the formal structure, the ability to generate code, and the ability to even reverse engineer in some cases.

Lucidchart

Lucidchart is a general-purpose diagramming tool, but has pretty good support for creating UML diagrams. They've got a paid edition, but the free version lets you do quite a bit. It's an online tool, whereas UMLet and StarUML are downloaded apps. If you keep up with this blog, you've seen many Lucidchart-produced UML class diagrams around the Hit the Bits! articles.

This one is very WYSIWYG. You drag UML objects onto the canvas, click into the different sections -- like class name, attributes, and operations -- to edit them. Unlike StarUML, Lucidchart doesn't require you to strictly adhere to UML conventions, so you can put whatever you want into the fields, like comments, numbers, or the lyrics to that new Christmas song you've been secretly writing.

Example of a UML class diagram in Lucidchart

This is the diagramming tool that I use the most these days. You can whip up those diagrams rather quickly, and the output can looks good to me, especially if you spruce it up with gradients.

Your Turn

What UML tools have you used? Why do you like them?

FTC 16 CFR, Part 255 Disclosure: I have no material connection to these UML tools – I've simply used them and thought you might want to know about 'em!

No comments:

Post a Comment

Profile Picture
Dave Leeds
My Hobbies:
  • Programming
  • Cartooning
  • Music Writing
Full Profile