Metamodellbasierte und hierarchieorientierte ... - RosDok
Metamodellbasierte und hierarchieorientierte ... - RosDok
Metamodellbasierte und hierarchieorientierte ... - RosDok
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