UML diagrams are used during (almost) the whole software product development life cycle: from requirements analysis (use case diagrams) to deployment (deployment diagrams). In this post I will review the freely available Omondo UML plugin for Eclipse. Recently a version for the latest Eclipse 3 became available. In a forthcoming post, I’ll present a more indepth howto on the installation and its use.
In this review I will mainly focus on the implementation phase, i.e. the development and documentation of Java code using UML. In my opinion, two diagram types are indispensable here:
- Package & class diagrams, representing the static relations and structure between the packages and classes
- Interaction diagram, representing the dynamic relations = behaviour, being realized as either collaboration or sequence diagrams.
Drawing such diagrams using e.g. Visio 2003 (Windows) or dia (Linux) has serveral drawbacks:
- Method names, attributes and so on have to be typed in twice
- Model/documentation and code run out of sync easily
- Reverse engineering is very laborious
- Tools not integrated in development environment
Consequently, the use of UML diagrams is often much less useful than it could and should be and hence quite often neglected all together, unfortunately.
Installation with the auto-installer is straightforward and from then on everything worked smoothly on my Eclipse 3.1 base-installation on a Pentium III 1 Ghz with 640 MB of RAM.
The features supported in the free edition are listed in this table on the Omondo website.
Some more details I “discovered” during evaluation:
- Reverse engineering
- Generate class and package diagrams from source
- Inheritance, association and dependency exploration
- Generate diagrams all in once or in a stepwise fashion. Many options and much flexibility is offered via context sensitive menus
- Reverse engineering from byte code (!!) is possible, although I did not try this myself at home 😉
- Diagrams are clear and highly customizable, such as visibility and per class sorting of methods and attributes
- Forward engineering
- Code (classes, interfaces, methods, attributes, documentation) is being generated when designing/drawing a UML diagram class diagrams
- A wide range of UML diagrams supported
- UML Activity Diagram
- UML Class Diagram
- UML Collaboration Diagram
- UML Component Diagram
- UML Deployment Diagram
- UML Object Diagram
- UML Profile Diagram
- UML Robustness Diagram
- UML Sequence Diagram
- UML State Diagram
- UML Use Case Diagram
- Export of diagrams in various formats. By default, diagrams are saved as
.ucdfiles, which are in fact XMI (XML Metadata Interchange) based files. This is most likely due to the underlying Eclipse Modeling Framework (EMF), but quite standard in “modelling land” (e.g. Rational Rose understands this format as well). In addition, diagrams can be exported as
- Window Metafile
- CompueServe Graphics Interchange
to be incorporated in other documents.
Conclusions and summary
Although the free edition has some serious limitations, such as no support for projects under CVS source control nor generation of interaction diagrams with reverse engineering, the package offers enough already to make it worthwhile to install (and use!). It brings almost full round-trip engineering at no cost. The tool could have saved me quite some time during my last project!
This plugin takes away all the disadvantages working with UML diagrams as they were mentioned in the introduction. Although the plugin takes some time to get used to (typically one or two days), I found it much more pleasant to work with than e.g. the freely available Fujaba Tool Suite. Diagrams are highly customizable and the performance is reasonably good. Synchronization between diagrams and code can be done at any point in time. The free version does not pretend to be a fully-fledged UML package, hence it is not offering advanced/professional features such as automated design pattern recognition nor a selection of design patterns from a library when designing a model. Of course, this is unreasonable to expect from a free edition, however the limitation not to be able to work with Team (i.e. version controlled) projects is a rather severe one and quite annoying, in my humble opinion.
The freely available version makes me very curious to work witht the enterprise edition. From my experience thus far, the enterprise edition will be worth the investment.