18.01.2014 Aufrufe

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

40 Deklarative UML metamodellbasierte Workflowmodellierung<br />

✞<br />

1 context Iteration::finish()<br />

2 pre isIterRunning: state=#waiting or state=#running<br />

3 post isIterDone: state@pre=#waiting implies state=#done<br />

4 post isIterWaiting: state@pre=#running implies state=#waiting<br />

✝<br />

Listing 3.4: OCL-Vor- <strong>und</strong> Nachbedingungen für die Operation finish() der Klasse Iteration<br />

☎<br />

✆<br />

also das Verhalten der Oberklasse haben <strong>und</strong> evtl. zusätzliche Funktionalität hinzufügen. Das hat zur Folge,<br />

dass Vorbedingungen von gleichen Operationen nur gleich bleiben oder abgeschwächt werden können.<br />

Nachbedingungen können nur gleich bleiben oder verschärft werden.<br />

Bei der Programmiersprache Eiffel werden zur Umsetzung für Operationen, die in Unterklassen überschrieben<br />

werden folgende Klauseln verwendet. Vorbedingungen können mit require else nur<br />

abgeschwächt werden. D.h. die Vorbedingungen der Oberklasse <strong>und</strong> die Vorbedingungen der Unterklasse<br />

werden mit einem or logisch verknüpft. Nachbedingungen können mit ensure then nur<br />

verschärft werden. Dort werden die Nachbedingungen der Oberklasse mit der Unterklasse mit dem logischen<br />

and verknüpft.<br />

In der OCL-Spezifikation werden zwar contracts in Verbindung mit Vor- <strong>und</strong> Nachbedingungen erwähnt<br />

[OCL10], aber das Substitutionsprinzip, das eine Abschwächung der Vorbedingung <strong>und</strong> Verschärfung<br />

der Nachbedingung erfordert wird nicht vorgegeben. Das Verhalten ohne Substitutionsprinzip ist für das<br />

DMWM-Metamodell das gewünschte.<br />

Sollte bei der Implementierung des DMWM-Ansatzes das Design by contract inkl. Substitutionsprinzip<br />

gelten, müssten die bisher vorgestellten Vor- <strong>und</strong> Nachbedingungen angepasst werden. Ein Problem würde<br />

ansonsten bei der Nachbedingung von finish() auftreten. Ein Objekt, das sich im Zustand running befindet,<br />

wird durch die Verknüpfung der Zeile 7 in Listing 3.3 <strong>und</strong> Zeile 4 in Listing 3.4 mit dem logischen and<br />

Operator die Nachbedingung state=#done and state=#waiting erhalten. Diese würde offensichtlich ein<br />

Widerspruch enthalten.<br />

3.2.3.2 OCL-Hilfsfunktionen im Metamodell<br />

In UML lassen sich Operationen im Klassendiagramm mit OCL-Termen verknüpfen, wovon u.a. in der<br />

UML-Spezifikation gebrauch gemacht wird [UML10]. Die Operationen haben nach dem Prinzip von OCL<br />

keine Seiteneffekte auf das Objektmodell.<br />

Mit dieser Eigenschaft ist die Möglichkeit zur Berechnung der transitiven Hülle bei reflexiven Assoziationen<br />

gegeben. Ein Beispiel ist dafür in [KHGB] spezifiziert. Auch für DMWM werden verschiedene transitive<br />

Hüllen unter Verwendung der OCL berechnet.<br />

Die Operation getSuccObjects() in Listing 3.5 ist u.a. für die So<strong>und</strong>ness-Prüfung der Prozessmodelle<br />

notwendig, um potenzielle Deadlocks schon während der Designtime zu finden. Dieses Thema wird in<br />

Abschnitt 3.2.6 näher behandelt. Die dort eingeführten OCL-Invarianten benötigen diese Operationen.<br />

Die Operation getFlowObjects() in Listing 3.5 wird u.a. für das Einsammeln der Modellierungselemente<br />

im Prozessmodell benötigt. Wie in Abschnitt 3.2.1 beschrieben, müssen somit nicht alle Elemente im<br />

Prozessmodell mit dem entsprechenden Prozessobjekt über die Assoziation includes verb<strong>und</strong>en werden. Sie<br />

können indirekt über die Berechnung der transitiven Hülle dem Prozessobjekt zugeordnet werden.<br />

Im DMWM-Metamodell, dem Klassendiagramm von Abbildung 3.2, sind die hier vorgestellten Funktionen<br />

aus Übersichtlichkeitsgründen weggelassen worden. Dort sind nur die Operationen aufgeführt, die eine<br />

Schnittstelle zum Nutzer darstellen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!