If Fase Logo

mit Google im Archiv der If Fase

Ausgabe 6 vom 1. Februar 2006 (als PDF):

29. Januar 2006 – Dr. Ludger Humbert

LaTeX – Teil 6: Erstellung von UML-Diagrammen (2)

In einer Reihe von Artikeln in der If Fase werden nützliche Elemente von LaTeX vorgestellt, die erprobt sind und bei der täglichen Arbeit der Informatiklehrerin eingesetzt werden.

In den bisher vorgelegten sechs Teilen der Artikelserie – Ausgaben 0 … 5: rhinodidactics.de/Archiv – wurden Hinweise zur Installation, grundlegenden Arbeitsweisen, Quellen zu Dokumentationen, die Arbeit mit KOMAscript, Hinweise auf PSTricks und als stärker inhaltsbezogene Elemente die Erstellung von Arbeitsblättern, Struktogrammen, Automatengrafen und einigen Elementen von UML thematisiert. In dieser Ausgabe beschäftigen wir uns mit einer weiteren Möglchkeit zur Erstellung von Diagrammen der Unified Modeling Language (UML).

Dazu wird ein relativ junges Paket zum Einsatz gebracht, das mit Hilfe von MetaPost einfache Programmierschnittstellen für folgende Diagrammtypen zur Verfügung stellt -- MetaUML:

Der Autor von MetaUML Ovidiu Gheorghies hat die Möglichkeit, Sequenzdiagramme zu erstellen, bisher noch nicht eingebaut. Dieser Anforderung wird hoffentlich in einer der folgenden Versionen entsprochen.

UML-Diagramme mit MetaPost erstellen

Wir verwenden hier Beispiele, die in den Materialien des Autors vorgestellt und dokumentiert werden. Die Realisierung ist an dem Gegenstandsbereich orientiert, so dass sich für die Erstellung eine objektorientierte Schreibweise geradezu anbietet.

Klassendiagramm mit MetaUML

Klassendiagramm mit MetaUML

%
%

input metauml;

beginfig(1);

Class.A("Point")

("+x: int",

 "+y: int") ();



Class.B("Circle")

("radius: int")

("+getRadius(): int",

 "+setRadius(r: int):void");



A.nw = (0,0);

B.n = A.s - (0,45);

Class_draw.A;

Class_draw.B;


drawRelation(aggregationUni)(A.s -- B.n);

endfig;

end

Der angegebene Quellcode erzeugt das Klassendiagramm aus der Abbildung. Dabei wird deutlich, dass die Schreibweise recht intuitiv ist und eine [halb-] automatische Generierung aus Quellcode sich geradezu anbietet. Der Autor dieses Artikels hat ein einfaches Pythonprogramm geschrieben, das mit dem Standardparser pyclbr aus Python-Quellcode Klassendiagramme erstellt.

 

Als weiteres Beispiel dokumentieren wir im Folgenden einen Anwendungsfall.

Anwendungsfalldiagramm mit MetaUML

Anwendungsfalldiagramm mit MetaUML

Quellcode für das Anwendungsfalldiagramm:

%
%

input metauml;

beginfig(1);

  Actor.user("User");

  Actor.db("Database");

  Usecase.dbquery("Query database");

  Usecase.auth("Authentification");

  Usecase.authA("Authentification by", "username, password");

  Usecase.authB("Authentification by", "smartcard");

  auth.w = user.human.e + (30,0);

  dbquery.s = auth.n + (0,30);

  db.human.w = dbquery.e + (30,0);

  authB.left - authA.right = 30;

  authB.midy = authA.midy;

  .5[authB.w, authA.e] = (auth.midx, auth.bottom - 50);

  drawObjects(user, auth, dbquery, db, authA, authB);

  clink(inheritance)(authA, auth);

...

endfig;

end

Von MetaPost zu PDF und SVG

Der MetaPost-Quellcode stellt nicht das Ende, sondern den Anfang der Kette der Arbeiten dar. Um *.mp-Dateien, die programmierte Grafiken repräsentieren, in andere Formate umzuwandeln, ist als erstes mptopdf zu erwähnen. Damit werden aus dem MetaPost-Format PDF-Dateien erstellt. Das Werkzeug mptopdf ist Bestandteil üblicher tetex-Distributionen und sollte damit auf jedem LaTeX-System standardmäßig installiert sein. Der Aufruf mptopdf usecase.mp generiert eine oder mehrere PDF-Dateien, da eine *.mp-Quelle mehrere Abbildungen enthalten kann.

Die Werkzeuge für die Umwandlung der PDF-Datei nach *.svg setzen Elemente voraus, die kein Bestandteil von LaTeX sind: pstoedit skconvert gzip Im Folgenden wird die Aufrufreihenfolge angegeben, mit der aus der PDF-Datei, die oben erstellt wurde, eine *.svg-Datei erzeugt wird.

%
%

pstoedit -page 1 -dt -psarg "-r9600x9600" -f sk usecase-1.pdf usecase.sk

skconvert usecase.sk usecase.svg

gzip -S z --best usecase.svg

Für die weitere Arbeit mit diesem Paket sei neben dem Manual auf die folgenden Quellen verwiesen:

Beobachtermuster mit MetaUML

Beobachtermuster mit MetaUML

Die hier veröffentlichten Inhalte stellen keine Meinungsäußerungen der Studienseminare Hamm Arnsberg dar.
© Redaktion If Fase