Software Development with Linux

UML modeling tools reviews Umbrello

SUN, 01 FEB 2009

To continue in my series of UML modeling tools reviews, I've tried Umbrello version 2.2.0 using KDE 4.2.00 (which is the latest version available in Kubuntu 8.10).
Umbrello UML Modeler is a Unified Modeling Language diagram program for KDE. -- Umbrello's website
Again, I'll use the UML diagrams displayed in the Unified Modeling Language's wikipedia page as my standard diagrams templates. You can also skip to the end if you want the conclusion about Umbrello.

Let start with the class diagram.
From all the UML tools I've tried, it's Umbrello that does the best class diagram. Everything you see in the diagram was done using the menu. Umbrello offer a great integration with UML. I've not manually typed "+ balance : Dollars = 0" in the edit box. I've chosen to add an attribute, then selected its datatype (in this case, adding the custom Dollars datatype), and finally selected the default value. This is something that every UML modeling tool should have. In fact, every great UML modeling tool do it this way!

Now the problems starts. For the component diagram, I couldn't add the ports connectors nor the actor. Even if the actor icon is available in the use-case diagrams, Umbrello doesn't allow you to use elements from other diagram types. This probably help Umbrello provide some great features (which will be discussed later), but this is a big show stopper for drawing the diagrams correctly.

I didn't even tried to draw the composite structure diagram, because this isn't a diagram type offered by Umbrello. And since it's impossible to combine elements from different diagrams into one, I don't know how I could do it.

Again, problems occurred for the deployment diagram. First, it wasn't possible to add the actor. Second, which is the biggest issue, you cannot "bring to front" or "push to back" elements! This means that if you want to superpose elements, you need to create them in the right order. Otherwise, it won't display correctly. Like the "MySQL database" component and the "Database Server" node in my diagram, I cannot decide which one should be on top of the other.

Umbrello does not offer an object diagram.

The package diagram is doable, but it's tricky. You can't create a new package directly. You must create a "subsystem" (which is a stereotype of a package diagram), then remove the stereotype from the properties of the package. I don't know why they've done it this way. The other problem I've encountered, is that you can't put the arrows (relations) where you want. I personally find that it create a clearer diagram when the arrows are in the middle of the elements, when possible. Unfortunately, Umbrello place the arrow for you and you can't move it. This is true in all the diagrams, not just in the package diagram.

The activity diagram is OK, if we don't care about the arrow placement issue. The "fork/join" bar didn't displayed correctly. Instead, this black box was shown. I think that is may be a problem only with my configuration (KDE version, etc.). But this prevent me from using it anyway, which is a bad thing.

I've found another problem, again, related with the arrows. They don't follow the elements they are attached to. Normally, one would assume that if you move the final node, any arrow pointing to it would follow and stay connected, on both end. This isn't the case in Umbrello The arrow stand still. Again, this is true for all the diagrams.

Another good example of how bad the arrows management is, it's my state diagram. I can't move the arrow where I want. This result in an unreadable diagrams. That's awfull.

The use cases diagram was an easy one. But, don't move your elements!

I didn't tried to do the the last diagrams (communications, interaction overview and sequence). Since they aren't available "as-is" in Umbrello, I don't think I could do them.

So, even if Umbrello looked promising at first, there too many problems with the diagrams to be heavily used in day-to-day software development. This is unfortunate, since Umbrello include a couple of interesting features :

  • Automatic code generation (Ada, C++, C#, Java, perl, PHP, Python, Ruby, etc.)

  • Import classes

  • Import project (Ada, C++, IDL, Java, Pascal and Python only)

I can only hope that Umbrello's development continue, so we can one day have a great open source UML modeling tool available.