Picking the Right UML Modeling Tool

Posted by Keith McMillan

February 26, 2008 | 3 Comments

With the growing popularity of agile development philosophies, UML modeling has taken a back seat in a lot of development shops. I still believe that modeling has it’s place, despite the fact that this has puts me at odds with a number of practitioners I’ve run into in the last few years.

UML modeling allows me to organize and plan out my thoughts for large systems, and share them easily. I’m thinking of those systems where extensibility and maintainability are important. It creates artifacts that allow others who come after me (or, for that matter, me in 6 months when I’ve forgotten) to understand the concepts and structures in the systems I build without having to pore over the code to do so. I also find when I’m trying to understand existing code, and there exist no good documents to describe that code, creating models helps me put the whole enchilada down in front of me at once, where I can get a sense of it.

As I mentioned, a good number of practitioners I run into today think that modeling does not need to happen, ever, and this is just wrong-headed. But let’s assume for the moment that you think perhaps you want a model for one of the reasons I mention, or for one I didn’t. Which tool should you use? The answer depends on what you’re trying to accomplish. Just as you wouldn’t drive a nail with a screwdriver, you want to pick the appropriate tool for the job you’re trying to accomplish. I’m going to talk about several popular modeling tools: IBM Rational Rose, IBM Rational Software Architect, Sparx Systems Enterprise Architect, and Borland Together Control Center.

IBM Rational Rose

IBM’s Rational Rose is the oldest UML modeling tool (some of us prefer the term “mature” thank you very much). In fact, Rose existed before the UML itself did. Rational Rose was for a number of years the only UML modeling tool on the market, so when alternatives came along, they were obviously competing on price, which made Rose the most expensive option. Rose never really lost that impression of being the most expensive tool on the block, and that caused people to look in other directions. I don’t know what it costs today, but the last time I looked, there were more functional tools that cost less.

Rose is a good tool for creating all the typical UML diagrams, and it integrates with the rest of the Rational tool suite, such as Requisite Pro for managing requirements. This creates a well-rounded, if expensive, complete solution. Rose supports code generation for a number of languages, including C++ and Java.

Rose’s team support is a weak spot. You can break your model up into several smaller controlled units, and you can check each of these into a version control system, but they are binary files. Rose provides support for differencing model elements, but it’s difficult to use. The best way to use Rose in a team environment is therefore to do exclusive (i.e. locked) checkouts of the controlled units.

Overall assessment: Rose wouldn’t be my first pick for a new job, but it’s a serviceable tool that gets the job done.

Borland Together Control Center

Together Control Center’s tag line is “The Code Is The Model.” I should probably say out of the gate that I disagree philosophically with this, and rather strongly. If I wanted to read the code, then I wouldn’t be looking at the model. Models are useful as abstractions from your code, a way to step back and view the big picture. It’s useful to create a model to explore ideas and do analysis that may never result in actual code that you’d use. TCC doesn’t give you the ability to do that, because they’re not kidding about the code being the model.

When you create a class in TCC, it creates a class in your programming language, that’s just the way it is, because that’s where TCC keeps the class part of it’s model. Similarly, when you create a method in your class in TCC, the method is created in your class. As I mentioned, I view this as fundamentally wrong, models and code are different levels of abstraction, and should remain so.

But I’m not completely against TCC in every situation. While many UML tools allow you to reverse engineer or otherwise synchronize your static model (packages and classes) with your code, TCC is the only tool that can generate sequence diagrams from source code on the fly. This makes it an extremely valuable tool when you have a mass of complicated code that you are trying to understand, and no documentation to go with it. I’ve used TCC extensively for this purpose, and given the choice, I wouldn’t pick any other tool to help me with this particular problem.

As with Rose, TCC supports all the fundamental model types, but lacks the integration with other tools, such as requirements management, that would provide a “complete solution” if you believe in integrating all your tools. Also as with Rose, TCC is not inconsiderably expensive.

Overall assessment: TCC is the go-to tool for reverse engineering existing code, but is not a suitable tool for general UML modeling, because of it’s insistence on the model being stored in the code.

Rational Software Architect

Rational Software Architect (RSA) is a UML modeling tool that integrates into the IBM WebSphere Studio product, i.e. Eclipse. It adds modeling capability and tight integration between code and the model, but not like TCC: you aren’t obliged to create code for model elements when there really shouldn’t be any. RSA is the latest version of the previous IBM XDE tool.

RSA provides all the standard UML modeling capabilities, but this time within the IDE rather than in a stand-alone tool. This allows easy synchronization between code and model elements, even to the point of allowing RSA to automatically keep elements in sync. All this comes, once again, at a considerable cost.

Overall assessment: Functional tool, a good choice if you or need to keep your model closely in sync with your code.

Sparx Systems Enterprise Architect

Enterprise Architect (EA) is a UML modeling tool that’s produced by Sparx systems, an Australian firm. Enterprise Architect has pleasant distinction of being very reasonable in price, in contrast to our other contenders. Even better, this frugality doesn’t come at the expense of functionality. EA supports all the standard UML diagrams, as well as several useful extension types. It provides reasonable requirements tracking capabilities, including traceability support, allowing you to trace features to requirements, to implementation and tests.

EA comes in a number of versions, all with price points less than $300 for a single seat/ With the Corporate edition, you have the option of storing your model in a relational database server (PostgreSQL), which enables more than one person working on the model concurrently. I’ve used EA in this configuration for years, and have to say it really works.

Overall assessment: Cheap, more functionality than the competetion. What more can you ask for?

If you haven’t already guessed, I’m a fan of Enterprise Architect, and it wins my seal of “preferred tool for general modeling.” If you’re looking to keep your model and code closely synchronized, then perhaps you should be looking at Rational Software Architect. If you need to reverse-engineer your code into sequence diagrams, Borland Together Control Center is the tool of choice, hands down. If you’ve been modeling for a while, you may have Rose models around, and might wish to continue using Rose. That’s just fine but I wouldn’t start a new project with Rose today.


RSS feed | Trackback URI


Comment by Yanic
2008-02-27 12:55:27

Hi Keith,

Nice overview of general purpose UML-tools.

Since you mentioned it, hitting a nail with a screwdriver is indeed the wrong approach, so how about considering a specialized tool for your UML?

I found that general purpose UML-tools have pretty low usability is some regards, especially when all you want to do is draw or update a couple of sequence diagrams – quickly.

That’s why I rolled my own : Trace Modeler is a smart and easy to use editor for UML sequence diagrams.

It only does sequence diagrams, but it does them really well I think.

It’s main benefit is that it combines drag & drop with full automatic layout. This means that you are free to focus on the content, while the tool takes care of all the rest.

It has some other neat features too, like control flow highlighting, smart comment connectors, call inlining, easy scrolling and zooming, a special mode for presentations, etc.

If you’re in a hurry, here’s a 30 sec demo of Trace Modeler in action.

Let me know what you think of it, I’m always happy to get feedback!

Best regards,

Comment by Keith McMillan
2008-02-28 20:30:16

Thank you Yanic for your comments. I agree that ease of use is a nice feature to have in a UML tool, and I will be sure to check out yours. As I’m sure you appreciate, there’s been a proliferation of these tools in the last few years, and I only had time to cover the big boys.

Trackback by What To Fix
2008-02-27 20:00:16

Welcome new Blog Friend!

The great thing about working with a large client is the chance to meet a lot of other practitioners. Since I’ve started with my last major client, I’ve met several people who seek to help teams run faster using Agile…

Name (required)
E-mail (required - never shown publicly)
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> in your comment.