UML-Diagrammen
(3) 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.
Bisher wurden in den vorgelegten sieben Teilen der Artikelserie
– Ausgaben 0 … 6: rhinodidactics.de/Archiv – 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 neu hinzugekommenen
Möglchkeit zum Layout von [Klassen-] Diagrammen der Unified Modeling
Language (UML) mit Hilfe des Pakets MetaUML
Darüber hinaus wird der Faden wiederaufgenommen, den wir bei der
Darstellung der (in MetaUML noch fehlenden) Sequenzdiagramme mit dem
Paket MSC (Message Sequence Charts) ausgelegt haben.
Das Paket MetaUML wird von seinem Autor Ovidiu Gheorghies heftig weiterentwickelt und beinhaltet nunmehr Möglichkeiten zum Anordnen von Elementen, die die Nutzung in der Handhabung – gerade für Layoutfragen – erheblich verbessert haben. Im aktuellen Manual (Version 0.2.2) MetaUML – nicht vergesssen findet sich auf den Seiten 19ff ein neues Kapitel mit dem Titel Arranging Diagram Items. Bei der neuen Schnittstelle handelt es sich um die einfache Anordnung von Elementen durch die Angabe der Richtung, in der die Anordnung erfolgen soll. Folgende Zeilen im MetaPost-Quellcode führen zu dem Klassendiagramm unter der Überschrift.
% % leftToRight(270)(Aussendienst, Innendienst); leftToRight(30)(CallCenter, Geschaeftsstelle); topToBottom(40)(Aussendienst, Geschaeftsstelle); leftToRight(30)(KfzUebergabe, KfzRuecknahme); topToBottom(40)(Geschaeftsstelle, KfzUebergabe); leftToRight(25)(Disposition, KfzTechnik, Buchhaltung); topToBottom(40)(Innendienst, KfzTechnik);
Der angegebene Quellcode erzeugt die Anordnung der Klassen in der
Abbildung. Dabei wird deutlich, dass diese neue Möglichkeit angenehm in
der Handhabung ist. Eine Variante besteht in der Möglichkeit, die
Notation in einer erweiterten Form zu nutzen, um die Ausrichtung nicht
oben (Voreinstellug bei leftToRight
), sondern unten
leftToRight.bottom(..)(..)
oder an der Mitte
leftToRight.midy(..)(..)
zu orientieren. Desgleichen kann
für die Ebenendarstellung topToBottom
die Voreinstellung
(mittig bzgl. der Horizontalen == midx) geändert werden. Die Ausrichtung
an den linken Seiten wird mit topToBottom.left(..)(..)
, die
an den rechten Seiten – dem Prinzip der Orthogonalität folgend
– mit topToBottom.right(..)(..)
erreicht.
Darüber hinaus wurden MetaPost-Makros entwickelt und zur Verfügung
gestellt, die die Benutzung der Schnittstelle weiter vereinfachen:
below
, above
,atright
und
atleft
. Die Makros benötigen zwei Parameter: einen Punkt und
ein Längenangabe. Damit kann statt B = A + (5,0);
nunmehr
auch B = atright(A, 5);
geschrieben werden.
Weitere Verbesserungen im Detail machen das Paket so hochwertig, das es für den Praxiseinsatz sehr gut geeignet erscheint:
MSC
zu LSC
Die Sprache der Live Sequence Charts (LSC) ist eine
Variante der Message Sequence Charts (MSC) (wir
berichteten über MSC
in If Fase Nr. 5 vom 1. Dezember 2005,
Seite 1) und geeignet, um Sequenzdiagramme zu beschreiben.
LSC
unterscheidet sich von MSC
durch das
Hinzufügen von heissen hot und kalten cold Elementen,
die die weitere Arbeit von Ergebnissen abhängig machen (oder nicht).
Diese Darstellungsform eignet sich zur Entwicklung von
Informatiksystemen, da das Verhalten durch diese Elemente im
Entwicklungsprozess (noch) offen gehalten werden kann. Mit Jochen Klose,
Live Sequence Charts: A Graphical Formalism for the Specification of
Communication Behaviour, PhD thesis, Carl von Ossietzky Universität
Oldenburg, 2003 wurde eine wissenschaftliche Arbeit zu
LSC vorgelegt. Der Autor hat darüber hinaus gezeigt, wie
LSC dazu benutzt werden kann
UML-Modelle zu prüfen. Das Paket lsc
unterstützt das Setzen von LSC.
Weiterhin wurde von David Harel und Rami Marelly mit Come, Let's Play: Scenario-Based Programming Using LSCs and the Play-Engine, Springer-Verlag, 2003 eine GUI-basierte Implementierung (Spielumgebung) vorgelegt, die einen Ansatz verfolgt, der zusätzliche Erweiterungen notwendig machte. Damit wird eine Benutzungsoberfläche zum Steuerungsinstrument bei der Softwareentwicklung. Die Erweiterungen werden von dem vorliegenden LaTeX-Paket nicht zur Verfügung gestellt.
Verglichen mit MSC
wird bei LSC
der
Benutzerin eine low-level
-Schnittstelle zur Verfügung
gestellt, die eine Positionierung der Elemente erfordert, wie in dem
folgenden Beispiel deutlich wird.
% % \begin{Lsc}{none}{2}{3} \begin{lscinst}[SD]{Inst1} \lscLine{hot}{1.5} \lscInstSnd{rip} \lscLine{hot}{1} \lscKill \end{lscinst} \begin{lscinst}[SD]{Inst2} \lscLine{hot}{1.5} \lscInstRcv{rip} \lscKill \end{lscinst} \lscInst{rip}{hot}{RIP} \end{Lsc}