#Diagramm
Definition: Das [UML Anwendungsfalldiagramm](https://de.wikipedia.org/wiki/Anwendungsfall_(UML)) (auch Use Case Diagramm genannt) ist ein Modellelement in der [[UML]] und beschreibt die Zusammenhänge zwischen einer Menge von Anwendungsfällen und den daran beteiligten Akteuren. Dabei stellt dieses das externe Verhalten des Systems in einer bestimmten Situation dar. Ein Anwendungsfall beschreibt, <u>was</u> das System leisten muss, aber <u>nicht wie</u> es das leisten soll.
## Table of Contents
- [[#Schema|Schema]]
- [[#Schema#Akteur|Akteur]]
- [[#Schema#System|System]]
- [[#Schema#Assoziation|Assoziation]]
- [[#Beziehungen|Beziehungen]]
- [[#Beziehungen#Include|Include]]
- [[#Beziehungen#Extend|Extend]]
- [[#Beziehungen#Generalisierung|Generalisierung]]
- [[#Beispiel|Beispiel]]
---
### Schema
![[UML-Anwendungsfalldiagramm-Schema.png]]
#### Akteur
menschliche Akteure
#### System
nicht menschliche Akteure / Systeme
#### Assoziation
Akteure besitzen Assoziationen zu Anwendungsfällen, wenn sie an den dort beschriebenen
Abläufen aktiv oder passiv beteiligt sind.
### Beziehungen
Zwischen den Anwendungsfällen kann es folgende 3 verschiedene Arten von Beziehungen geben, die durch die Beschriftung und die verschiedene Pfeilarten unterschieden werden.
#### Include
Durch die include-Beziehung wird dargestellt, dass innerhalb eines Anwendungsfalls 1 ein
anderer Anwendungsfall 2 vorkommt. Der Anwendungsfall 2 wird <u>immer</u> ausgeführt, wenn der erste Anwendungsfall eintritt. Eine include-Beziehung wird mit `<<include>>` angegeben. Bei include-Beziehung <u>zeigt</u> die Pfeilspitze immer <u>auf den Anwendungsfall, um welchen der eigentliche Anwendungsfall erweitert wird.</u>
#### Extend
Durch die extend-Beziehung wird dargestellt, dass innerhalb eines Anwendungsfalls 1 ein
anderer Anwendungsfall 2 vorkommt. Der Anwendungsfall 2 wird <u>unter bestimmten Umständen</u> ausgeführt, wenn der erste Anwendungsfall eintritt. Dieser Umstand (Bedingung) wird als Notiz an die extend-Beziehung angehängt. Diese Beziehung eignet sich, zur Darstellung von optionalem Verhalten. Eine exclude-Beziehung wird mit `<<exclude>>` angegeben, sowie mit der Bedingung. Die Pfeilspitze von extend-Beziehung <u>zeigt</u> immer <u>auf den Anwendungsfall, um welchen beim Eintreten der Bedingung erweitert werden kann.</u>
#### Generalisierung
Durch die Generalisierung werden Spezialfälle A und B Verhalten und Bedeutung vom
Anwendungsfall 1 erben. Damit ist Anwendungsfall 1 eine Verallgemeinerung der Spezialfälle. Die Generalisierung ist die einzige Beziehung, welche zwischen Akteuren auftritt.
### Beispiel
**Aufgabestellung Terminvergabe:**
*Sie arbeiten im Projekt zur Entwicklung einer Software zur Terminvergabe in Arztpraxen mit.*
*Bei der Analyse ergeben sich folgende Anforderungen:*
- *Mit dem Buchungssystem können Patienten und Angestellte der Ärzte arbeiten.*
- *Für das Buchungssystem ist ein vorheriger Login erforderlich.*
- *Patienten können Termine anfragen.*
- *Patienten können bei Bedarf aus einer Liste eine spezielle Terminart auswählen.*
- *Ein Angestellter muss eine Terminanfrage abschließen (bestätigen oder absagen).*
- *Hierzu muss dieser sich zuerst eine Liste aller Terminanfragen anzeigen lassen.*
- *Bei dem Abschließen der Terminanfrage muss der Angestellte, wenn eine spezielle*
*Terminart ausgewählt wurde, die Ressourcen planen.*
*Erstellen Sie ein Anwendungsfalldiagramm anhand der beschriebenen Anforderungen.*
![[UML-Anwendungsfalldiagramm-Beispiel.png]]