Stereotyped Relationship vs. Metaconstraint mit source/target

EA’s metaconstraints sind ein mächtiges Werkzeug, um benutzerspezifische Einschränkungen zu definieren. Möchte man z. B. definieren, dass eine bestimmte Beziehung mit einem Stereotyp zwischen zwei Modell-Elementen (mit oder ohne Stereotyp) verwendet werden soll, bestehen mehrere Möglichkeiten.

Zwei unterschiedliche Ansätze führen zum selben Ziel:

  • Stereotyped Relationships: Diese Einschränkung kann zwischen zwei Stereotypen oder metaclass Modell-Elemente erstellt werden. In einem TaggedValue kann ein vorhandener Stereotyp einer Beziehung eingetragen werden.
  • Meta-Constraint: Diese Einschränkung kann unterschiedlich konfiguriert werden. Mit dem TaggedValue umlRole=source | target kann eine Einschränkung zwischen Modell-Element(en) und Beziehung. Sie Beispiel weiter unten. In der EA Hilfe finden wir auch Begriffe wie client | supplier; informationSource | informationTarget; All diese Konfigurationen führen zum selben Ergebnis, verwenden allerdings die dementsprechenden Begriffe aus dem UML Metamodell.

Folgendes Beispiel zeigt wie in einem Sequenzdiagramm stereotypisierte Lifelines (MyLifeline und YourLifeline) definiert werden und jeweils eine Message mit Stereotyp MySequence und YourSequence verwendet werden soll. D.h. diese Einschränkung fügt eine Regel hinzu, dass diese Beziehungen verwendet werden dürfen und auch im Quicklinker auftauchen.

 

 

Möchte man allerdings die Lifelines auch noch typisieren, also mit einem Classifier versehen muss das Profil geändert werden.

Wir ändern  die Stereotypen etwas. Sagen wir wir möchten den Stereotype <> und <> erstellen. In einem Sequenzdiagramm möchten wir nun Lifelines vom Typ <> oder <> verwenden, um diese mit der Message mit Stereotyp <> und <> zu verbinden. Das Profiel dazu sieht folgendermaßen aus:

Damit die Lifeline ebenfalls einen eigenen Stereotyp erhält, wurde der Stereotyp <> und <> erstellt. Auf diese Stereotypen können nun weitere Constraints definiert werden. Z. b., dass die Message mit Stereotyp <> nur zwischen <> erstellt werden kann. 

Bei <> geschieht dasselbe, nur mit einer anderen Constraint Technik.

Weiters wird ein Classifier Constraint eingeführt der besagt, dass ein <> oder <> jeweils den Typ <> oder <> haben dürfen. Dies fürht auch dazu, dass der EA beim Drag&Drop von <> oder <> eine zusützliche Drop as: option anbietet:

Es wird also eine Modell-Element vom Typ Lifeline mit Stereotyp <> aus dem Profil SupportCase erstellt. 

Wird eine Lifeline mit Stereotyp <> erstellt, führt die Classifier Constraint dazu, dass lediglich Modell-Elemente vom Typ Component mit Stereotyp <> ausgewählt werden können. Natürlich dasselbe auch für <>.

Ist der Stereotyp der Component (MyA) und der der Lifeline (<MyAInstance>) identisch, führt dies nicht zu dem gewünschtem Ergebnis! Da das Stereotyp auf Component und Lifeline angewendet werden kann, müssen Sie auswählen, was Sie erstellen möchten, was nicht so kritisch ist, aber da der Stereotyp <<MyASequence>>/<<MyBSequence>> die Message erweitert und diese auf <<MyA>>/<<MyB>> eingeschränkt ist, führt dies dazu, dass <<MyASequence>>/<<MyBSequence>>  auch zwischen Component mit Stereotype <<MyA>>/<<MyB>> verwendet werden kann!

Folgendes Profil definiert denselben Stereotyp für Component und Lifeline. Die angefügten Constraints werden allerdings ebenfalls auf Component und Lifeline Modell-Elemente mit den jeweiligen Stereotypen an denen die Constraint hängt angewendet!

Ein Duplizieren des Stereotyp Modell-Elements ist nicht anzuraten, da diese im Profil eindeutig und nur 1x definiert werden dürfen!

 

Veröffentlicht unter Best Practices, News
Schlagworte: