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
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.
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.
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.
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.
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.