Aus Linux-Magazin 12/2010

Sechs UML-Tools im Vergleich

© leicagirl, Photocase.com

Ein Bild sagt mehr als tausend Worte – auch bei der Software-Entwicklung. UML-Diagramme beschreiben Programmabläufe und stehen Anwendungsarchitekten hilfreich zur Seite. Fünf freie und ein proprietäres Tool stellen im Folgenden ihre Zeichenkünste zur Schau.

Mit Papierserviette und Kugelschreiber hat schon manches tolle Programmierprojekt angefangen. Wer seine Pläne gern etwas strukturierter notiert, landet schnell bei der Unified Modeling Language (UML, [1]). Die von der Object Management Group (OMG) entwickelte grafische Notation für die objektorientierte Software-Entwicklung eignet sich sowohl zur gemeinschaftlichen Diskussion und zur Analyse am Whiteboard als auch für die spätere Dokumentation.

Damit Gedanken und Pläne die richtige Form annehmen, unterstützen UML-Tools den Anwender beim Zeichnen der Diagramme. Einige Testkandidaten setzen dafür auf Baumstrukturen, was beispielsweise den Vorteil hat, dass der Anwender eine Klasse nur an einer Stelle umbenennen muss, um zugleich alle Vorkommen eines Datentyps zu ändern.

Um den Rahmen des Artikels nicht zu sprengen, beschränkt sich dieser Test auf zwei Diagrammtypen. Alle Kandidaten sollten anhand eines Klassen- und eines Sequenzdiagramms ihr Können unter Beweis stellen (siehe Tabelle 1).

Einige UML-Programme lesen existierenden Code ein und übersetzen ihn in UML-Elemente (Reverse Engineering). Die meisten Tools beschränken sich dabei auf Klassen. Sie erzeugen keine fertigen Diagramme, sodass der Anwender selbst Hand anlegen muss. Einfacher ist der umgekehrte Weg, also das Erzeugen von Code aus vorhandenen UML-Klassendiagrammen.

Der Austausch von Modellen und Diagrammen zwischen verschiedenen Modellierungswerkzeugen stellt alle Kandidaten vor ein Problem: Zwar existieren mit XMI (XML Metadata Interchange) und UXF (UML Exchange Format) standardisierte Formate, der Transfer von Daten funktioniert aufgrund herstellerspezifischer Erweiterungen jedoch nur selten. Da die meisten Tools immerhin ein XML-Format schreiben können, schreibt sich der Anwender im Zweifelsfall gleich selbst ein Konvertierungstool.

Tabelle 1: UML-Werkzeuge im Vergleich

Tabelle 1: UML-Werkzeuge im Vergleich

Argo UML

Argo UML [2] ist das Urgestein unter den Open-Source-UML-Werkzeugen. Das Java-Projekt besteht bereits seit 1998 und bietet neben der Erstellung von Diagrammen noch Zusatzfunktionen wie Todo-Listen und automatisch erzeugte Designkritiken an (siehe Abbildung 1). Der rechte untere Bereich präsentiert auf mehreren Reitern Eigenschaften der ausgewählten Modellelemente.

Abbildung 1: Ein Klassendiagramm in Argo UML: Links oben zeigt das Programm einen Baum mit den Modellelementen, darunter automatisch erzeugte Designkritiken, die der Anwender sortieren kann.

Abbildung 1: Ein Klassendiagramm in Argo UML: Links oben zeigt das Programm einen Baum mit den Modellelementen, darunter automatisch erzeugte Designkritiken, die der Anwender sortieren kann.

Pfiffig ist, dass der Softwaredesigner beim Hinzufügen von Attributen und Operationen komplette Zeilen auf einmal schreiben kann. Argo UML wertet diese Zeilen aus und trägt die ermittelten Methoden-Argumente und ihre Typen in den Modellbaum ein. Da das UML-Tool die Nutzereingaben automatisch parst, ist es möglich, durch Kopieren und Anpassen vorhandener Zeilen eine Operation mit einer ähnlichen Signatur wie eine bereits existierende anzulegen.

Etwas fummelig gestaltet sich die Arbeit mit Argo UML jedoch an anderer Stelle. Beim Doppelklick mit der Maus muss der Anwender genau zielen, da der Bereich, den er treffen muss, kleiner ist, als die Ausdehnung der grafischen Elemente verspricht. In den Dialogen kommt es mitunter zu Darstellungsfehlern (siehe Abbildung 2). Argo UML verschiebt ab und zu Diagrammelemente nach dem Speichern und erneutem Öffnen.

