Analyse von UML Aktivitäten mit DMM - Universität Paderborn
Analyse von UML Aktivitäten mit DMM - Universität Paderborn
Analyse von UML Aktivitäten mit DMM - Universität Paderborn
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
„Neue Ansätze der Softwarequalitätssicherung“<br />
<strong>Analyse</strong> <strong>von</strong> <strong>UML</strong> <strong>Aktivitäten</strong> <strong>mit</strong> <strong>DMM</strong><br />
Matthias Multhaup<br />
E-Mail: emperor@upb.de<br />
<strong>Universität</strong> <strong>Paderborn</strong>,<br />
Fakultät für Elektrotechnik, Informatik und Mathematik,<br />
Institut für Informatik, Warburger Str. 100, 33098 <strong>Paderborn</strong><br />
Zusammenfassung Die Semantik <strong>von</strong> visuellen Modellierungssprachen<br />
wird oft nur informell und dadurch meist unpräzise definiert. Eine präzise<br />
Definition der Semantik ist jedoch erforderlich, wenn Modelle automatisiert<br />
auf die Einhaltung semantischer Qualitätskriterien überprüft<br />
werden sollen. Dynamic Meta Modeling (<strong>DMM</strong>) ist eine Technik zur formalen<br />
Spezifikation <strong>von</strong> Modellsemantiken. Diese Arbeit stellt vor, wie<br />
<strong>DMM</strong> zur Spezifikation einer formalen Semantik für Workflowdiagramme<br />
(<strong>UML</strong> <strong>Aktivitäten</strong>diagramme) eingesetzt werden kann. Anschließend<br />
werden die Workflowdiagramme <strong>mit</strong> dem Modelchecker GROOVE automatisiert<br />
auf das Qualitätskriterium der Soundness untersucht.<br />
1 Einleitung<br />
In Unternehmen der heutigen Arbeitswelt setzen sich Geschäftsprozesse meist<br />
aus zahlreichen Teilaufgaben zusammen. Diese Teilaufgaben werden oft parallel<br />
und <strong>von</strong> unterschiedlichen Personen bearbeitet. Manche Teilaufgaben können<br />
erst bearbeitet werden, wenn andere bereits fertig gestellt sind. Ebenso kann es<br />
vorkommen, dass bestimmte Teilaufgaben überhaupt nicht erledigt werden, weil<br />
sie zum Beispiel nur zur Erfüllung spezieller Kundenwünsche erforderlich sind. Je<br />
mehr Teilaufgaben, Abhängigkeiten und Spezialfälle ein Geschäftsprozess beinhaltet,<br />
desto komplexer wird er und desto schwieriger lässt er sich beschreiben.<br />
Da effiziente Geschäftsprozesse für den Erfolg eines Unternehmens <strong>von</strong> entscheidender<br />
Bedeutung sind, empfiehlt es sich, diese Prozesse im Vorfeld genau zu<br />
planen, und sie vor ihrer tatsächlichen Ausführung gründlichen Simulationen<br />
und Tests zu unterziehen. Die Planung bzw. der Entwurf <strong>von</strong> Geschäftsprozessen<br />
kann <strong>mit</strong> sogenannten Workflowmodellen vorgenommen werden. In Abschnitt 2<br />
dieser Seminararbeit wird ein Konzept zur visuellen Modellierung <strong>von</strong> Workflows<br />
vorgestellt, dass auf <strong>UML</strong> <strong>Aktivitäten</strong>diagrammen basiert. Mit Hilfe der<br />
vorgestellten Modellierungstechnik wird dann ein Workflowmodell erstellt, das<br />
im weiteren Verlauf der Seminararbeit auf seine Qualität hin untersucht wird.
Die Modellierung <strong>von</strong> Workflows ist eine anspruchsvolle Aufgabe, die stark <strong>von</strong><br />
den Fähigkeiten und der Aufmerksamkeit des Modellierers abhängt. Nicht jedes<br />
Workflowmodell drückt tatsächlich die gewünschten Sachverhalte aus. Oft<br />
werden wichtige Teilaufgaben vergessen, Abläufe nicht korrekt abgebildet oder<br />
Dinge in das Modell <strong>mit</strong> einbezogen, die für den Ablauf irrelevant sind. Viele<br />
Qualitätsansprüche an ein Workflowmodell sind stark vom konkreten Einsatzbereich<br />
abhängig und daher sehr speziell. Andererseits existieren jedoch auch<br />
Eigenschaften die unabhängig vom Einsatzbereich für jedes qualitativ hochwertige<br />
Workflowmodell gelten sollten. So sollte zum Beispiel jeder Workflow frei<br />
<strong>von</strong> Deadlocks sein, so das er in jedem Fall bis zum Ende ausgeführt werden<br />
kann. van der Aalst [3] hat solche allgemeinen Eigenschaften für Workflowmodelle<br />
erarbeitet und im Qualitätskriterium der Soundness zusammengefasst.<br />
Abschnitt 3 dieser Arbeit, stellt die genauen Anforderungen der Soundness an<br />
ein Workflowmodell vor. Auf Grundlage der Arbeit <strong>von</strong> Soltenborn [1] wird<br />
dann erläutert, wie sich dieses, ursprünglich für Petri Netze formulierte, Kriterium<br />
konkret auf <strong>UML</strong> <strong>Aktivitäten</strong>diagramme anwenden lässt.<br />
Ob ein Workflowmodell tatsächlich sound ist, lässt sich <strong>von</strong> einem Menschen<br />
für komplexe Modelle kaum feststellen. Daher empfiehlt es sich, Workflowmodelle<br />
automatisiert auf das Kriterium der Soundness zu überprüfen. Da<strong>mit</strong> ein<br />
visuelles Modell jedoch automatisiert überprüft werden kann, muss es zunächst<br />
in Daten transformiert werden, die <strong>von</strong> Computern verarbeitet werden können.<br />
Um diese Transformation für die Syntax des Modells vorzunehmen stellen <strong>UML</strong><br />
<strong>Aktivitäten</strong>diagramme ein Metamodell bereit. Das Metamodell kann in einer beliebigen<br />
objektorientierten Programmiersprache implementiert werden und die<br />
Workflowmodelle lassen sich dann in Objektinstanzen dieser Implementierung<br />
umsetzen. So transformierte Modelle können auf syntaktische Korrektheit überprüft<br />
werden. Soundness ist jedoch kein syntaktisches sondern ein semantisches<br />
Qualitätskriterium. Da die Semantik <strong>von</strong> <strong>UML</strong> <strong>Aktivitäten</strong>diagrammen <strong>von</strong> der<br />
Object Management Group (OMG) nur in textueller Form spezifiziert wurde,<br />
ist sie nicht <strong>von</strong> einen Computer verarbeitbar.<br />
Da<strong>mit</strong> eine automatische <strong>Analyse</strong> auf Soundness durchgeführt werden kann, bedarf<br />
es einer Möglichkeit die Semantik der <strong>UML</strong> <strong>Aktivitäten</strong>diagramme formal<br />
zu spezifizieren. Dabei soll die Semantik einerseits präzise, andererseits aber weiterhin<br />
für den Menschen verständlich sein. Das <strong>von</strong> Hausmann [4] entwickelte<br />
Dynamic Meta Modeling (<strong>DMM</strong>) bietet diese Möglichkeit für alle visuellen<br />
Modellierungssprachen, deren Syntax bereits durch ein Metamodell beschrieben<br />
ist. <strong>DMM</strong> erweitert das syntaktische Metamodell um zusätzliche Klassen,<br />
die für die Beschreibung der statischen Semantik notwendig sind. Jeder Nutzer<br />
der das syntaktische Metamodell versteht, sollte so<strong>mit</strong> in der Lage sein, auch<br />
das semantische Metamodell zu verstehen. Alle Aspekte der dynamischen Semantik<br />
werden in <strong>DMM</strong> durch Graphtransformationsregeln spezifiziert. Diese<br />
Regeln beschreiben, wie sich die Instanzen des semantischen Metamodells über<br />
die Zeit verändern können. Da Graphtransformationsregeln auf dem Konzept
<strong>von</strong> Zuständen und Zustandsänderungen basieren, stellen sie einen angemessenen<br />
Formalismus für die Beschreibung <strong>von</strong> dynamischem Verhalten dar, ohne<br />
die semantische Lücke zwischen formeller und informeller Beschreibung zu groß<br />
werden zu lassen. Im Abschnitt 4 dieser Seminararbeit wird <strong>DMM</strong> genauer vorgestellt<br />
und dann anhand einer <strong>von</strong> Hausmann durchgeführten Fallstudie gezeigt,<br />
wie sich die Semantik <strong>von</strong> <strong>UML</strong> <strong>Aktivitäten</strong>diagrammen formal <strong>mit</strong>tels <strong>DMM</strong><br />
spezifizieren lässt. Auf Grundlage dieser formalen Semantik kann anschließend<br />
eine automatische Überprüfung auf Soundness durchgeführt werden.<br />
In Abschnitt 5 wird erläutert, wie Soltenborn [1] eine solche Überprüfung<br />
<strong>mit</strong> Hilfe des Modelcheckers GROOVE durchgeführt hat. Abschließend fasst<br />
Abschnitt 6 die vorgestellten Konzepte und Verfahren kurz zusammen und gibt<br />
einen Ausblick auf weitere Herausforderungen im Bereich der Qualitätssicherung.<br />
2 Workflowmodellierung<br />
Workflows beschreiben Arbeitsabläufe für Arbeitsaufträge. Ein Arbeitsauftrag<br />
kann aus mehreren Teilaufgaben bestehen. Die Reihenfolge, in der die verschiedenen<br />
Teilaufgaben abgearbeitet werden müssen, wird durch einen Arbeitsprozess<br />
festgelegt. Diese grundlegende Struktur <strong>von</strong> Workflows wird am besten an einem<br />
konkreten Beispiel deutlich. Man stelle sich den stark vereinfachten Ablauf eines<br />
Spielertransfers zwischen zwei Fußballmannschaften vor. Zunächst treffen<br />
sich die Manager der beiden Vereine um eine Ablösesumme für den Spieler auszuhandeln.<br />
Währenddessen wird der Spieler zum Probetraining eingeladen, um<br />
seine Fitness zu testen. Wenn sich die Manager über eine Ablösesumme geeinigt<br />
haben, kann der Spieler einen Vertrag bei seinem neuen Verein unterschreiben,<br />
wird hingegen keine Einigung über die Ablösesumme erzielt, müssen die Transferbemühungen<br />
abgebrochen werden.<br />
Soltenborn beschreibt in [1], wie sich <strong>UML</strong> <strong>Aktivitäten</strong>diagramme für die<br />
Modellierung <strong>von</strong> Workflows nutzen lassen. Ein <strong>Aktivitäten</strong>diagramm enthält jeweils<br />
den Arbeitsprozess für einen Arbeitsauftrag. Der Beginn des Arbeitsprozesses<br />
wird durch eine InitialNode und das Ende durch eine ActivityFinalNode<br />
gekennzeichnet. Alle Teilaufgaben werden in Form <strong>von</strong> Actions modelliert, die<br />
durch ActivityEdges <strong>mit</strong>einander verbunden und in eine Reihenfolge gebracht<br />
werden. ForkNode und JoinNode markieren parallele Bearbeitungsmöglichkeiten<br />
innerhalb des Arbeitsprozesses. Die Modellierung <strong>von</strong> Bearbeitungsbedingungen<br />
und alternativen Bearbeitungswegen geschieht <strong>mit</strong> Hilfe der DecisionNode und<br />
der MergeNode.<br />
Das Workflowbeispiel „Spielertransfer“ lässt sich <strong>mit</strong> Hilfe der genannten Techniken<br />
wie in Abbildung 1 modellieren. Eine InitialNode markiert den Startpunkt<br />
des Prozesses. Auf die InitialNode folgt eine ForkNode, die den Bearbeitungsprozess<br />
aufteilt und dadurch die parallele Bearbeitung der Actions
Verhandlung<br />
Probetraining<br />
Spielertransfer<br />
[ok]<br />
[zu teuer]<br />
Transferabbruch<br />
Vertragsabschluss<br />
Abbildung 1. Workflow „Spielertransfer“ als <strong>UML</strong> <strong>Aktivitäten</strong>diagramm<br />
„Verhandlung“ und „Probetraining“ ermöglicht. Auf die Action „Verhandlung“<br />
folgt eine DecisionNode an der das Verhandlungsergebnis abgefragt wird. Auf<br />
eine gescheiterte Verhandlung folgt die Action „Transferabbruch“. Verläuft die<br />
Verhandlung hingegen erfolgreich, dann wird der Prozess über eine MergeNode<br />
zur Action „Vertragsabschluss“ weitergeleitet. Zum Schluss wird die parallele<br />
Bearbeitung durch eine JoinNode wieder zusammengeführt und der Prozess endet<br />
an einer ActivityFinalNode.<br />
Das Beispiel ver<strong>mit</strong>telt einen Eindruck da<strong>von</strong> wie <strong>UML</strong> <strong>Aktivitäten</strong>diagramme<br />
aufgebaut werden, und welche Funktion den einzelnen <strong>UML</strong> Elementen dabei<br />
zukommt. Dieser Eindruck ist jedoch unpräzise. Es ist nicht klar, welche Elemente<br />
<strong>mit</strong> welchen kombiniert werden können und es bestehen mehrere Interpretationsmöglichkeiten<br />
für die tatsächliche Bedeutung dieser Kombinationen.<br />
Die Regeln, die die Kombinationsmöglichkeiten der einzelnen Elemente präzise<br />
festlegen, bezeichnet man als die abstrakte Syntax der Diagramme. Die OMG<br />
hat die abstrakte Syntax <strong>von</strong> <strong>UML</strong> <strong>Aktivitäten</strong>diagrammen in [7] als Metamodell<br />
spezifiziert. Dieses Metamodell besteht aus Klassendiagrammen, welche die<br />
Beziehungen der einzelnen <strong>UML</strong> Elemente zueinander formal beschreiben.<br />
Der Workflow „Spielertransfer“ lässt sich auf dieser Grundlage als Objektdiagramm<br />
darstellen, welches das Metamodell instanziiert. Abbildung 2 zeigt einen<br />
Ausschnitt des Objektdiagramms. Alle <strong>UML</strong> Elemente sind Objektinstanzen ihrer<br />
jeweiligen Metamodellklassen und die Verbindungen der Elemente untereinander<br />
sind durch Assoziationen zwischen den Objektinstanzen ausgedrückt. Das<br />
Objektdiagramm kann so<strong>mit</strong> als ungerichteter Graph angesehen werden, wobei<br />
die Objektinstanzen die Knoten und die Assoziationen die Kanten des Graphen<br />
darstellen. Durch die Formalisierung der abstrakten Syntax als Metamodell ist<br />
präzise festgelegt, welche Elemente <strong>mit</strong> welchen anderen Elementen kombiniert<br />
werden können, bzw. welche Objektinstanzen <strong>mit</strong> welchen und wie vielen anderen<br />
Objektinstanzen assoziiert sein dürfen. Dadurch wird es möglich, die <strong>UML</strong><br />
<strong>Aktivitäten</strong>diagramme automatisiert zu verarbeiten. Ein Programm, wie zum<br />
Beispiel ein grafischer Editor zu Erstellung <strong>von</strong> <strong>UML</strong> Diagrammen, müsste das
vorliegende Metamodell implementieren und könnte auf dieser Grundlage dann<br />
die syntaktische Korrektheit einzelner Diagramme überprüfen.<br />
+source<br />
:ForkNode<br />
+source<br />
+outgoing<br />
+outgoing<br />
:Edge +target Verhandlung:<br />
+incoming<br />
Action<br />
:Edge<br />
+target<br />
+incoming<br />
Probetraining:<br />
Action<br />
+source<br />
+source<br />
+outgoing<br />
+outgoing<br />
:Edge<br />
+source<br />
+incoming<br />
:DecisionNode<br />
+source<br />
+target<br />
:Edge<br />
+outgoing<br />
+incoming<br />
:Edge +target :MergeNode<br />
+incoming<br />
Abbildung 2. Ausschnitt des Workflows „Spielertransfer“ als Objektdiagramm<br />
Syntaktische Korrektheit garantiert jedoch noch nicht, dass ein Diagramm auch<br />
tatsächlich das aussagt, was man beabsichtigt. Bezogen auf das Diagramm „Spielertransfer“,<br />
ist zum Beispiel nicht klar was passiert, wenn der Spieler sein Probetraining<br />
beendet hat, die Verhandlungen jedoch noch nicht abgeschlossen sind.<br />
Es könnte sein, das der Spieler zunächst auf das Ende der Verhandlungen wartet,<br />
andererseits könnte es aber auch sein, dass er sofort den Vertrag unterschreibt.<br />
Um beurteilen zu können welchen Weg der Prozess in diesem Fall tatsächlich<br />
nehmen wird, muss das dynamische Verhalten <strong>von</strong> <strong>UML</strong> <strong>Aktivitäten</strong>diagrammen<br />
betrachtet werden. Dieses Verhalten wird durch Tokenfluss modelliert. Der<br />
Tokenfluss ist ein semantisches Konzept und wird daher nicht im syntaktischen<br />
Metamodell der OMG beschrieben. Stattdessen hat die OMG textuelle Beschreibungen<br />
für das Verhalten <strong>von</strong> <strong>UML</strong> <strong>Aktivitäten</strong>diagrammen verfasst. Zum groben<br />
Verständnis des Verhaltens sollte diese textuelle Beschreibung jedoch zunächst<br />
ausreichen. Eine Methode zu formalen Definition des dynamischen Verhaltens<br />
wird später in Abschnitt 4 vorgestellt.<br />
Um Tokenfluss zu verstehen, muss man sich ein <strong>UML</strong> <strong>Aktivitäten</strong>diagramm als<br />
etwas Ausführbares und über die Zeit Veränderliches vorstellen. Zu Beginn der<br />
Ausführung eines <strong>Aktivitäten</strong>diagramms wird an der InitialNode ein Token<br />
erzeugt. Dieses Token wird nach und nach über die gerichteten ActivityEdges,<br />
sowie die DecisionNodes und MergeNodes geroutet. An einer ForkNode werden<br />
eingehende Tokens vervielfältigt, so dass ein Token für jeden Ausgang bereitgestellt<br />
werden kann. An einer JoinNode werden hingegen alle eingehenden<br />
Tokens zu einem einzelnen Token zusammengefasst. Eine JoinNode wird immer<br />
nur dann aktiv, wenn an allen Eingängen Tokens vorhanden sind.
Das Token selbst ist eine Art Kontrolleinheit, die sich nur an Actions und an der<br />
ActivityFinalNode aufhalten darf. Sobald ein Token an einer Action ankommt,<br />
kann die jeweilige Action ausgeführt werden. Erst wenn die Ausführung abgeschlossen<br />
ist wird das Token am Ausgang der Action wieder bereitgestellt. Das<br />
Tokenrouting folgt dem <strong>von</strong> Bock [6] beschriebenen Prinzip des Traverse-To-<br />
Completion. Das bedeutet, dass ein Token erst dann vom Ausgang einer Action<br />
über einen Pfad geschickt wird, wenn er offen ist und so<strong>mit</strong> komplett bis zur<br />
nächsten Action bzw. ActivityFinalNode durchlaufen werden kann. Dadurch<br />
ist sichergestellt das sich keine Tokens zwischen den Actions befinden, also beispielsweise<br />
an einer JoinNode stecken bleiben können.<br />
3 Qualitätskriterium für Workflows: Soundness<br />
Bei der Erstellung <strong>von</strong> Workflowdiagrammen können leicht Modellierungsfehler<br />
geschehen. In [3] hat van der Aalst gängige Fehler identifiziert, die bei<br />
der Erstellung <strong>von</strong> Workflowdiagrammen in jedem Fall vermieden werden sollten.<br />
Überflüssige Aufgaben sind all die, die bei der Ausführung des Workflows<br />
niemals bearbeitet werden. Diese Aufgaben machen das Diagramm nur unnötig<br />
komplex und können weggelassen werden. Deadlocks entstehen, wenn Aufgaben<br />
kreisförmige Abhängigkeiten untereinander aufweisen. Wenn zum Beispiel Aufgabe<br />
A erst dann ausgeführt werden kann, wenn Aufgabe B bereits erledigt ist,<br />
Aufgabe B im Gegenzug aber auf den Abschluss <strong>von</strong> Aufgabe A wartet, dann<br />
werden die Aufgaben nie abgeschlossen und der Workflow nicht bis zum Ende<br />
ausgeführt. Für einen Workflow muss außerdem eindeutig definiert werden,<br />
wann er gestartet und wann er beendet wird, das bedeutet, er sollte genau einen<br />
Startzustand und einen Endzustand aufweisen. Des weiteren muss sichergestellt<br />
werden, dass sich beim Erreichen des Endzustandes keine weiteren Aufgaben in<br />
Ausführung befinden. Ein Workflow der diese Eigenschaften aufweist, erfüllt das<br />
Kriterium der Soundness bzw. kann als sound bezeichnet werden.<br />
In [1] hat Soltenborn das Kriterium der Soundness speziell auf <strong>UML</strong> <strong>Aktivitäten</strong>diagramme<br />
übertragen. Ein <strong>UML</strong> <strong>Aktivitäten</strong>diagramm ist sound, wenn<br />
folgende Bedingungen erfüllt sind:<br />
1. Das Diagramm muss genau eine InitialNode und eine ActivityFinalNode<br />
enthalten.<br />
2. Für jede Action im Diagramm muss zumindest eine Möglichkeit bestehen,<br />
ausgeführt zu werden.<br />
3. Wenn ein Token die ActivityFinalNode erreicht, dürfen sich keine weiteren<br />
Tokens mehr im <strong>Aktivitäten</strong>diagramm befinden.<br />
4. Irgendwann muss ein Token die ActivityFinalNode erreichen.<br />
Für unser Beispiel „Spielertransfer“ lässt sich leicht erkennen, dass Bedingung 1<br />
erfüllt ist. Um die anderen Bedingungen zu überprüfen muss man sich überlegen<br />
welche möglichen Ausführungsszenarien für das Diagramm in Frage kommen. Da
der Workflow recht übersichtlich gehalten wurde, existieren nur zwei verschiedene<br />
Ausführungsszenarien.<br />
– Wenn sich die Manager über eine Ablösesumme einig werden können, dann<br />
wird ein Token über die MergeNode zur Action „Vertragsabschluss“ geroutet.<br />
Da eine MergeNode nur Tokens routet, jedoch nicht zusammenfasst, wandert<br />
ebenfalls ein Token <strong>von</strong> der Action „Probetraining zu „Vertragsabschluss“.<br />
Der Vertrag wird ein zweites Mal unterzeichnet. Beide Tokens bleiben an der<br />
Action „Vertragsabschluss“ stecken, weil am anderen Eingang der JoinNode<br />
kein Token zu Verfügung steht und so<strong>mit</strong> keine Tokens zusammengefasst<br />
werden können. Die Ausführung verstößt gegen Bedingung 4 der Soundness<br />
Kriterien, da kein Token die ActivityFinalNode erreicht.<br />
– Wenn sich die Manager nicht auf eine Ablösesumme einigen können, dann<br />
wandert ein Token zur Action „Transferabbruch“. Das Token der Action<br />
„Probetraining wandert hingegen weiter zur Action „Vertragsabschluss“. Dadurch<br />
werden sowohl „Vertragsabschluss“ als auch „Transferabbruch“ ausgeführt.<br />
Anschließend werden die beiden Tokens an der JoinNode zusammengefasst<br />
und schließlich erreicht ein Token die ActivityFinalNode. Dieses<br />
Ausführungsszenario verstößt gegen keines der Soundness Kriterien, es stellt<br />
jedoch bezogen auf den Anwendungskontext „Spielertransfer“ eine nicht beabsichtigte<br />
Ausführung dar, die allerdings durch das allgemeine Kriterium<br />
der Soundness nicht als Fehler identifiziert werden kann.<br />
Unser Beispiel ist nicht sound, da ein Ausführungsszenario existiert, das gegen<br />
eine der Soundnessbedingungen verstößt. Für komplexe Diagramme lässt sich<br />
eine manuelle Überprüfung auf Soundness, wie sie gerade vorgenommen wurde,<br />
jedoch kaum realisieren, da die Anzahl der möglichen Ausführungsszenarien bei<br />
komplexen Diagramm unüberschaubar groß wird. Daher ist es erstrebenswert<br />
die Überprüfung <strong>von</strong> Soundness <strong>mit</strong> Hilfe <strong>von</strong> Computern vorzunehmen.<br />
Bedingung 1 ist eine strukturelle Anforderung an das Diagramm. Die Bedingung<br />
lässt sich <strong>mit</strong> syntaktischen Mitteln recht einfach überprüfen. Beispielsweise<br />
könnte ein grafischer Editor, der das Metamodell der <strong>UML</strong> <strong>Aktivitäten</strong>diagramme<br />
implementiert, und der zur Erstellung dieser Diagramme dient, direkt<br />
überprüfen, wie viele Instanzen der InitialNode und der ActivityFinalNode<br />
für das jeweilige Diagramm existieren.<br />
Die Bedingungen 2-4 beziehen sich hingegen auf den Tokenfluss, also auf das<br />
dynamische Verhalten innerhalb des Diagramms. Das Verhalten kann nur auf<br />
semantischer Ebene definiert werden. Wie bereits erwähnt, hat die OMG für<br />
<strong>UML</strong> <strong>Aktivitäten</strong>diagramme keine formale Semantik spezifiziert. Die Spezifikation<br />
der <strong>UML</strong> <strong>Aktivitäten</strong>diagramme muss daher zunächst um eine formale<br />
Semantik erweitert werden. Erst dann kann eine Überprüfung der Bedingungen<br />
automatisiert durchgeführt werden. Eine Methode zur Spezifikation einer formalen<br />
Semantik ist das <strong>von</strong> Hausmann entwickelte Dynamic Meta Modeling.
4 Dynamic Meta Modeling<br />
Dynamic Meta Modeling (<strong>DMM</strong>) ist eine Technik zur formalen Definition <strong>von</strong><br />
Modellsemantiken, für visuelle Modellierungssprachen, deren Syntax durch ein<br />
Metamodell definiert ist. Abbildung 3 gibt einen Überblick darüber, welche zusätzlichen<br />
Definitionen <strong>DMM</strong> neben dem bereits vorhandenen Metamodell bereitstellt.<br />
Zunächst erstellt <strong>DMM</strong> ein erweitertes semantisches Metamodell, das<br />
<strong>mit</strong> Hilfe <strong>von</strong> Metarelationen auf das syntaktische Metamodell gemappt wird.<br />
Dieses Verfahren nennt sich Denotational Meta Modeling. Da sich <strong>mit</strong> einem Metamodell<br />
nur statische Konzepte ausdrücken lassen, legt <strong>DMM</strong> zusätzlich Graphtransformationsregeln<br />
fest, die beschreiben, wie sich die Instanzen des semantischen<br />
Metamodells über die Zeit verändern können. Graphtransformationsregeln<br />
dienen da<strong>mit</strong> der Definition der dynamischen Semantik. Aus der Anwendung der<br />
Graphtransformationsregeln auf Instanzen des semantischen Metamodells entsteht<br />
ein Transitionssystem. Dieses beschreibt nach und nach alle Zustände, die<br />
die jeweilige Modellinstanz annehmen kann. Bezogen auf <strong>UML</strong> <strong>Aktivitäten</strong>diagramme<br />
sind dies die möglichen Varianten des Tokenflusses durch das Diagramm.<br />
4.2. Introduction to graph transformations 41<br />
Syntax<br />
Definition<br />
Meta Model<br />
Expression<br />
Model elements<br />
semantic<br />
mapping<br />
Semantics Definition<br />
Static Semantics<br />
Enhanced Meta Model<br />
conforms to<br />
Transition System<br />
States<br />
Dynamic Semantics<br />
Graph Transformation<br />
Rules<br />
conforms to<br />
Language<br />
AbbildungFigure 3. Überblick 4.1: Overview über die Dynamic of the <strong>DMM</strong> Meta approach Modeling Technik [4]<br />
Model (Instance)<br />
this correlates to the requirements formulated above. Finally, we will see how<br />
Die Grundlage für die Erstellung des semantischen Metamodells bildet zunächst<br />
<strong>DMM</strong> can be applied to <strong>UML</strong> Activities.<br />
das syntaktische Metamodell. Da die meisten syntaktischen Elemente auch eine<br />
Semantik besitzen, können ihre Klassen aus dem syntaktischen Metamodell<br />
übernommen und entsprechend modifiziert, bzw. erweitert werden, indem ihnen<br />
Assoziationen 4.2 Introduction zu anderen Klassen tound graph neue Operationen transformations<br />
hinzugefügt werden.<br />
Für alle rein semantischen Konzepte, wie zum Beispiel den Tokenfluss bei <strong>UML</strong><br />
In this section we want to give a brief introduction to the idea of graph transformations.<br />
[BH04] is a good introduction to graph transformations in general;<br />
more information can be found in [Roz97, CMR + 97, EHK + 97, EEPPR04].<br />
Graphs are a powerful formalism to describe complex structures and systems.<br />
They are heavily used in the area of software engineering (for instance,<br />
we have seen in definition 3.2 how an instance of a class diagram can be interpreted<br />
as a graph).<br />
Graph transformations are a formalism that allows to precisely specify<br />
how graphs can evolve. This is exactly the usage of graph transformations
<strong>Aktivitäten</strong>diagrammen, werden neue Klassen erstellt. In Abbildung 4 ist ein<br />
Ausschnitt des semantischen Metamodells für <strong>UML</strong> <strong>Aktivitäten</strong>diagramme dargestellt.<br />
Die vier Klassen Token, Offer, BufferNode und ActivityExecution wurden<br />
gegenüber dem syntaktischen Metamodell hinzugefügt.<br />
Die Klasse Token modelliert die Kontrolleinheiten die durch das Diagramm bewegt<br />
werden. Tokens werden <strong>von</strong> Actions benötigt um ausgeführt werden zu<br />
können. Um Tokens zwischenzuspeichern, verfügen Actions über BufferNodes<br />
an ihren Ein- und Ausgängen. Ein Token, das an einer BufferNode verfügbar ist,<br />
wird durch die Offer Klasse ausgedrückt. Offer Objekte können <strong>mit</strong> der neuen<br />
Methode „canCarry(o:Offer)“ über Edges transportiert werden. BufferNodes<br />
können Offers <strong>mit</strong> der Methode „acceptOffer(o:Offer)“ akzeptieren. Wenn eine<br />
Offer akzeptiert wird, wird das assoziierte Token in einem Schritt <strong>von</strong> der offerierenden<br />
zur akzeptierenden BufferNode bewegt. Die Verwaltung der Tokens<br />
und die Ausführung der Actions regelt die Klasse ActivityExecution. So<br />
sorgt sie zum Beispiel dafür, dass beim Start der Ausführung ein Token an<br />
der InitialNode des Diagramms erzeugt wird. Wenn keine Tokens mehr im<br />
Diagramm vorhanden sind und keine Action mehr ausgeführt wird, endet die<br />
ActivityExecution.<br />
Activity<br />
1<br />
executes<br />
0..*<br />
0..*<br />
ActivityNode<br />
1<br />
source<br />
1<br />
ActivityEdge<br />
1<br />
carries<br />
Offer<br />
0..1<br />
0..*<br />
target<br />
1<br />
0..*<br />
1<br />
0..*<br />
belongs to<br />
ActivityExecution<br />
1<br />
ControlNode DecisionNode<br />
BufferNode<br />
1<br />
carries<br />
Token<br />
0..*<br />
0..*<br />
ObjectNode<br />
Action<br />
Abbildung 4. Ausschnitt Fig. 3. aus Enhanced dem semantischen <strong>UML</strong> Activity Metamodell meta model für <strong>UML</strong> <strong>Aktivitäten</strong> [2]<br />
decisionNode.flow()<br />
Insgesamt wurden dem semantischen Metamodell deutlich mehr Klassen, als die<br />
:Offer<br />
vier genannten, hinzugefügt. Die vier beschriebenen Klassen verdeutlichen jedoch<br />
die wesentlichen Konzepte. Eine komplette Beschreibung des semantischen<br />
carries<br />
carries {new}<br />
Metamodells für {destroyed} <strong>UML</strong> <strong>Aktivitäten</strong>diagramme findet sich im Anhang der Disser-<br />
target<br />
source<br />
tation <strong>von</strong> Hausmann :ActivityEdge [4]. Dort decisionNode:DecisionNode<br />
sind zudem alle Methoden:ActivityEdge aufgeführt, die den<br />
Klassen hinzugefügt wurden. Da die Ausführung einer Methode dynamisches<br />
Fig. 4. <strong>DMM</strong> rule decisionNode.flow()<br />
transition system’s point of view, the result is a branch, representing all possible<br />
executions of the Activity at that point. Figure 5 shows one possible application<br />
of rule decisionnode.flow(). In this case, the offer is routed along the top edge of<br />
the DecisionNode. The right part of that figure shows two consecutive states of<br />
the Activity.<br />
The resulting transition system represents the complete behavior of the Activity<br />
under consideration. It will be the basis for analysis of the Activity, using
Verhalten impliziert, können die Folgen der Ausführung nicht im Metamodell<br />
beschrieben werden. Stattdessen wird jede Methode durch eine Graphtransformationsregel<br />
beschrieben, die darstellt wie sich Instanzen des Metamodells durch<br />
die Methodenausführung verändern.<br />
In Abschnitt 2 wurde beschrieben, dass die Instanz eines Metamodells als Graph<br />
angesehen werden kann, dessen Knoten die einzelnen Objekte und dessen Kanten<br />
die Assoziationen zwischen den Objekten sind. Eine Graphtransformationsregel<br />
beschreibt, wie ein solcher Graph verändert werden kann. Jede Graphtransformationsregel<br />
T besitzt, wie in Abbildung 5 eine linke Seite L und eine rechte<br />
Seite R, wobei L und R selbst Graphen sind. Eine Transformationsregel T ist<br />
auf einen Graphen G anwendbar, wenn es einen Morphismus zwischen L und<br />
G gibt. Bei der Anwendung <strong>von</strong> T auf G werden alle Elemente aus G entfernt,<br />
die in L aber nicht in R vorkommen. Anschließend werden dem Graphen G alle<br />
Elemente hinzugefügt, die in R aber nicht in L vorkommen. So entsteht aus G<br />
der neue Graph H.<br />
42 Chapter 4. Dynamic Meta Modeling<br />
L<br />
A<br />
v<br />
C<br />
m r<br />
u<br />
A B<br />
v<br />
C<br />
G H<br />
u<br />
u<br />
y<br />
B<br />
B<br />
w<br />
D<br />
z<br />
w<br />
D<br />
E<br />
r<br />
d r<br />
R<br />
A<br />
x<br />
C<br />
u<br />
A B<br />
Figure 4.2: Example of a graph transformation. Since there is a matching mr from L to G, a new graph H = dr Abbildung 5. Konzept einer Graphtransformationsregel T [4]<br />
(G) is derived.<br />
Jede Graphtransformationsregel hat in <strong>DMM</strong> eine visuelle Repräsentation. In<br />
Abbildung 6 ist die Regel fork.getOffer()* dargestellt. Die linke und die<br />
are rechte added Seite to dieser G, andRegel elements werden being in der both<strong>DMM</strong> in L Notation and R remain zusammengefasst. unchanged (the Al-<br />
latter le Elemente is called diethe <strong>mit</strong>application einem destroyed contextmarkiert of the rule). sind, tauchen By applying nur ina Lrule auftound a<br />
graph<br />
alle Elemente<br />
G, a new<br />
die<br />
graph<br />
<strong>mit</strong> new<br />
H is<br />
markiert<br />
derived<br />
sind,<br />
which<br />
tauchen<br />
differs<br />
nur<br />
to G<br />
in<br />
as<br />
R auf.<br />
described<br />
Das durchgeabove.<br />
Figure 4.2 illustrates this procedure. It is taken from [Hau05, p. 71].<br />
In <strong>DMM</strong>, the mapping from L to G needs to be injective (if this would not<br />
be the case, an element of G could satisfy two or more roles in one rule). This<br />
is a restriction to graph transformations, but makes the development of proper<br />
rules much easier.<br />
<strong>DMM</strong> follows the Single Pushout approach. This is related to the way<br />
dangling edges—edges which have lost one of their anchoring vertices through<br />
the application of a rule—are treated. In the Single Pushout approach, these<br />
edges are implicitly deleted; in other approaches, edges can only be deleted<br />
x<br />
C<br />
m’ r<br />
u<br />
u<br />
B<br />
B<br />
z<br />
E
strichene Offer Objekt markiert eine Negative Application Condition (NAC),<br />
das bedeutet, dass die Regel nur dann anwendbar ist, wenn noch kein Offer<br />
Objekt <strong>mit</strong> der ForkNode assoziiert ist. Das als Multiobjekt dargestellte Edge<br />
Objekt in der oberen linken Ecke, visualisiert eine Universal Quantified Structure<br />
(UQS), das heißt, die ForkNode darf <strong>mit</strong> beliebig vielen ausgehenden Edges<br />
assoziiert sein. Der Asterik hinter dem Regelnamen bedeutet, dass es sich um<br />
eine BigStep Regel handelt. BigStep Regeln können weitere Regeln (SmallStep<br />
Regeln) aufrufen. Im Beispiel wird bei Ausführung der Regel eine weitere Regel<br />
fork.spawnOffer(e) aufgerufen, was dazu führt, dass das Offer Objekt für die<br />
ausgehenden Edges der ForkNode vervielfältigt wird. Die Anwendung der Regel<br />
fork.getOffer()* auf den Graphen G bewirkt, dass die Kante zwischen den<br />
Knoten „in“ und „o“ gelöscht wird und eine neue Kante zwischen den Knoten<br />
„o“ und „fork“ erstellt wird. Anschließend wird die Regel fork.spawnOffer(e)<br />
auf den Graphen angewendet.<br />
4.4. Graphical representation of <strong>DMM</strong> rules 57<br />
fork.getOffer()*<br />
in:Edge<br />
carries<br />
{destroyed}<br />
spawnOffer(e)<br />
target<br />
o:Offer<br />
fork:<br />
ForkNode<br />
source<br />
{new}<br />
carries<br />
P_canCarry(o)<br />
carries<br />
first<br />
Figure 4.8: Rule fork.getOffer()∗<br />
:Edge<br />
e:Edge<br />
4.4 Wenn Graphical auf einen Graphen representation G mehrere Regeln anwendbar ofsind, <strong>DMM</strong> dann wirdrules jede<br />
As we mentioned in section 4.1, one major goal of <strong>DMM</strong> was to provide a<br />
dynamic semantics which is easily understandable. For this, the formalism of<br />
graph transformations has been chosen, which has the advantage that graph<br />
transformation rules of course have a visual representation: The two graphs<br />
comprising the left-hand and right-hand side of a rule.<br />
Since <strong>DMM</strong> is targeted at language experts, and since knowledge of the<br />
<strong>UML</strong> can be presumed by that target audience, Hausmann decided to provide<br />
a graphical representation of the rules which is very similar to <strong>UML</strong> Communication<br />
Diagrams3 dann erneut auf die Anwendbarkeit <strong>von</strong> <strong>DMM</strong> Regeln überprüft werden, so dass<br />
sich nach und nach ein großes Transitionssystem aus Graphen und Regelanwendungen<br />
aufbaut. Das Transitionssystem beinhaltet alle Zustände die ein ein<br />
Diagramm während seiner Ausführung annehmen kann. Die automatische Generierung<br />
solcher Transitionssysteme ist <strong>mit</strong> Tools wie GROOVE möglich, und<br />
wird in Abschnitt 5 vorgestellt. Doch zunächst wird erläutert, wie sich Soundness<br />
<strong>mit</strong> <strong>DMM</strong> formalisieren lässt.<br />
.<br />
Figure 4.8 shows an example of a <strong>DMM</strong> rule which contains all concepts<br />
described in the last sections. Let us investigate this example in detail:<br />
• The name of the rule can be found in the upper left corner of the rule.<br />
The name of the example rule, fork.getOffer()∗, ends with an asterisk<br />
:Offer<br />
Abbildung 6. <strong>DMM</strong> Regel fork.getOffer()* [1]<br />
Regel einzeln auf G angewendet. Wenn n Regeln auf G anwendbar sind, dann<br />
entstehen aus G die Folgegraphen H1 bis Hn. Jeder dieser Folgegraphen muss
Um Soundness für <strong>UML</strong> <strong>Aktivitäten</strong>diagramme überprüfen zu können, werden<br />
die folgenden <strong>DMM</strong> Regeln benötigt:<br />
1. Die Regel finalnode.destroyToken1() ist anwendbar, wenn ein Token an<br />
einer ActivityFinalNode ankommt und es das einzige Token im gesamten<br />
Diagramm ist. Die Regel sorgt dafür, dass das ankommende Token vernichtet<br />
und die Aktivität da<strong>mit</strong> beendet wird.<br />
2. Die Regel finalnode.destroyToken2() ist anwendbar, wenn finalnode.destroyToken1()<br />
anwendbar ist, sich jedoch noch weitere Tokens im Diagramm<br />
befinden. Die Regel sorgt dafür, das alle Tokens im Diagramm vernichtet<br />
werden und die Aktivität da<strong>mit</strong> beendet wird.<br />
3. Für jede Action N im Diagramm, muss eine Regel N.start() erstellt werden,<br />
die genau dann anwendbar ist, wenn die Action ausgeführt werden<br />
kann.<br />
Aus der Graphenrepräsentation G des <strong>UML</strong> <strong>Aktivitäten</strong>diagramms muss unter<br />
Anwendung der <strong>DMM</strong> Regeln ein vollständiges Transitionssystem TS erstellt<br />
werden. Dies Transitionssystem kann dann auf bestimmte Eigenschaften hin<br />
überprüft werden.<br />
In Abschnitt 3 wurde definiert, dass ein <strong>UML</strong> <strong>Aktivitäten</strong>diagramm nur dann<br />
sound ist, wenn garantiert ist, das irgendwann ein Token die ActivityFinalNode<br />
erreicht und sich in diesem Moment keine weiteren Tokens im Diagramm befinden.<br />
Dies ist sichergestellt, wenn <strong>von</strong> jedem Zustand s des Transitionssystems TS<br />
ein Zustand s’ erreichbar ist, auf den die Regel finalnode.destroyToken1() anwendbar<br />
ist, oder s selbst durch Anwendung <strong>von</strong> finalnode.destroyToken1()<br />
erreicht wurde. Zusätzlich darf auf keinen Zustand s des Transitionssystems TS<br />
die Regel finalnode.destroyToken2() anwendbar sein.<br />
Weiterhin ist ein <strong>UML</strong> <strong>Aktivitäten</strong>diagramm nur dann sound, wenn jede Action<br />
im Diagramm zumindest einmal ausgeführt werden kann. Dies ist sichergestellt,<br />
wenn für jede Regel N.start() zumindest ein Zustand s im Transitionssystem<br />
TS existiert, auf den sie angewendet werden kann.<br />
5 Automatisierte Überprüfung auf Soundness<br />
In den vorherigen Abschnitten wurde beschrieben, dass ein <strong>UML</strong> <strong>Aktivitäten</strong>diagramm<br />
als Objektdiagramm dargestellt werden kann, welches ein Metamodell<br />
instanziiert. Dieses Objektdiagramm ist eine Repräsentation des <strong>UML</strong> <strong>Aktivitäten</strong>diagramms<br />
als Graph. Wendet man auf den Graphen nun die <strong>mit</strong> <strong>DMM</strong><br />
erstellten Graphtransformationsregeln an, so entsteht ein Transitionssystem, dessen<br />
Zustände die transformierten Graphen sind und dessen Transitionen die Anwendung<br />
der verschiedenen Transformationsregeln darstellen.
Das Softwaretool GROOVE [8] ermöglicht es, aus einem Anfangsgraphen und<br />
Graphtransformationsregeln automatisch ein Transitionssystem zu erzeugen. Es<br />
stellt einen Editor bereit, der zur Erstellung des Anfangsgraphen und der Regeln<br />
dient, einen Imager der die Graphen darstellen kann, einen Generator der<br />
das Transitionssystem erstellen kann und einen Modelchecker der das Transitionssystem<br />
auf Eigenschaften überprüfen kann, die in Computational Tree Logic<br />
(CTL) formuliert sind. Um ein Transitionssystem auf Soundness zu überprüfen<br />
müssen also zunächst alle Soundness Bedingungen aus Abschnitt 4 in CTL formuliert<br />
werden.<br />
Definition 1. Sei TS = (S,→,s0) ein Transitionssystem, in dem S alle Zustände<br />
enthält, die <strong>von</strong> s0 erreichbar sind. Sei Comp(s0) die Menge aller Pfade, die<br />
<strong>von</strong> Startzustand s0 aus berechnet werden können und sei p eine Aussage. Dann<br />
gilt:<br />
T S |= AF(p) :⇔ ∀s0s1 · · · ∈ Comp(s0)∃k ∈ N : p gilt für sk<br />
T S |= AG(p) :⇔ ∀s0s1 · · · ∈ Comp(s0)∀k ∈ N : p gilt für sk<br />
T S |= EF(p) :⇔ ∃s0s1 · · · ∈ Comp(s0)∃k ∈ N : p gilt für sk<br />
AF(p) bedeutet also, dass auf allen Pfaden des Transitionssystems TS ein Zustand<br />
existiert, auf den die Aussage p zutrifft. AG(p) bedeutet, dass auf allen<br />
Pfaden für jeden Zustand die Aussage p zutrifft. Und EF(p) bedeutet, dass ein<br />
Pfad im Transitionssystem einen Zustand enthält, auf den die Aussage p zutrifft.<br />
Mit Hilfe der CTL Ausdrücke lässt sich Soundness wie folgt definieren:<br />
Definition 2. Sei A ein <strong>UML</strong> <strong>Aktivitäten</strong>diagramm <strong>mit</strong> genau einer InitialNode<br />
und einer ActivityFinalNode. Sei s0 der Zustand <strong>von</strong> A, bei dem sich genau ein<br />
Token an der InitialNode befindet. Seien N1,...,Nk die Namen der Actions die<br />
in A enthalten sind und sei TS = (S,→,s0) ein Transitionssystem. A ist genau<br />
dann sound, wenn die folgenden CTL Formeln gelten:<br />
1. TS |= AF(finalnode.destroyToken1())<br />
2. TS |= AG(¬ (finalnode.destroyToken2()))<br />
3. TS |= EF(N1.start()) ∧ · · · ∧ EF (Nk.start())<br />
Bedingung 1 bedeutet, dass auf allen Pfaden des Transitionssystems die Regel<br />
finalnode.destroyToken1() angewendet wird. Wenn die Bedingung gilt, ist<br />
sichergestellt, dass irgendwann ein Token an der ActivityFinalNode ankommt.<br />
Bedingung 2 bedeutet, dass auf keinem der Pfade im Transitionssystem die Regel<br />
finalnode.destroyToken2() ausgeführt werden kann. In Verbindung <strong>mit</strong><br />
Bedingung 1 stellt dies sicher, dass sich in dem Moment wo ein Token an der<br />
ActivityFinalNode ankommt, keine weiteren Tokens im Diagramm befinden.<br />
Bedingung 3 bedeutet, dass für jede der Actions N1 bis Nk ein Pfad existiert,<br />
auf dem sie ausgeführt werden können. Gilt die Bedingung, dann ist sichergestellt<br />
dass das Diagramm keine überflüssigen Actions enthält.
Fig. 6. Tool chain<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
having graphs Abbildung as states 7 zeigt and die verschiedenen transitionsSchritte between die zur these automatisierten states. The Überprü- transitions are<br />
fung <strong>von</strong> Workflows auf Soundness notwendig sind. Zunächst wird ein Work-<br />
labeled with flowmodell the name benötigt. of the Dieses applied kann <strong>mit</strong> rule. einem <strong>UML</strong> Editor erstellt werden, der<br />
The generated das Metamodell transition der <strong>UML</strong> <strong>Aktivitäten</strong>diagramme system representsimplementiert. the complete Per XMI semantics (XML of the<br />
input model. Metadata It can Interchange) either Format be investigated kann das erstellte manually <strong>UML</strong> <strong>Aktivitäten</strong>diagramm by visualizing an it with the<br />
den <strong>DMM</strong> Property Checker übergeben werden. Zusätzlich zum <strong>UML</strong> Modell<br />
GROOVE simulator (e.g. to understand the precise semantics of a certain part<br />
benötigt der <strong>DMM</strong> Property Checker die Semantik der <strong>UML</strong> <strong>Aktivitäten</strong>dia-<br />
of a model), gramme, or automatic die <strong>mit</strong> Hilfe verification des <strong>DMM</strong> Semantics techniques Editor erstellt can be werden used. kann und die<br />
For the Soundness latter, Eigenschaften, the first step die <strong>mit</strong>isHilfe todes identify <strong>DMM</strong> Property the properties Editor erstellttowerden be modified,<br />
können. Aus diesen Eingaben generiert der <strong>DMM</strong> Property Checker dann einen<br />
and to formulate them with the help of the <strong>DMM</strong> property editor. The property<br />
Startgraphen im GXL (Graph Exchange Language) Format und Graphtransfor-<br />
checker then mationsregeln, generates dieavom setGROOVE of rules and Generator a start gelesen graph, werden from können. which Außerdem the GROOVE<br />
generatorgeneriert will compute er aus den the properties transition CTL Ausdrücke, system. Next, die an den theGROOVE GROOVE Modelche- model checker<br />
is utilizedcker toweitergeleitet verify whether werden. Der theGROOVE properties Generator hold erzeugt on the auscomputed dem Startgratransition<br />
phen unter Anwendung der Transformationsregeln ein Transitionssystem. Dieses<br />
system (for Transitionssystem the examplekann of figure vom GROOVE 1, the whole Modelchecker procedure auf dietook Einhaltung 13.7 der seconds). in The<br />
result of the CTLverification formulierten properties processüberprüft can then werden. be used Wennby allethe properties modeler erfüllt tower improve her<br />
model.<br />
6 Conclusion<br />
In this paper gewesen, we dass have dershown Modelchecker how to dasuse Diagramm dynamic als nicht metasound modeling einstuft. for Wenn 1) defining<br />
a semantics die Action for a „Verhandlung“ modeling formalism positiv verläuft, based bleiben onzwei a given Tokensmeta an der model, Action<br />
and 2)<br />
carrying out an analysis on the resulting semantics. As application, we used<br />
<strong>UML</strong> Activities which pose a particular challenge for semantics definitions due<br />
to their traverse-to-completion behavior introduced in <strong>UML</strong> 2.0. For the analysis,<br />
we have chosen a general quality criterion (soundness) for workflows which are<br />
a typical modeling domain for <strong>UML</strong> Activities. As a result, we now have a tool<br />
chain which allows for the automatic analysis of soundness for workflows (using<br />
the GROOVE toolset for the generation of the transition system as well as for<br />
model checking).<br />
<br />
Abbildung 7. Überblick über die einzelnen Schritte der Workflowanalyse [2]<br />
den, ist das Diagramm sound, wenn nicht muss das <strong>UML</strong> <strong>Aktivitäten</strong>diagramm<br />
im <strong>UML</strong> Editor überarbeitet werden und kann dann erneut getestet werden.<br />
Da mir der <strong>DMM</strong> Property Editor nicht zur Verfügung stand, konnte ich im<br />
Rahmen dieser Seminararbeit leider keine automatisierte Überprüfung des Workflowbeispiels<br />
„Spielertransfer“ aus Abbildung 1 durchführen. Es wäre zu erwarten
„Vertragsabschluss“ stecken, da an der darauffolgenden JoinNode keine Zusammenfassung<br />
der Tokens erfolgen kann. Folglich wird die ActivityFinalNode<br />
nicht erreicht, so das die Regel finalnode.destroyToken1() auf diesem Pfad<br />
des Transitionssystems nicht angewendet werden kann.<br />
6 Zusammenfassung & Ausblick<br />
Im Rahmen dieser Seminararbeit, wurde die Workflowmodellierung <strong>mit</strong> <strong>UML</strong><br />
<strong>Aktivitäten</strong>diagrammen vorgestellt. Um die Qualität <strong>von</strong> Workflowdiagrammen<br />
bewerten zu können, wurde in Abschnitt 3 das Kriterium der Soundness erläutert.<br />
Da sich eine Überprüfung <strong>von</strong> Workflowdiagrammen auf Soundness bei<br />
komplexen Diagrammen kaum manuell realisieren lässt, wurde gezeigt, wie diese<br />
Überprüfung automatisiert vorgenommen werden kann. Grundvoraussetzung für<br />
die automatische <strong>Analyse</strong> eines Diagramms ist das Vorhandensein einer formalen<br />
Semantik. Das in Abschnitt 4 beschriebene Dynamic Meta Modeling konnte<br />
erfolgreich zur Spezifikation einer formalen Semantik eingesetzt werden. Auf<br />
Grundlage dieser Semantik lässt sich <strong>mit</strong> dem Modelchecker GROOVE eine automatische<br />
Überprüfung der Soundness vornehmen.<br />
Soundness ist nur eines <strong>von</strong> vielen erdenklichen Qualitätskriterien. Daher bietet<br />
es sich für die Zukunft an, sowohl speziellere Qualitätskriterien für Workflows<br />
als auch allgemeine Qualitätskriterien für <strong>UML</strong> <strong>Aktivitäten</strong>diagramme zu entwickeln.<br />
Diese könnten dann ebenfalls <strong>mit</strong>tels GROOVE überprüft werden. Für das<br />
konkrete Beispiel „Spielertransfer“ könnten etwa Bedingungen spezifiziert werden,<br />
die festlegen, dass die Actions „Transferabbruch“ und „Vertragsabschluss“<br />
nie zusammen ausgeführt werden dürfen. Dies wäre dann ein speziell auf einen<br />
Anwendungsfall zugeschnittenes Qualitätskriterium.<br />
Dynamic Meta Modeling eignet sich nicht nur für die Spezifikation <strong>von</strong> Semantiken<br />
für <strong>UML</strong> Diagramme. Es ist ein universelles Verfahren, dass auch für andere<br />
visuelle Modellierungsprachen, deren Syntax in Form eines Metamodells spezifiziert<br />
ist, verwendet werden kann. Da allein schon der Versuch eine Modellsemantik<br />
zu formalisieren, Qualitätsmängel in der Sprachspezifikation aufdecken<br />
kann, wäre es wünschenswert, wenn möglichst viele Entwickler <strong>von</strong> Modellierungsprachen<br />
diesen Versuch unternehmen würden.
Literatur<br />
[1] C. Soltenborn: Analysis of <strong>UML</strong> Workflow Diagrams with Dynamic Meta Modeling<br />
Techniques, Master’s thesis, University of <strong>Paderborn</strong> (2006)<br />
[2] G. Engels, C. Soltenborn and H. Wehrheim: Analysis of <strong>UML</strong> Activities Using<br />
Dynamic Meta Modeling, Lecture Notes in Computer Science, vol. 4468, pp. 76-90,<br />
Springer (2007)<br />
[3] W. van der Aalst: Verification of Workflow Nets, Lecture Notes in Computer<br />
Science, vol. 1248, pp. 407-426, Springer (1997)<br />
[4] J. H. Hausmann: Dynamic Meta Modeling : A Semantics Description Technique<br />
for Visual Modeling Languages, PhD thesis, University of <strong>Paderborn</strong> (2005)<br />
[5] D. Harel and B. Rumpe: Modeling Languages: Syntax, Semantics and All That<br />
Stuff, Part I: The Basic Stuff, Technical Report MCS00-16, Mathematics & Computer<br />
Sience, Weizmann Institute of Science (2000)<br />
[6] C. Bock: <strong>UML</strong> 2 Activity and Action Models Part 4: Object Nodes, Journal Of<br />
Object Technology, vol.3 pp.27 - 41, (2004)<br />
[7] Object Management Group: <strong>UML</strong> Specification V2.0,<br />
http://www.omg.org/technology/documents/modeling_spec_catalog.htm,<br />
(2005)<br />
[8] GRaphs for Object-Oriented Verification (GROOVE): Webseite,<br />
http://groove.cs.utwente.nl/groove-home/, aufgerufen im Juni 2009