Eclipse UML: Ein guter Kompromiss

17.03.2005
Von   
Bernhard Steppan arbeitet als IT-Chefarchitekt bei DB Systel GmbH (Deutsche Bahn) in Frankfurt am Main. Er hat 100+ Artikel und zahlreiche Bücher über C++ und Java verfasst. Er betreibt mehrere Blogs, unter anderem http://steppan.net, http://artouro.org und http://tourbine.com
Wer auf der Eclipse-Plattform Anwendungen professionell in der Unified Modeling Language (UML) modellieren will, dem bietet sich ein übersichtliches Produktspektrum. Zu den wenigen Werkzeugen zählt "Eclipse UML".

Zu einer universell einsetzbaren Entwicklungsumgebung fehlen der Eclipse-Workbench noch einige wichtige Funktionen. So wäre eine UML-Ansicht von Klassen- und Paketdiagrammen wünschenswert. Über die flexible Plug-in-Schnittstelle von Eclipse lässt sich dieses Manko jedoch schnell beheben. Hier setzt zum Beispiel Eclipse UML von der Firma Omondo an. Es handelt sich um ein vergleichsweise junges UML-Tool, das sowohl in einer kostenlosen Ausgabe mit der Bezeichnung "Free Edition" als auch in der kommerziellen "Studio Edition" erhältlich ist.

Zwei Versionen

Die kostenpflichtige Version des Plug-in unterstützt im Gegensatz zur freien J2EE und bietet Zusätze zur klassischen Datenmodellierung, erweiterte Einstellungen zur Codegenerierung sowie Auswertungsmöglichkeiten (Audits und Metriken). Zudem besitzt die Studio Edition weit reichende Reverse-Engineering-Funktionen und ist damit in der Lage, sowohl Sequenz- als auch Kollaborationsdiagramme automatisch zu erzeugen.

Diesem Test liegt Eclipse UML Studio Edition in Version 2.0.0 zugrunde, die kurz vor Redaktionsschluss auf der Hersteller-Homepage zum Download für Windows und Linux freigegeben wurde. Die Installation dieser Studio Edition ist denkbar einfach gelöst. Das Setup extrahiert das Plug-in sowie ein Deinstallationsprogramm in den Eclipse-Ordner. Zur korrekten Ausführung einer uneingeschränkten kommerziellen Lizenz muss nur noch eine gültige Lizenzdatei in das Core-Package des Tools kopiert werden.

Vor dem Laden des ersten Projekts sollte man die Grundeinstellungen des Programms überprüfen. Sie sind herstellerseitig teilweise ungünstig gesetzt. So ist es vor allem wichtig, die Reichweite (Scope) für das Erkennen von Abhängigkeiten auf das aktuelle Package zu begrenzen. Lässt man die Einstellungen auf dem vorgegebenen Wert "Project", sucht Eclipse UML bei der Analyse Abhängigkeiten im gesamten Projekt. Das Resultat ist drastisch und kann schon bei mittelkomplexer Software wie unserem Testprojekt (siehe Kasten "Wie getestet wurde") dazu führen, dass der Computer durch das Tool vollkommen blockiert wird.

Weiterhin sollte man die Option "Use property concept" deaktivieren. Sie ist sehr versteckt unter Window > Preferences > UML > Class Diagram > Class zu finden und sorgt dafür, dass Eclipse UML bei der Analyse eines Projekts in jeder nicht schreibgeschützten Quelltextdatei Javadoc-Tags einfügt. Dieser Vorgang kostet nicht nur unnötige Rechenzeit und ist irreversibel, sondern behindert auch die Zusammenarbeit mit Versionskontrollwerkzeugen. Durch den unerwünschten Eingriff wird an einer ausgecheckten Klasse auch dann etwas verändert, wenn der Entwickler inhaltlich nichts korrigiert hat.

Auch wenn man alle Optionen auf sinnvolle Werte gesetzt hat, wird schnell deutlich, dass das Plug-in sehr hohe Anforderungen an Speicherbedarf und CPU stellt. Besonders für größere Analysen benötigt es viel Zeit und Prozessorleistung. Für das zügige Arbeiten mit Eclipse UML ist daher ein schneller Computer mit viel Hauptspeicher notwendig. Zudem ist zu empfehlen, die Workbench mit sehr hohen Heap-Einstellungen zu starten, um Out-of-Memory-Fehler auszuschließen.

Bei richtigen Grundeinstellungen und ausreichend Computerleistung zeigt sich rasch das große Potenzial des Werkzeugs. Es fügt sich nicht nur optisch ausgezeichnet in die Eclipse-Workbench ein, sondern schöpft auch technisch die Möglichkeiten der Plattform gut aus: Die Entwickler haben neben dem Standard Widget Toolkit (SWT) als GUI-Basis auch die Eclipse-Frameworks Graphical Editing Framework (GEF) sowie Eclipse Modeling Framework (EMF) zur Verfügung.

Eclipse UML unterstützt alle UML-Diagramme der OMG-Spezifikation 1.4 und kann Diagramme mit drei verschiedenen Stilen (OMG, Eclipse und Omondo) darstellen. Das Plug-in lässt sich zudem so konfigurieren, dass es Diagramme entweder konform zur UML 1.4 oder zur UML 2.0 präsentiert. Es gehört zu den wenigen UML-Werkzeugen, die aus bestehendem Code durch ein Reverse Engineering automatisch Ablaufdiagramme (Sequenz- und Kollaborationsdiagramme) generieren können.

