Author: Irfan Habib
UML defines diagrams that can describe nearly every aspect of software, from class structures to individual procedural activities to collaboration amongst classes, and even how software eventually is to be deployed.
We will explore the features of the most popular UML editors, looking at four important factors: user interface look and feel, support for code generation and code import, conformance with the latest UML standard, and integration with the environment. We’ll compare them with the commercial product Rational Rose, which is the de facto UML editor of choice by commercial software developers.
Why is Rational Rose the standard for comparison? First, it not only provides an intuitive interface to do UML modeling, it also provides facilities to translate those models to actual source code. A developer, besides being able to conceptualize a whole project in form of class diagrams, can create source code directly, which enhances productivity and saves a lot of the developer’s time.
Rational Rose supports code generation for popular programming frameworks on Microsoft Windows, including Microsoft Visual BASIC 6 and Visual C++ 6 (ATL and MFC), the .NET Framework, and even for J2EE and J2SE. It also integrates in their respective IDEs.
Rational Rose can also help refactor or reverse-engineer legacy code, as it allows a developer to import source code written in the above frameworks, make changes to the UML models, and then re-generate the source code. Add a few touches to the generated source, and violà, the new software is ready! It can also reverse-engineer XML document type definitions (DTD) and generate them.
How well do open source UML editors stack up against that intimidating list of capabilities?
Unlike most open source software, Umbrello comes with complete documentation called the Umbrello handbook. One thing Umbrello lacks, however, is integration with KDE. It has no support for TrollTech Qt, or any KDE technology like Kparts. It does not integrate into KDevelop, which is the standard IDE for KDE. It is a standalone program, and has its own format for saving UML models, which is not compatible with the formats of other open source UML editors or Rational Rose, which is a huge drawback.
ArgoUML is a Java-based UML editor, so it doesn’t target any single desktop environment or platform. ArgoUML is available on every platform for which there is the Java Runtime Environment. The interface of ArgoUML is similar to that of Rational Rose or Umbrello.
One useful feature of ArgoUML is critiques — the software can offer critiques to your UML diagrams in relation to design issues, which result in better quality diagrams.
ArgoUML support almost the entire UML 2.0 specification. It supports only code generation for Java; it has no import facilities. It also lacks any kind of documentation.
However, ArgoUML is a fast-developing project, and a plethora of plugins and extensions exist for it. For example, there’s a plugin for OpenOffice.org that enables you to link UML diagrams to OpenOffice.org documents and easily create documentation for software, and an extension that lets you generate C# code from ArgoUML.
Gaphor and MonoUML
The Gaphor Project plans to be to the GNOME desktop what Umbrello is to KDE. It is in active but early development; it has not yet hit a 1.0 release milestone. Gaphor is the only tool developed for the GNOME desktop that supports most of the UML 2.0 specification, but it has no code generation or import support so far.
MonoUML is part of the Mono framework, and also under active development. It has code generation facilities for C#, reverse engineering facilities, and, in the future, expects to have full integration to the Mono framework.
Besides these four, there are other open source UML editors, but these are the most promising. Open source UML editors, which today try to mimic Rational Rose, need to distinguish themselves by supporting open source technologies such as code generation for GTK, TrollTech Qt, and Kparts, and offer integration with their respective desktop environments. Only with such features will OSS UML editors become widely used in OSS software development. When that happens, open source developers’ productivity will increase, as will the quality of their software.