Abbildung 2: Einige Argo-UML-Dialoge enthalten kleinere Darstellungsfehler. Abhilfe schafft in diesem Fall, das Fenster von Hand mit der Maus größer zu ziehen.

Abbildung 2: Einige Argo-UML-Dialoge enthalten kleinere Darstellungsfehler. Abhilfe schafft in diesem Fall, das Fenster von Hand mit der Maus größer zu ziehen.

Sperrig zeigte sich die Anwendung auch beim Anlegen von Sequenzdiagrammen. Im Test gelang es nicht, eines mit den Objekten der bereits erstellten Klassen zu versehen. Nach dem Hinzufügen neuer Objekte weigerte sich Argo UML darüber hinaus, Operationen von den Objekten aufrufen zu lassen.

Dia

Das Gnome-Tool [3] zeichnet gleich mehrere Diagrammtypen. Es enthält Werkzeuge und Symbolpaletten für Fluss-, Netzwerk- und UML-Diagramme (siehe Abbildung 3). Dia beherrscht den Umgang mit Ebenen, richtet Diagramme automatisch aus und ist über Python-Skripte erweiterbar.

Abbildung 3: Im Diagrammeditor (links) bietet Dia neben allgemeinen Werkzeugen auch den Zugriff auf verschiedene Paletten. Per Klick auf das Dropdown-Menü erreicht der Anwender die UML-Symbole.

Abbildung 3: Im Diagrammeditor (links) bietet Dia neben allgemeinen Werkzeugen auch den Zugriff auf verschiedene Paletten. Per Klick auf das Dropdown-Menü erreicht der Anwender die UML-Symbole.

Im Gegensatz zu den meisten dedizierten UML-Tools erlaubt Dia es allerdings nicht, vor dem Anfertigen einer Zeichnung den Diagrammtyp auszuwählen. Theoretisch kann der Anwender daher Elemente verschiedener Gattungen mischen, was aber im Interesse der Übersichtlichkeit nur in Ausnahmefällen empfehlenswert ist. UML-Einsteiger dürften diese Freiheit eher als hinderlich empfinden und sollten regelmäßig in einer Referenz (beispielsweise unter [4]) nachschlagen, welche Symbole zusammen in einem Diagramm vorkommen dürfen.

Die Eigenschaften von Klassenattributen und -operationen muss der Anwender sämtlich von Hand eintragen (Abbildung 4), was nicht nur zeitaufwändig ist, sondern auch häufiges Hin- und Herwechseln zwischen Maus und Tastatur erfordert. Dia versucht diesen Aufwand auszugleichen und bietet Exportfunktionen für mehrere Programmiersprachen an. Unterm Strich ist ein Zeitgewinn jedoch fraglich. Immerhin kann der Nutzer ganze Klassensymbole mit ihren Attributen und Operationen kopieren und anpassen – schade nur, dass dies innerhalb einer Klasse nicht funktioniert.

Abbildung 4: Bei der Definition von Klassen, Attributen und Operationen ist bei Dia Tipparbeit gefragt.

Abbildung 4: Bei der Definition von Klassen, Attributen und Operationen ist bei Dia Tipparbeit gefragt.

Hakelig ist die Erzeugung mehrerer Assoziationen an einem Klassensymbol. Sofern der Anwender aber keine Multiplizitäten benötigt, kann er sich behelfen und die Assoziationslinie teilweise auf der Umrandung des Klassensymbols verlaufen lassen. Dieser Workaround funktioniert mit vorhandenen Multiplizitäten allerdings nicht, da sie nicht am erwarteten Platz stehen.

In Sequenzdiagrammen kann der Nutzer Aktionssequenzen (die Balken auf den Lebenslinien) nur umständlich einrichten. Die Pfeile, die zwischen den Lebenslinien mehrerer Objekte verlaufen, sind oft nicht horizontal, auch wenn automatisches Einrasten ausgewählt ist.

Dia punktet bei anderen Konfigurationsoptionen. So kann der Anwender vorgeben, ob das UML-Tool Operationen umbricht und nach wie vielen Zeichen das passiert. Positiv werten die Tester auch die Möglichkeit, beim Ausdruck die Seitenverteilung einzurichten. So passt Dia auf Wunsch ein Diagramm in ein festgelegtes Raster von Druckseiten ein.

