Kommunikationsdiagramm (UML)
# Kommunikationsdiagramm (UML)

* Strukturdiagramme der UML
* Klassendiagramm
* Komponentendiagramm
* Kompositionsstrukturdiagramm
* Objektdiagramm
* Paketdiagramm
* Profildiagramm
* Verteilungsdiagramm
* Verhaltensdiagramme der UML
* Aktivitätsdiagramm
* Anwendungsfalldiagramm
* Interaktionsübersichtsdiagramm
* Kommunikationsdiagramm
* Sequenzdiagramm
* Zeitverlaufsdiagramm
* Zustandsdiagramm

Kommunikationsdiagramm (engl. communication diagram) heißt in der Unified Modeling Language (UML) ein Verhaltensdiagramm, das den Austausch von Nachrichten darstellt.

In älteren UML-Versionen wurden solche Diagramme als Kollaborationsdiagramm (engl. collaboration diagram) bezeichnet.

## Notation von Lebenslinien und Nachrichten

Die Abbildung links zeigt ein Beispiel eines Kommunikationsdiagramms mit einem Kopf- und einem Inhaltsbereich. Das optionale Schlüsselwort im Kopfbereich ist bei einem Kommunikationsdiagramm wie bei jedem Interaktionsdiagramm sd oder interaction.

Ähnlich wie in einem Sequenzdiagramm werden in einem Kommunikationsdiagramm Lebenslinien als Rechtecke dargestellt. Dieses Symbol „Lebenslinie“ zu nennen mag etwas seltsam erscheinen, denn im Kommunikationsdiagramm wird im Unterschied zum Sequenzdiagramm die gestrichelte Linie, die für die Zeitachse beim Austausch von Nachrichten steht, nicht angezeigt. Eine Nachricht wird als kurzer Pfeil gezeichnet. Die Richtung des Pfeils zeigt vom Sender zum Empfänger der Nachricht. Der Pfeil ist beschriftet mit einer Sequenznummer und einer Signatur der Nachricht, zum Beispiel der Signatur der Operation, falls es sich bei der Nachricht um einen synchronen Aufruf einer Operation handelt.

Jeder Verbindung im Kommunikationsdiagramm muss eine Assoziation im Klassendiagramm gegenüberstehen.

## Zeitliche Ordnung der Nachrichten

Die zeitliche Abfolge von Nachrichten wird in Kommunikationsdiagrammen mit Sequenzausdrücken modelliert. Jeder modellierten Nachricht ist ein Sequenzausdruck zugeordnet, aus dem hervorgeht, was die Vorgängernachrichten sind und welche Nachrichten allenfalls parallel ablaufen.

Ein Sequenzausdruck besteht aus einer Folge von mit einem Punkt (.) getrennten Sequenztermen, gefolgt von einem Doppelpunkt (:). Sequenzterme sind Zahlen, zum Beispiel 1, 10 oder 22, die optional von einem Kleinbuchstaben, zum Beispiel a oder b gefolgt werden. Folgende Zeichenfolgen sind also gültige Sequenzausdrücke: 1, 1.7, 1a.6, 1a.6c.2.

Die Bedeutung von Sequenzausdrücken ist durch drei Regeln gegeben:

Erstens gibt die Folge der Terme im Sequenzausdruck die Verschachtelungstiefe in einer Meldung an. Eine Nachricht mit dem Sequenzausdruck 1.2b.1 wird also von einer Ausprägung gesendet, nachdem diese eine Nachricht mit dem Sequenzausdruck 1.2b erhalten hat. In der Abbildung rechts folgt die Nachricht mit dem Sequenzausdruck 1.2b.1 auf die Nachricht mit dem Sequenzausdruck 1.2b, diese wiederum auf die Nachricht mit dem Sequenzausdruck 1.

Zweitens geben rein numerische Terme auf der gleichen Verschachtelungstiefe eine sequentielle Reihenfolge an. Die Abbildung rechts stellt also eine Interaktion dar, in der die Lebenslinie :B die Nachricht mit dem Sequenzausdruck 1.1 vor der Nachricht mit dem Sequenzausdruck 1.2 versendet.

Drittens bezeichnen Terme mit einem Buchstaben am Schluss Nachrichten, die parallel versendet werden. Im Diagramm rechts erkennt man also, dass die Nachricht mit dem Sequenzausdruck 1.1a und die Nachricht mit dem Sequenzausdruck 1.1b gleichzeitig versendet werden.

