Open source UML editors lag proprietary leader

57

Author: Irfan Habib

Normally when one decides to contribute to an open source project, the first step is to download the sources and study them. This can be a tedious job, especially if the project is large. It would be more useful if the project leaders would provide a graphical representation of the project, which would enable current contributors to keep an overview of the developing software, and would help potential contributors to see how each part of the software is interconnected with other parts. Most commercial software developers provide such graphical representation, and do so in a standard manner, with the Unified Modeling Language (UML). However, only a minuscule number of projects in SourceForge.net (which boasts of being the largest open source projects repository) describe their software in UML. Part of the reason may be that OSS UML editors are not up to the job.

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.

Rational Rose

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?

Umbrello

Umbrello UML Modeler, which comes with the KDE Desktop, is one of the most feature-rich open source UML editors. It supports almost the entire UML 2.0 specification, the latest revision of the UML standard. It supports code generation for ActionScript, Ada, C++, CORBA IDL, Java, JavaScript, PHP, Perl, Python, SQL, and XMLSchema; however, only the code generation for C++, Java, and Python is truly useful, as these are the only languages which can be used for serious software. It has support for reverse-engineering and code import only for C++ code. The software’s user interface is similar to Rational Rose’s.

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

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.

Conclusion

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.