oose.
📅 Entdecke unsere MeetUps: Regelmäßige, kostenfreie Vorträge zu all unseren Themen! ✨
Deutsch

SysML-Frage: Warum man Ports nicht mit Assoziationen verbinden darf?

Blog offline

Dieser Artikel stammt aus unserem Blog, der nicht mehr betreut wird. Für Neuigkeiten zu oose und interessante Inhalte zu unseren Themen, folgt uns gerne auf LinkedIn.

Es ist verlockend, die kleinen Port-Kästchen im Blockdefinitionsdiagramm mit durchgezogenen Linien (=Assoziationen) zu verbinden, um auszudrücken, dass die entsprechenden Bausteine miteinander kommunizieren. Das ist verboten! Aber warum eigentlich? Darüber klärt dieser Blogpost auf.

Die SysML verbietet eine Assoziation zwischen Ports und ein gutes Modellierungswerkzeug sollte das auch nicht zulassen. Die folgende Abbildung konnte ich daher auch nur mit Hilfe eine Bildbearbeitungprogramms erstellen.

Verbotenerweise Ports mit Assoziationen verbinden

Um zu verstehen, warum das verboten ist, muss ich etwas weiter ausholen und die drei Ebenen der Modellierung mit SysML erläutern.

Definition, Anwendung, Objekte
Ein SysML-Modell unterscheidet die 3 Ebenen Definition, Anwendung und Objekte. Die Sprache SysML bietet für jede Ebene entsprechende Modellelemente und Diagramme an.
Das Blockdefinitionsdiagramm gehört, wie der Name schon sagt, zur Definitionsebene. Hier werden Dinge und Strukturen definiert. Das sind beispielsweise Blöcke, Assoziationen und Schnittstellenblöcke. Die Definition der Elemente ist unabhängig von ihrer Anwendung. Ein Block GPS-Sensor spezifiziert Eigenschaften des Sensors wie eine Art Datenblatt in einem Katalog. Dazu gehören auch die Schnittstellen des Sensors, die in SysML mit Ports beschrieben werden. Damit ist noch nicht beschrieben, wo und wie der Sensor eingesetzt wird.

Assoziationen werden in der Systemarchitekturmodellierung primär dafür verwendet, Teile eines Blocks zu definieren (PartProperty). Die Assoziation bzw. das Assoziationsende wird als Komposition modelliert (schwarze Raute). Sie zeigt auf die Definition des Teils (ein anderer Block) und spezifiziert am Assoziationsende Name und Multiplizität. In der obigen Abbildung definiert die linke Assoziation die Eigenschaft a von Typ A per Komposition als Teil des Blocks Assembly. Es ist eine Anwendung des Blocks A.

In der Anwendungsebene werden definierte Elemente benutzt. Meist sind in der SysML die Elemente der Anwendungsebene an der Syntax name:Definition zu erkennen. Beispielsweise sind die Teile eines Blocks so benannt. Ebenso die Ports, die eine Anwendung von Schnittstellendefinitionen (InterfaceBlock) sind.

Die Teile oder Ports werden im internen Blockdiagramm mit Konnektoren verbunden. Die sehen genauso aus wie eine Assoziation (durchgezogene Linie), sind aber ein anderes Modellelement und bedeuten auch etwas anderes. Die Assoziation ist definiert als „An Association specifies a semantic relationship that can occur between typed instances.” Und der Konnektor als “A Connector specifies links that enables communication between two or more instances.” Das klingt zunächst sehr ähnlich. Die Spezifikation gibt daher auch explizit eine abgrenzende Erläuterung dazu: „In contrast to Associations, which specify links between any instance of the associated Classifiers, Connectors specify links between instances playing the connected parts only.” Die Beziehung, die der Konnektor spezifiziert gilt nur in dem Kontext des Blocks, zu dem die verbundenen Teile gehören.

Die folgende Abbildung zeigt die interne Struktur des Blocks Assembly aus dem oberen Beispiel in einem internen Blockdiagramm. Diesmal ist die Verbindung zwischen den beiden Ports korrekt. Es ist ein SysML-Konnektor und keine Assoziation.

Ports mit Konnektoren verbinden

Im Verhaltensbereich wird auch zwischen Definition und Anwendung unterschieden. Beispielsweise findet man die Syntax name:Typ bei der CallBehaviorAction, die eine Anwendung einer anderen Aktivität ist.

Für die Beantwortung der Eingangsfrage ist es nicht relevant, aber der Vollständigkeit wegen noch eine kurze Erklärung der dritten Ebene: Die Objektebene repräsentiert Objekte (Instanzspezifikationen) und Objektstrukturen, die eine Momentaufnahme eines konkreten Systems beschreiben. Einsatzgebiete sind beispielsweise die Spezifikation von Testobjekten oder Objekte für die Simulation eines Modells.

Die Frage „Warum dürfen Ports nicht mit Assoziationen verbunden werden?“ ist mit diesen Ausführungen bereits beantwortet. In Kürze: Ports sind Elemente der Anwendungsebenen und die Assoziation ist eine Beziehung zwischen Elementen der Definitionsebene. Und das darf nicht vermischt werden.

Leider verleitet die grafische Darstellung dazu, Ports im Blockdefinitionsdiagramm mit Assoziationen zu verbinden. Ein Good Practice ist daher, im Blockdefinitionsdiagramm auf die grafische Darstellung von Ports zu verzichten und sie nur in den speziell dafür vorgesehenen Compartments aufzulisten:

In der Systemarchitekturmodellierung verwendet man die Assoziation primär, um zu beschreiben, dass ein Block andere Teile enthält (Komposition). Der Konnektor verbindet Elemente, um zu spezifizieren, dass sie miteinander kommunizieren.

Hat sich für Sie die Eingangsfrage geklärt? Wenn nicht, fragen Sie die noch offenen Punkte als Kommentar zu diesem Post oder schreiben Sie mir eine Email: tim.weilkiens@oose.de.

(Übersetzung des Original-Posts: https://model-based-systems-engineering.com/2018/10/23/sysml-question-why-you-can-not-connect-ports-with-associations/)