Umbrello

Das Qt-Programm [5] gehört zum KDE Software Development Kit (KDE SDK) und folgt somit auch dessen Versionszählung. Genau wie Argo UML zeigt Umbrello auf der linken Seite des Hauptfensters einen Modellbaum (Abbildung 5). Die etwas ungewöhnliche Farbgebung kann der Nutzer an seine Vorlieben anpassen.

Abbildung 5: Umbrello zeigt außer der Baumansicht auch einen Bereich mit dem Befehlsverlauf an. Wer die Standardfärbung nicht mag, stellt einen anderen Look ein.

Abbildung 5: Umbrello zeigt außer der Baumansicht auch einen Bereich mit dem Befehlsverlauf an. Wer die Standardfärbung nicht mag, stellt einen anderen Look ein.

Die Konfiguration neuer Attribute und Operationen findet wie bei Dia in eigenen Dialogfenstern statt. Sie sind etwas übersichtlicher und besser mit der Tastatur zu bedienen als beim Gnome-Tool. Dennoch wäre eine Freitexteingabe wünschenswert, da das Jonglieren mit den Dialogfenstern eher umständlich ist.

Eine Stärke von Umbrello ist die Unterstützung zahlreicher Programmiersprachen sowohl für die Code-Erzeugung als auch für das Reverse Engineering. Nach dem Einlesen des Quelltextes erscheinen Klassen mit ihren Attributen und Operationen im Modellbaum. Von dort aus zieht der Anwender sie per Drag & Drop in ein Klassendiagramm hinein, das gegebenenfalls auch noch die Vererbungsbeziehungen und Schnittstellen-Implementierungen anzeigt.

Die Druckfunktion zeigte sich im Test nicht immer kooperativ. Während sie auf einem Rechner mit Ubuntu 10.04 nur Textelemente, aber keine Linien zu Papier brachte, erschien unter Kubuntu 10.10 die ganze Grafik. Wer auf ähnliche Probleme stößt, kann als Notlösung die Diagramme in einige Bildformate exportieren und dann mit einer anderen Anwendung drucken.

Umbrellos »Undo«-Feature war nicht in der Lage, eine hinzugefügte Assoziation wieder zu entfernen. Beim Klick auf »Wiederherstellen« (Redo) crashte die Anwendung, las das Modell aber anschließend wieder problemlos ein. Leider war das nicht der einzige Schluckauf, das Qt-Tool stürzte während der Tests relativ häufig ab.

Einschränkungen gibt es auch beim Herstellen von Sequenzdiagrammen. Zwar erleichtert der Modellbaum die Verwendung bereits eingegebener Klassen und Operationen, andererseits funktioniert das automatische Platzieren von Elementen oft nur unbefriedigend. Eine manuelle Korrektur gelingt nur mit viel Glück.

Magic Draw

Magic Draw [6] ist die einzige Closed-Source-Software im Test. Sie ist in verschiedenen Editionen verfügbar; die Preisstaffelung beginnt bei 125 Euro für die Personal Edition. In diesem Test stellte sich die Standard Edition (Vollversion für 425 Euro) dem Vergleich mit den freien Tools.

Die Vielfalt der Menü-Einträge und Dialogboxen ist nach dem ersten Start zunächst erschlagend. Auch die beigelegte Dokumentation im PDF-Format lässt mit ihren 783 Seiten erahnen, dass hier eine gründliche Einarbeitung nötig ist. Zum Glück liefert die Software einige Beispielprojekte mit, die den Einstieg erleichtern.

Ein zweiter Blick offenbart, dass Klassen- und Sequenzdiagramme herzustellen jedoch nicht schwieriger ist als bei den anderen Testkandidaten. Genau wie Argo UML erlaubt es Magic Draw, Attribute und Operationen innerhalb der Klassensymbole direkt einzugeben und legt die entsprechenden Daten nach erfolgreicher Auswertung in einem Modellbaum ab (siehe Abbildung 6).

Abbildung 6: Magic Draw ist zwar umfangreich, aber dennoch relativ komfortabel zu bedienen. Dafür sorgt nicht nur das ausführliche Handbuch, sondern auch die gut strukturierte Oberfläche.

