12.08.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!