Diagramm schnell erstellt

Um diese Funktion zu nutzen, klickt man einfach auf eine Methode und wählt im Kontextmenü das Erzeugen des gewünschten Diagrammtyps aus. Eclipse UML analysiert daraufhin den dynamischen Ablauf ab diesem Einsprungspunkt und stellt ein Diagramm in erstaunlich kurzer Zeit dar. Dabei vermisst man allerdings, dass das Werkzeug keine Einstellung anbietet, um den Scope der Analyse einzuschränken. Das bedeutet, dass der Anwender zunächst darüber im Unklaren gelassen wird, bis zu welcher Tiefe das Projekt vom Werkzeug bei der Zusammenstellung des Sequenz- oder Kollaborationsdiagramms analysiert wird.

Neben diesem Manko lässt die Darstellung von Klassendiagrammen ebenfalls einiges zu wünschen übrig. Zum einen dauert es selbst mit großzügi- gen Heap-Einstellungen relativ lang, bis Eclipse UML ein einfaches Klassendiagramm aus vorhandenem Quelltext darstellt. Zum anderen kommt es bei der Präsentation komplexer Diagramme zu unschönen Überlappungen, die teilweise dazu führen können, dass sich Beziehungen überdecken. Schuld daran ist das Autolayout des Diagrammeditors.

Überraschungen beim Autolayout

Dieser Algorithmus sorgt auch dafür, dass der Anwender bei der Wahl des Autolayouts Überraschungen erleben kann: Wenn er die manuell ausgerichteten Klassen eines Diagramms automatisch anordnet, kann es sein, dass diese Funktion sein mühsam arrangiertes Diagramm so durcheinander wirbelt, dass die Arbeit umsonst war. Glücklicherweise haben die Entwickler an ein Undo dieser Funktion gedacht. Mit ihm lässt sich der Zustand vor dem Autolayout wieder herstellen.

Sonst ist von den verschie- denen Grafikeditoren nur Gutes zu berichten. Ist ein Diagramm erst einmal im Rohbau fertig gestellt, kann es mühelos gestaltet werden. Eclipse UML unterstützt diese Feinarbeit durch eine schnelle Darstellung, durch Hilfsmittel wie ein Gummiband und eine Gruppierungsfunktion. Grafikelemente können mit der Maus pixelgenau an einem Raster ausgerichtet werden. Auf einer Palette, die neben dem Grafikfenster angedockt ist, findet man alle nötigen Diagrammelemente. Ein Übersichtsfens- ter sorgt dafür, dass der Entwickler auch in sehr großen Diagrammen problemlos navigieren kann.

Wenn man während der Arbeit am Modell einen Blick in die Java-Dateien auf der Festplatte wirft, fällt auf, dass Eclipse UML direkt auf dem Quelltext arbeitet. Änderungen an einer Klasse zieht das Tool unmittelbar im Quelltext nach. Umgekehrt wirken sich Änderungen am Code umgehend im Modell aus. Ein eigener Generierungslauf ist nicht notwendig. Das bedeutet, dass ein Roundtrip-Engineering nicht nur problemlos möglich ist, sondern sogar in Echtzeit verläuft.

Wurden eine Reihe von Diagrammen erzeugt, möchte man diese natürlich auch wiederfinden. Dazu bietet Eclipse UML zwar eine Suchfunktion, die jedoch nicht darüber hinwegtäuschen kann, dass es an verschiedenen Diagrammübersichten mangelt. Schön wäre es zum Beispiel, wenn sich Diagramme nach Gruppen (fachlich versus technisch) sortieren ließen und es unterschiedliche Perspektiven für unterschiedliche Entwicklerrollen gäbe - hier wird im Vergleich zur Konkurrenz leider nur wenig geboten, was die Navigation im Modell unnötig behindert.

Neben den reinen Modellierungsfunktionen verfügt das Werkzeug über eine Reihe anderer Analysemöglichkeiten in Form von Audits und Metriken. Sie dienen der Qualitätssicherung des Projekts und funktionieren sehr performant. Beispielsweise lässt sich durch die "Metrics View" extrem schnell feststellen, welchen Umfang und Komplexität ein Projekt besitzt, wie viele Methoden überschrieben und ob die Empfehlungen über die Anzahl der Vererbungshierarchien eingehalten wurden. Die grafische Auswertung der Abhängigkeiten mit Hilfe des Dependency Graph View ist an sich ein nützliches Feature des Plug-in. Nur kann die Aussagekraft der Darstellung nicht besonders überzeugen.

Preis und Leistung stimmen

Unter dem Strich ist Eclipse UML ein sehr leicht zu bedienendes Werkzeug, dessen Funktionsumfang auch für den professionellen Einsatz ausreichen sollte. Eine uneingeschränkte Empfehlung verhindert lediglich die stellenweise ungenügende Performance und das Fehlen ausreichender Views und Perspektiven zur Navigation im Modell.

Aufgrund der schnell voranschreitenden Entwicklung des Tools ist zu hoffen, dass diese Defizite vom Hersteller bald erkannt und ausgeglichen werden. Schon jetzt ist das Preis-Leistungs-Verhältnis des Werkzeugs kaum zu schlagen. Vor allem das kostenfreie Plug-in ist eine echte Alternative zu vielen an- deren kostenpflichtigen UML-Plug-ins. (ue)