18.01.2014 Aufrufe

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

Metamodellbasierte und hierarchieorientierte ... - RosDok

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.

5.3 Definition konsistenter CTT-Aufgabenmodelle 105<br />

stellt des Weiteren sicher, dass genau eine Aufgabe mit keiner Vorgängeraufgabe verb<strong>und</strong>en <strong>und</strong> damit<br />

Startknoten ist. Analog dazu muss ein Endknoten existieren. Alle weiteren Aufgaben müssen in einer Kette<br />

über die Assoziationsklasse TempOp verb<strong>und</strong>en sein, da durch die Invariante die Multiplizitätsbedingung 1<br />

sowohl für die Rolle prev als auch für die Rolle next gilt.<br />

✞<br />

1 context TempOp inv taskStructure:<br />

2 prev.compTask = next.compTask<br />

3<br />

4 context CompTask inv startTaskAndEndTaskExist:<br />

5 task−>select(prev.isUndefined())−>size()=1 and<br />

6 task−>select(next.isUndefined())−>size()=1<br />

7<br />

8 context Disabling inv noDisablingWithOptionalTasks:<br />

9 next.hasNonOptionalLeafTaskDisabling()<br />

10<br />

11 context Choice inv noChoiceWithOptionalTasks:<br />

12 prev.hasNonOptionalLeafTaskChoicePredecessor() and next.hasNonOptionalLeafTaskChoiceSuccessor()<br />

✝<br />

Listing 5.1: OCL-Invarianten zur Festlegung der strukturellen Eigenschaften von Aufgabenbäumen<br />

☎<br />

✆<br />

Zwei Invarianten, die die Konsistenzprobleme von Abbildung 5.3(a) <strong>und</strong> 5.3(b) identifizieren sollen, sind in<br />

den zwei unteren Invarianten von Listing 5.1 angegeben. Beide verwenden Operationsaufrufe, die seiteneffektfreie<br />

OCL-Abfragen repräsentieren. Der Operationsaufruf hasNonOptionalLeafTaskDisabling geht<br />

vom Disabling-Operator zum nächsten Aufgabenobjekt <strong>und</strong> traversiert die Unteraufgaben abhängig von den<br />

temporalen Operatoren <strong>und</strong> deren Bindungsstärke. Die relevanten Aufgaben dürfen keine Optionalitätseigenschaft<br />

besitzen.<br />

Für die zweite Invariante werden die OCL-Operationen hasNonOptionalLeafTaskChoicePredecessor <strong>und</strong><br />

hasNonOptionalLeafTaskChoiceSuccessor verwendet. Entsprechend der temporalen Beziehungen <strong>und</strong> deren<br />

Bindungsstärke werden auch hier die Unteraufgaben in der Baumhierarchie traversiert. Die relevanten<br />

Aufgaben werden auf die Optionalitätseigenschaft geprüft, die nicht gesetzt sein darf. Auf die genaue<br />

Umsetzung der OCL-Abfrageoperationen wird hier nicht eingegangen.<br />

Im folgenden wird das USE-Tool analog zu DMWM in Abschnitt 3.5.3 eingesetzt, um MCTT-Aufgabenmodelle<br />

zu modellieren. Zwei inkonsistente MCTT-Aufgabenmodelle sind in Abbildung 5.3 angegeben.<br />

Dort ist zu sehen, dass die Inkonsistenzen durch die OCL-Invariantenüberprüfung unmittelbar während der<br />

Designtime angezeigt werden <strong>und</strong> der Modellierer darauf hingewiesen wird. Werkzeuge zum Identifizieren<br />

der Ursachen der Inkonsistenzen bei DMWM-Modelle wurden in Abschnitt 3.5.4 präsentiert. Diese können<br />

ebenso bei MCTT eigesetzt werden.<br />

In Abbildung 5.6(a) ist ein MCTT-Modell von Abbildung 5.3(a) zu sehen, bei dem die abbrechende Aufgabe<br />

C als optional spezifiziert ist. Aus Gründen, die bereits in Abschnitt 5.3.1 erklärt wurden, ist dieses Modell<br />

nicht so<strong>und</strong>.<br />

Das USE-Tool evaluiert permanent die OCL-Invarianten <strong>und</strong> erkennt in Abbildung 5.6(a), dass die Invariante<br />

noDisablingWithOptionalTasks verletzt wurde. Wie in Abschnitt 3.5.4 beschrieben, können hier Hilfsmittel<br />

<strong>und</strong> Tools eingesetzt werden, um den Gr<strong>und</strong> der Invariantenverletzung <strong>und</strong> involvierten Modellobjekte<br />

herauszufinden.<br />

Ein weiteres Beispiel ist in Abbildung 5.6(b) angegeben. Dafür wurde das CTT-Modell von Abbildung 5.3(b)<br />

herangezogen <strong>und</strong> nachmodelliert. Aus Gründen, die ebenfalls bereits in Abschnitt 5.3.1 vorgestellt wurden,<br />

ist das Modell inkonsistent. In Abbildung 5.6(b) ist des Weiteren zu sehen, dass die Invariantenverletzung von<br />

noChoiceWithOptionalTasks angezeigt wird. Der Fehler ist damit erkannt worden <strong>und</strong> kann vom Modellierer

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!