# Anwendungsfall (UML)

* Strukturdiagramme der UML
* Klassendiagramm
* Komponentendiagramm
* Kompositionsstrukturdiagramm
* Objektdiagramm
* Paketdiagramm
* Profildiagramm
* Verteilungsdiagramm
* Verhaltensdiagramme der UML
* Aktivitätsdiagramm
* Anwendungsfalldiagramm
* Interaktionsübersichtsdiagramm
* Kommunikationsdiagramm
* Sequenzdiagramm
* Zeitverlaufsdiagramm
* Zustandsdiagramm
Ein Anwendungsfall (englisch use case) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.

## Beschreibung

Anwendungsfälle sind eine Technik für die Dokumentation von Anforderungen an ein Softwaresystem, die ursprünglich von Ivar Jacobson unabhängig von der Unified Modeling Language beschrieben wurde, die er aber als Mitentwickler in die Modellierungssprache einfließen ließ. Auch die UML 2, als Weiterentwicklung der UML 1.x, behielt Anwendungsfälle bei.
Ein Anwendungsfall in der UML 2 ist die Deklaration eines Verhaltens, das ein modelliertes System nach außen anbietet. Er spezifiziert eine Menge von Aktionen, die ein System ausführen muss, um ein beobachtbares Resultat zu generieren, das für einen oder mehrere Akteure von Bedeutung ist, etwa weil sie damit ein fachlich motiviertes Ziel erreichen. Die UML 2 vermeidet in diesem Zusammenhang jedoch den Begriff System und verwendet stattdessen den Begriff Subjekt (subject). Sie will damit ausdrücken, dass ein Anwendungsfall das erforderliche Verhalten einer Vielzahl von Modellelementen der UML 2 deklarieren kann, zum Beispiel jenes einer Klasse, einer Komponente oder eines Knotens. Sind mehrere Subjekte einem Anwendungsfall zugeordnet, deklariert dieser das erwartete Gesamtverhalten aller beteiligten Subjekte.
Per definitionem deklariert ein Anwendungsfall Verhalten, das nach außen sichtbar ist. Die Elemente, die das Verhalten von außen „sehen“, die es also anstoßen oder von seinen Resultaten abhängig sind, nennt man in der UML 2 Akteure. In der UML 2 modelliert man die Beziehung zwischen Anwendungsfällen und Akteuren mit Hilfe von Assoziationen.
Das Modellelement Anwendungsfall in der UML 2 kann eigentlich nur deklarieren, dass ein Verhalten mit einem bestimmten Namen erforderlich ist, nicht aber wie dieses Verhalten im Detail aussehen soll. Falls weitere Einzelheiten zu diesem Verhalten (zum Beispiel einzelne Schritte im Ablauf, alternative Abläufe oder Ausnahmefälle) zu spezifizieren sind, muss ein Modellierer auf ergänzende Techniken zurückgreifen. Oft werden die Details des geforderten Verhaltens außerhalb der UML 2 in einem Textdokument festgehalten. Weil das Modellelement Anwendungsfall eine Spezialisierung einer aktiven Klasse ist, kann ihm aber auch eine Verhaltensbeschreibung zugeordnet werden, die die Detailanforderungen an das Verhalten festhält.

## Notationsbeispiele

Die beiden Darstellungen links zeigen zwei Möglichkeiten, wie ein Anwendungsfall mit dem Namen CD erstellen grafisch dargestellt werden kann.
Das Beispiel links zeigt eine Klasse, die als Subjekt für zwei Anwendungsfälle dient: den Anwendungsfall SMS verschicken und den Anwendungsfall Fotomessage verschicken. Der Akteur Sender ist mit beiden Anwendungsfällen assoziiert.

## Anwendungsfälle wiederverwenden

Die UML 2 stellt drei Techniken zur Verfügung, um einen Anwendungsfall bei der Deklaration eines anderen Anwendungsfalls wiederzuverwenden. Ein Anwendungsfall kann einen anderen Anwendungsfall spezialisieren, importieren oder erweitern.

### Spezialisieren eines Anwendungsfalls

Zwischen zwei Anwendungsfällen kann eine Generalisierungsbeziehung existieren. Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall das Verhalten des allgemeinen Anwendungsfalls überschreibt.

### Importieren eines Anwendungsfalls

Ein Anwendungsfall kann einen oder mehrere andere Anwendungsfälle importieren. Das bedeutet, dass das Verhalten des Anwendungsfalls zwingend das Verhalten des importierten Anwendungsfalls miteinschließt. Wo genau das Verhalten des importierten Anwendungsfalls eingefügt wird, geht aus der Notation für Anwendungsfälle nicht hervor. Wenn dieser Punkt (zum Beispiel für den Zweck des Modells) wichtig ist, muss er mit anderen Mitteln wie zum Beispiel einer detaillierten Verhaltensspezifikation oder mit einem Textdokument, das außerhalb der UML 2 erstellt wird, festgehalten werden.
Die Importbeziehung zwischen zwei Anwendungsfällen ist mit einer Abhängigkeitsbeziehung modelliert. Das Schlüsselwort «include» grenzt die Importbeziehung von anderen Abhängigkeitsbeziehungen ab. Das Pfeilende wird beim importierten Anwendungsfall gezeichnet.
Das nebenstehende Beispiel zeigt den Anwendungsfall „Musik-CD erstellen“, zu dem auch das Brennen der Musik-CD und das Erstellen eines Booklets gehört. Dementsprechend werden der Anwendungsfall „Musik-CD brennen“ und der Anwendungsfall „Booklet erstellen“ in den Anwendungsfall „Musik-CD erstellen“ importiert. Die Pfeilspitzen sind an den beiden importierten Anwendungsfällen angebracht.

### Erweitern eines Anwendungsfalls

Ein Anwendungsfall kann einen oder mehrere andere Anwendungsfälle erweitern. Jeder Anwendungsfall kann eine Liste von so genannten Erweiterungspunkten definieren. Wie in der Abbildung links ersichtlich, listet man die Erweiterungspunkte im inneren Bereich des Symbols für Anwendungsfälle auf. Ein Anwendungsfall erweitert nun einen anderen Anwendungsfall, indem er sich an einen von dessen Erweiterungspunkten „andockt“ und dabei eine Bedingung angibt, unter der er dessen Verhalten an dieser Stelle erweitert.
Die Erweiterungsbeziehung zwischen zwei Anwendungsfällen ist mit einer Abhängigkeitsbeziehung modelliert. Das Schlüsselwort «extend» grenzt die Erweiterungsbeziehung von anderen Abhängigkeitsbeziehungen ab. Das Pfeilende wird beim Anwendungsfall gezeichnet, der den Erweiterungspunkt zur Verfügung stellt.