Abbildung 6: Magic Draw ist zwar umfangreich, aber dennoch relativ komfortabel zu bedienen. Dafür sorgt nicht nur das ausführliche Handbuch, sondern auch die gut strukturierte Oberfläche.

Wer in einem Klassendiagramm eine Klasse mit [Strg]+[C] kopiert und mit [Strg]+[V] einfügt, dupliziert die ursprüngliche Klasse und legt kein neues Exemplar an. Ändert er das Original, ist die Kopie ebenfalls betroffen. Um eine echte Kopie zu erstellen, greift der Anwender auf die »Kopier«-Operation im Modellbaum zurück. Es handelt sich bei diesem Phänomen keineswegs um einen Fehler, sondern um eine Designentscheidung, die anfangs etwas verwirrt.

Beim Test der Druckfunktion verschluckte Magic Draw zunächst den Text und brachte nur die Symbole zu Papier. Erst nach dem Anschalten der Option »Gradient Fill« im Druckdialog erschien der Text ebenfalls auf den Ausdrucken – intuitiv ist das nicht.

Umlet

Umlet [7] verfolgt einen ungewöhnlichen Ansatz und erlaubt dem Anwender, die Diagrammelemente in einer Wiki-Syntax zu beschreiben (siehe Abbildung 7). Mit der ist es sogar möglich, die Multiplizitäten von Assoziationen und Hintergrundfarben zu definieren, und der Anwender kann sehr schnell beliebigen Freitext eingeben. Der Nachteil an diesem Verfahren ist allerdings, dass der Nutzer beispielsweise einen Klassennamen, der auch in Typangaben steht, bei Revisionen des Modells an mehreren Stellen händisch ändern muss. Ein Griff zum Texteditor, um die gespeicherte XML-Datei zu bearbeiten, weist einen möglichen Ausweg aus dem Dilemma.

Für die einzelnen Diagrammtypen bietet Umlet verschiedene Symbolpaletten. Zusätzlich ist es möglich, mit Java-Schnipseln eigene Diagrammelemente zu definieren. Eine Anleitung in der Programmdokumentation zeigt, wie’s geht.

In Umlet kleben Verbindungslinien dort an den Symbolen, wo sie der Anwender zuerst verankert hat. Bei der Neuanordnung führt dies gelegentlich zu Linien, die sich überschneiden oder durch die Symbole laufen. Abbildung 8 zeigt die nach links gezogenen Klassen aus Abbildung 7, die die Schnittstelle implementieren (»LocalFile« und »RemoteFile«).

Abbildung 7: Umlet verwendet eine Wiki-artige Syntax zur Beschriftung von Modellelementen (unten rechts). Das macht das Tool zu einem der flexibelsten Testkandidaten.

Abbildung 7: Umlet verwendet eine Wiki-artige Syntax zur Beschriftung von Modellelementen (unten rechts). Das macht das Tool zu einem der flexibelsten Testkandidaten.

Sequenzdiagramme zu erzeugen ist mühseliger als bei den anderen Tools. Zudem verdecken sich die Symbole von Aktionssequenzen bei Aufrufen innerhalb eines Objekts nicht gegenseitig, sodass entweder die Begrenzungslinien durchscheinen oder der Anwender die Aktionssequenzen nebeneinander statt versetzt übereinander zeichnen muss.

Abbildung 8: Ein Verschieben von Symbolen führt in Umlet zu Unordnung, da die Verbindungslinien fest verankert sind. Der Anwender muss dies manuell korrigieren.

Abbildung 8: Ein Verschieben von Symbolen führt in Umlet zu Unordnung, da die Verbindungslinien fest verankert sind. Der Anwender muss dies manuell korrigieren.

E Violet UML

Dieses UML-Tool [8] glänzt durch seine aufgeräumte grafische Oberfläche (Abbildung 9). Wie bei Umlet gilt: Weniger ist mehr. Attribute und Operationen gibt der Anwender als Freitext ein – mit den genannten Vor- und Nachteilen.

Abbildung 9: Violet UML präsentiert sich mit klaren Strukturen und einer übersichtlichen Oberfläche.

Abbildung 9: Violet UML präsentiert sich mit klaren Strukturen und einer übersichtlichen Oberfläche.

