Skip to content

UML Diagramme zeichnen

Manchmal muss Mann oder Frau ein -Diagramm zeichnen. Dafür gibt es verschiedene Möglichkeiten. Von den freien Tools sei hier ArgoUML, Fujaba und Dia genannt. Ich gab bisher letzterem den Vorzug, ohne die anderen beiden gross Untersucht zu haben. An Dia gefällt mir die meinen Ansprüchen erstmal genügende Einfachheit. Ein UserInterface, das nicht überfrachtet ist.

Vor einigen Tagen wollte ich dann ein UML-Sequenz-Diagramm zeichnen und kam dabei an die Grenzen von Dia. Auf der Suche nach einer guten Alternative bin ich auf UMLGraph gestoßen. UMLGraph ist aber kein Zeichenprogramm. Vielmehr erlaubt es das deklarative Zeichnen von Klassen- und Sequenz-Diagrammen. Das bedeutet, dass man mit einer Textdatei das Diagramm spezifiziert und daraus dann automatisch eine Grafik erzeugt wird. Das finde ich sehr praktisch. Sehr praktisch findet das übrigens auch Martin Fowler in einem Bliki-Eintrag.

Am Beispiel eines Sequenzdiagramms für das Contract Net Protocol möchte ich das Vorgehen kurz darstellen. Erst muss man die Text-Datei erstellen. Die sieht für meine Version des CNP so aus:

.PS
copy "sequence.pic";

movewid = 1.5;

# Define the objects
object(I,"Initiator");
object(P,"Participant");

step();

# Message sequences
active(I);
message(I,P,"call-for-proposal");
inactive(I);
active(P);

step();
step();

return_message(P,I,"refuse");
active(I);
step();
inactive(I);
step();
return_message(P,I,"propose");
inactive(P);
active(I);

step();

message(I,P, "reject proposal");
active(P);
step();
inactive(P);

message(I,P, "accept proposal");
active(P);

step();

return_message(P,I,"failure");
return_message(P,I,"inform-done: inform");
return_message(P,I,"inform-result: done");

step();

complete(I);
complete(P);

.PE

Die ersten beiden und die letzte Zeile sind dabei vom Programm vorgegeben. movewid = 1.5; gibt den Abstand zwischen den Lifelines der Objekte an. Der Rest ist ziemlich selbsterklärend. Auf der Dokumentationsseite von UMLGraph wird die Syntax beschrieben, deshalb spare ich mir an dieser Stelle eine genauerer Erörterung. Es dürfte jedoch klar werden, dass es relativ einfach ist ein Sequenzdiagramm auf diese Weise zu definieren.

Um jetzt diese Text-Datei in ein Diagramm umzuwandeln, muss man aus dem GNU plotutils-Packet das Kommandozeilentool pic2plot aufrufen. Eine Windows-Version davon gibt es auch. Ich nehme mal an, dass die Text-Datei als cnp.uml gespeichert wurde, dann ist der Aufruf:

pic2plot -Tsvg cnp.uml >cnp.svg

Die beiden ‚svg‚ stehen im Aufruf für das von mir bevorzugte Ausgabeformat. Viele andere Ausgabeformate, u.a. PNG, GIF und PostScript sind jedoch möglich. Das Ergebnis des Aufrufs – ins PNG-Format umgewandelt – sieht dann so aus:

Contract Net Protocal als UML-Diagramm

Wichtiger Hinweis

Beim Arbeiten mit der Windows-Version von pic2plot ist unbedingt zu beachten, dass es nur UNIX-Zeilenumbrüche akzeptiert. Ansonsten bleibt die Ausgabe leer. Also im Editor auf UNIX-Zeilenumbrüche umstellen. Ich kann übrigens PSPad als Editor sehr empfehlen.

Nachtrag

Eine große Sammlung von weiterführenden Links findet sich im DenkzeitWiki unter UnifiedModelingLanguage.

{ 3 } Comments

  1. Adrian B | 2005/3/8 at 10:41 | Permalink

    Ich möchte gerne Cadifra (http://www.cadifra.com) empfehlen. Ein schneller, handlicher UML Diagramm Editor für Windows 2000 und XP. Kann Diagramme u.a. in Word einbetten. Nur 1 MB download (Shareware, 270 Euro).

  2. Thomas Spitzer | 2006/12/19 at 10:20 | Permalink

    Bei unserem open Source Projekt haben wir die Idee von UMLGraph aufgegriffen und weiterentwickelt. Trace2UML kann z.B. auch asynchrone Nachrichten und State Übergänge zeichnen.

    Außderdem ist die Syntax so erweitert worden, dass Trace2UML (daher der name) Tracefile Ausgaben eines instrumentierten Programms nutzen kann um Sequenzdiagramme zu malen.

    Das Programm kann von trace2uml.tigris.org kostenlos geladen werden.

  3. Webdesign Magdeburg | 2018/2/14 at 01:57 | Permalink

    Dankeschön für den tollen Beitrag. Seit dieser Woche haben wir auch das Thema Objektorientierter Softwareentwurf. Ich habe mir nunauch das Programm Dia und argoUML heruntergeladen. Dia finde ich etwas zu einfach und zu übersichtlich wenn du weißt was ich meine. Bei argoUML komm ich mit den Pfeilen nicht klar, die wollen nie enden…..
    Aber so ist es ja immer wenn etwas neu ist oder?

    VG

Post a Comment

Your email is never published nor shared. Required fields are marked *