Abhängigkeitsbeziehung
# Abhängigkeitsbeziehung

Eine Abhängigkeitsbeziehung (engl. Dependency) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.

## Beschreibung

Eine Abhängigkeitsbeziehung in der UML2 ist eine gerichtete Beziehung zwischen einem abhängigen (client) und einem unabhängigen Element (supplier). Beide Endpunkte können auch aus mehreren abhängigen bzw. unabhängigen Elementen bestehen.

Zwischen Abhängigkeitsbeziehungen und Assoziationen gibt es einen entscheidenden Unterschied: von Abhängigkeitsbeziehungen können keine Instanzen angelegt werden. Sind zwei Klassen mit einer Assoziation verbunden, sind auch zwei Instanzen dieser Klassen mit einer Instanz der Assoziation, das heißt, mit einer Objektbeziehung, verbunden. Für Abhängigkeitsbeziehungen gibt es keine vergleichbaren Konsequenzen, weil von ihnen keine Instanzen angelegt werden können.

Graphisch wird eine Abhängigkeitsbeziehung als gestrichelte Linie mit einer offenen Pfeilspitze dargestellt. Die Pfeilspitze wird beim unabhängigen Element gezeichnet.

## Arten von Abhängigkeitsbeziehungen

### Verwendungsbeziehung

Die Verwendungsbeziehung (Usage) gibt an, dass das abhängige Element das unabhängige Element benutzt. Eine Verwendungsbeziehung wird mit dem Schlüsselwort «use» dekoriert.

### Abstraktionsbeziehung

Falls ein Element eine Abstraktion eines anderen Elements darstellt, kann zwischen den beiden eine Abstraktionsbeziehung (Abstraction) modelliert werden. Im allgemeinen Fall ist eine Abstraktionsbeziehung am Schlüsselwort «abstract» erkennbar. Spezialfälle weichen jedoch davon ab. «derive» weist darauf hin, dass das abhängige aus dem unabhängigen Element abgeleitet werden kann. «trace» zeigt an, dass zwischen den beiden Modellelementen eine Abhängigkeitsbeziehung besteht, die bei Änderungen im unabhängigen Element zu berücksichtigen ist. Falls ein Element ein anderes Element verfeinert, zum Beispiel indem es zusätzliche Details modelliert, kann eine Abhängigkeitsbeziehung mit dem Schlüsselwort «refine» darauf hinweisen.

### Inklusionsbeziehung

Die Inklusionsbeziehung bedeutet, dass ein Anwendungsfall das Verhalten eines anderen Anwendungsfalls miteinbezieht, das heißt, dass der inkludierte Anwendungsfall aufgerufen wird, wenn der abhängige andere abläuft. Eine Inklusionsbeziehung wird mit dem Schlüsselwort «include» dekoriert.

### Realisierungsbeziehung

Die Realisierungsbeziehung (Realization) und die Schnittstellenrealisierungsbeziehung (InterfaceRealization) sind zwei weitere Formen der Abstraktionsbeziehung. Hier steht das unabhängige Element für eine Spezifikation und das abhängige für eine Realisierung derselben. Oft modelliert diese Beziehung, dass eine Klasse eine Schnittstelle implementiert, ein Muster, das in Modellen für objektorientierte Software häufig vorkommt.

Die graphische Notation für eine Realisierungsbeziehung unterscheidet sich von der generischen Notation für eine Abhängigkeitsbeziehung, indem die Pfeilspitze wie bei der Generalisierung als nicht ausgefüllte, geschlossene Spitze gezeichnet wird. Vergleiche das Beispiel rechts.

### Verteilungsbeziehung

Die Verteilungsbeziehung (engl. Deployment) modelliert eine Abhängigkeit zwischen einem Artefakt und einem Knoten. Sie zeigt an, dass das Artefakt an den Knoten ausgeliefert und dort auf geeignete Art und Weise installiert wird. Eine Verteilungsbeziehung wird mit dem Schlüsselwort «deploy» dekoriert.

Die Abbildung rechts zeigt zwei Verteilungsbeziehungen zwischen zwei Artefakten und einem Knoten.