Anders als Umlet platziert Violet UML Assoziations- und ähnliche Linien automatisch, was meist auch gut funktioniert. Die Größe von Klassensymbolen passt das Programm automatisch an die enthaltenen Texte an. Im Test entstanden Klassendiagramme weitgehend reibungslos. Ein kleiner Schönheitsfehler trat in der Anwendung selbst, nicht aber im Ausdruck auf: In der Bildschirmdarstellung stoßen die Oberkanten von Buchstaben mitunter an benachbarte horizontale Linien. Für das Zeichnen von Sequenzdiagrammen fehlt in der Palette ein wichtiges Symbol. Auch das Kreuz, das die Zerstörung eines Objekts darstellt, ist nicht vorhanden.

Violet UML kann zwar Diagramme als Bilder exportieren, aber es ist nicht erkennbar, welche Formate zur Verfügung stehen. Hier hilft nur ein munteres Ratespiel – der Anwender gibt jeweils die gewünschte Datei-Endung ein und hofft, dass es beim Speichern keine Fehlermeldung gibt.

Fazit

Nach dem Test ist vor allem eines klar: Die Freitexteingabe – egal ob mit oder ohne Objektbaum – von Argo UML, Magic Draw, Umlet und Violet UML ist so komfortabel, dass man sie nicht mehr missen möchte. Zu aufwändig gestaltet sich im direkten Vergleich die manuelle Eingabe aller Bezeichner und Datentypen in eigene Textfelder.

Dia und Umbrello leiden unter dieser Schwäche und machen daher keine gute Figur, wobei das Gnome-Tool sich eventuell noch für Nutzer eignet, die sowieso schon andere Diagrammtypen mit Dia zeichnen und nicht umlernen möchten. Umbrello erschwert zwar die Eingabe von Attributen und Operationen, punktet aber bei der Codegenerierung und beim Reverse Engineering für ganz verschiedene Programmiersprachen.

Ist die Freitexteingabe das Entscheidungskriterium, dann ist wahrscheinlich Violet UML das Tool der Wahl für Gelegenheitsnutzer – es macht wirklich Spaß, damit zu arbeiten. Umlet ist mit seiner Wiki-artigen Eingabe und den Gestaltungsmöglichkeiten (Farben und Linientypen) schnell und flexibel. Leider bremst die Verankerung von Verbindungslinien den Anwender häufig aus, was den guten Eindruck schmälert.

Argo UML und Magic Draw zeigen, dass ein systematischer Modellbaum und die Freitexteingabe von Attributen und Operationen keine Widersprüche sind. Ersteres ist kostenlos, für Letzteres muss der Anwender je nach Edition mehr oder minder tief in die Tasche greifen. Einzige Kritikpunkte bei Argo UML sind die etwas sperrige Bedienung und vor allem das Fehlen der »Undo«-Funktion.

Magic Draw eignet sich wegen seines Umfangs kaum für Nutzer, die nur ab und zu ein UML-Diagramm zeichnen möchten. Wer jedoch ein professionelles Werkzeug für das Softwaredesign benötigt, sich an Closed Source nicht stört und die finanzielle Investition nicht scheut, bekommt ein vielseitiges Werkzeug an die Hand. Wer die Anschaffung eines kommerziellen UML-Programms plant, sollte aber auch einen Blick auf die anderen Vertreter dieser Gattung werfen. Die englische Wikipedia veröffentlicht unter [9] einen ausführlichen Vergleich. (hej)

Infos

[1] Unified Modeling Language: [http://www.uml.org]

[2] Argo UML: [http://argouml.tigris.org]

[3] Dia: [http://live.gnome.org/Dia]

[4] UML-Referenz: [http://www.oose.de/downloads/uml-2-Notationsuebersicht-oose.de.pdf]

[5] Umbrello: [http://uml.sourceforge.net]

[6] Magic Draw: [http://www.magicdraw.com]

[7] Umlet: [http://www.umlet.com]

[8] Violet UML: [http://violet.sourceforge.net]

[9] Wikipedia-Übersicht UML-Tools: [http://en.wikipedia.org/wiki/List_of_UML_tools]

Der Autor

Stefan Schwarzer verwendet Unix und Linux seit über zehn Jahren auf Server und Desktop. Als selbstständiger Software-Entwickler und Berater ist er unter [sschwarzer@sschwarzer.com] zu erreichen.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben