Anwendungsfalldiagramm: Unterschied zwischen den Versionen

Aus FLBK-Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Einführung in die Use-Case-Modellierung ==
== Einführung ==
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz '''UML''', ist eine standardisierte grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Softwareteilen und anderen Systemen. Das '''Anwendungsfalldiagramm''' (im englischsprachigen Raum '''Use Case Diagramm''') gehört zu den Verhaltensdiagrammen der UML.
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz '''UML''', ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das '''Anwendungsfalldiagramm''' (engl. '''Use Case Diagramm''') ist ein elementares Verhaltensdiagramm der UML.


=== Zielsetzung im Requirements Engineering ===
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des [[Lastenheft]]s und bilden die primäre Grundlage für das [[Pflichtenheft]].
In der Analysephase (Anforderungsermittlung / Requirements Engineering) ist es das primäre Ziel des Anwendungsfalldiagramms, das geplante System aus der '''externen Beobachterperspektive''' zu beschreiben. Es modelliert das "Was" (welche Funktionen bietet das System?) und grenzt sich strikt vom "Wie" (wie werden diese Funktionen technisch umgesetzt?) ab.  


Es dient als zentrales Kommunikationsmittel zwischen:
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:
* '''Auftraggebern / potenziellen Anwendern (Fachseite):''' Diese können das Diagramm ohne Programmierkenntnisse verstehen.
# '''Akteure (engl. ''actors''):''' Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine '''Rolle''' und keine konkrete Person.
* '''Auftragnehmern (Entwicklerteam / Systemarchitekten):''' Für diese bildet das Diagramm die Grundlage für die Systemarchitektur.
# '''Anwendungsfälle (engl. ''use cases''):''' Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.
# '''Beziehungen (engl. ''relations''):''' Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.


Daher fließen Anwendungsfalldiagramme als strukturierte Anforderungsbeschreibung in das '''Lastenheft''' (Forderungen des Auftraggebers) und später detailliert in das '''Pflichtenheft''' (Umsetzungsvorgaben des Auftragnehmers) ein.
''Hinweis zur Abgrenzung:'' Ein Anwendungsfalldiagramm bildet '''keine''' zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.


=== Die drei Kernelemente ===
== Gesamtbeispiel (Systemkontext) ==
Das Diagramm besteht aus drei essenziellen Bausteinen:<ref>Heide Balzer: ''Lehrbuch der Objektmodellierung - Analyse und Entwurf'', Spektrum Akademischer Verlag, S. 62 ff.</ref>
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden '''Systemrahmens (Systemgrenze / System Boundary)''' zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.
# '''Akteure (engl. ''actors''):''' Sie repräsentieren externe Entitäten, die mit dem System interagieren. Wichtig: Ein Akteur ist immer eine '''Rolle''' (z. B. "Kunde"), niemals eine konkrete Person (z. B. "Herr Müller"). Auch externe Fremdsysteme (wie ein Zahlungsanbieter) treten als Akteure auf.
# '''Anwendungsfälle (engl. ''use cases''):''' Sie beschreiben eine in sich abgeschlossene Aufgabe, die für den Akteur einen messbaren, fachlichen Mehrwert erzeugt.
# '''Beziehungen (engl. ''relations''):''' Die Interaktionspfade zwischen Akteur und Anwendungsfall oder die Abhängigkeiten von Anwendungsfällen untereinander.


''Hinweis zur Abgrenzung:'' Der detaillierte, prozessuale Ablauf (Kontrollfluss) innerhalb eines Anwendungsfalls wird im Use-Case-Diagramm bewusst abstrahiert. Hierfür werden in der UML ergänzend '''Aktivitätendiagramme''' oder '''Sequenzdiagramme''' genutzt.
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]


== Systemkontext und Systemgrenze ==
== Notation ==
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden '''Systemrahmens (Systemgrenze / System Boundary)''' zusammen.
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:
Die Systemgrenze ist ein fundamentales Konzept: Sie trennt das zu entwickelnde System strikt von seiner Umwelt. Akteure befinden sich als externe Rollen immer '''außerhalb''' des Systems, während die Anwendungsfälle die Funktionalität '''innerhalb''' des Systems definieren.


[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel: Der Rahmen definiert die Systemgrenze. Akteure stehen außerhalb, Use Cases innerhalb.]]
# '''Akteure identifizieren:''' Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp <code>«system»</code>. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. ''Kunde'', ''Administrator''). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.
# '''Anwendungsfälle definieren:''' Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format ''Subjekt-Prädikat-Objekt'' erfolgen (z. B. ''Artikel suchen'', ''Passwort zurücksetzen'').
# '''Beziehungen verknüpfen:''' Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.


== Notation und Erstellung ==
== Beziehungen ==
Die Erstellung eines Anwendungsfalldiagramms folgt methodisch diesen drei Schritten:
 
# '''Akteure identifizieren:''' Wer oder was interagiert mit der Software? Akteure werden als „Strichmännchen“ (Menschen) oder als Rechteck mit dem Stereotyp <code><<system>></code> (externe Systeme) dargestellt. Der Name muss zwingend eine präzise Rolle beschreiben (z. B. ''Sachbearbeiter'', ''Administrator''). Generische Namen wie "User" sind als Modellierungsfehler zu betrachten.
# '''Anwendungsfälle definieren:''' Welche fachlichen Ziele sollen erreicht werden? Anwendungsfälle werden als Ellipsen gezeichnet. Die Benennung erfolgt imperativ oder im Infinitiv im Format ''Subjekt-Prädikat-Objekt'' (z. B. "Rechnung stornieren", "Artikel suchen"). Die Formulierung muss prägnant und fachlich verständlich sein.
# '''Beziehungen verknüpfen:''' Akteure und Anwendungsfälle werden durch Kommunikationspfade (Linien) verbunden, um den Interaktionsfluss sichtbar zu machen.
 
== Beziehungsarten (Relationen) ==


=== Assoziation ===
=== Assoziation ===
Assoziationen sind die grundlegenden Kommunikationspfade zwischen Akteur und Use Case. Sie drücken aus, dass der Akteur mit dem System interagiert, um den Anwendungsfall auszuführen. Eine Assoziation ist immer binär (verbindet exakt zwei Elemente). Ein Akteur kann mit mehreren Use Cases assoziiert sein und umgekehrt.
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.


==== Ungerichtete Assoziation ====
==== Ungerichtete Assoziation ====
Wird als durchgehende Linie ohne Pfeilspitzen dargestellt. Sie zeigt an, dass eine Kommunikation stattfindet, lässt aber die Initiierungsrichtung (wer den Anstoß gibt) offen. Dies ist die häufigste und flexibelste Form in frühen Analysephasen.
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.


[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation: Die Interaktion ist bidirektional.]]
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]


==== Gerichtete Assoziation ====
==== Gerichtete Assoziation ====
Verfügt über eine offene Pfeilspitze und gibt die Navigierbarkeit bzw. den Initiator an. Ein Pfeil zum Use Case bedeutet: Der Akteur stößt den Prozess aktiv an. Ein Pfeil zum Akteur bedeutet: Das System initiiert die Kommunikation zum Akteur (z. B. automatischer E-Mail-Versand an den Kunden). Können beide den Prozess anstoßen, wird auf Pfeile komplett verzichtet.
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen.  
* Ein Pfeil, der '''auf den Use Case gerichtet''' ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.
* Ein Pfeil, der '''auf den Akteur zeigt''', besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.


[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation: Die Pfeilspitze definiert den Initiator.]]
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]


=== Multiplizitäten ===
=== Multiplizitäten ===
Multiplizitäten (auch Kardinalitäten genannt) definieren, wie viele Instanzen eines Akteurs zeitgleich an wie vielen Instanzen eines Anwendungsfalls beteiligt sind.
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.


[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]


'''Lesebeispiel der Abbildung:'''
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:
* An einem Tischtennis-Rundlauf (Use Case) nehmen zwingend mindestens 3 bis beliebig viele (<code>*</code>) Spielerinnen teil (Notation: <code>3..*</code>). Jede einzelne Spielerin nimmt jedoch zu einem gegebenen Zeitpunkt an exakt 1 Rundlauf-Spiel teil (Notation: <code>1</code>).
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist <code>3</code>, die Obergrenze ist als <code>*</code> (beliebig viele) definiert (Notation: <code>3..*</code>). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: <code>1</code>).
* Ein Spiel kann völlig ohne oder mit beliebig vielen Schiedsrichterinnen stattfinden (<code>0..*</code>). Eine Schiedsrichterin überwacht gleichzeitig maximal ein Spiel (<code>0..1</code>).
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: <code>0..*</code>). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: <code>0..1</code>).


''Prüfungshinweis:'' Multiplizitäten spielen in Use-Case-Diagrammen in der Praxis eine untergeordnete Rolle, da sie das Diagramm schnell überladen. Ihre volle konzeptionelle Bedeutung entfalten sie erst im strukturellen [[Klassendiagramm]].
''Hinweis für die Praxis:'' Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].


=== Abhängigkeiten zwischen Anwendungsfällen ===
=== Includes (Inklusion) ===
Eine '''Include-Beziehung''' (dt. ''beinhalten'' oder ''einschließen'') beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases).


==== Include-Beziehung (<<include>>) ====
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp <code>«include»</code> gekennzeichnet ist. Der Pfeil startet immer beim '''Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases'''.
Die <code>include</code>-Beziehung dient der '''Vermeidung von Redundanz'''. Sie lagert gemeinsames Verhalten in einen eigenen Use Case aus. Der gestrichelte Pfeil zeigt vom Basis-Use-Case zum inkludierten Use Case.
* '''Semantik:''' Der inkludierte Anwendungsfall wird '''immer (zu 100 %)''' ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.
* '''Semantik:''' Wenn der Basis-Anwendungsfall ausgeführt wird, wird der inkludierte Anwendungsfall '''zwingend immer (zu 100%)''' mit ausgeführt. Der Basis-Use-Case ist ohne das Inkludat unvollständig.


[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung: Der inkludierte Prozess wird zwingend aufgerufen.]]
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]


==== Extend-Beziehung (<<extend>>) ====
=== Extend (Erweiterung) ===
Die <code>extend</code>-Beziehung modelliert '''Ausnahmebehandlungen oder optionale Erweiterungen'''. Der gestrichelte Pfeil zeigt (im Gegensatz zum Include!) vom erweiternden Use Case (Extension) zurück auf den Basis-Use-Case.
Eine '''Extend-Beziehung''' (dt. ''erweitern'') beschreibt ein '''optionales''' Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.
* '''Semantik:''' Die Erweiterung wird nur unter bestimmten Bedingungen ausgeführt. Der Basis-Use-Case ist auch ohne die Erweiterung vollständig lauffähig.


Die Integration erfolgt über sogenannte '''Erweiterungspunkte (Extension Points)'''. Diese markieren im Basis-Use-Case (unterhalb eines Trennstrichs) die genaue Stelle des Eingriffs. Optional kann über ein Notizsymbol eine logische '''Bedingung (Condition)''' angefügt werden, die prüft, ob die Erweiterung überhaupt zündet.
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp <code>«extend»</code> gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim '''Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases'''.


[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung mit definierten Erweiterungspunkten und auslösender Bedingung (Condition).]]
Der Basis-Use-Case deklariert sogenannte '''Erweiterungspunkte (Extension Points)''', die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort <code>extension points:</code> gefolgt von den Namen der Punkte steht.
 
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort <code>Condition:</code> gefolgt von der logischen Bedingung in geschweiften Klammern <code>{...}</code> sowie den Verweis auf den zugehörigen Erweiterungspunkt.
* '''Semantik:''' Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.
 
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]


=== Generalisierung (Vererbung) ===
=== Generalisierung (Vererbung) ===
Die Generalisierung entspricht dem aus der Objektorientierung bekannten Konzept der Vererbung ('''"Ist-ein"-Beziehung'''). Sie wird mit einer durchgehenden Linie und einer hohlen, geschlossenen Pfeilspitze dargestellt, die vom speziellen zum allgemeinen Element zeigt.
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische '''"Ist-ein"-Beziehung''', analog zur Vererbung in der objektorientierten Programmierung.
 
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer '''geschlossenen, hohlen Dreieckspfeilspitze''' dargestellt. Der Pfeil zeigt immer '''vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)'''.


[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung: Spezialisierung von Anwendungsfällen oder Akteuren.]]
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]


* '''Generalisierung von Akteuren:''' Der Akteur ''Fahrer'' ist eine Spezialisierung des Akteurs ''Anwender''. Der Fahrer erbt alle Zugriffsrechte und Use Cases des allgemeinen Anwenders (z. B. "Login"), besitzt darüber hinaus aber erweiterte, spezifische Berechtigungen (z. B. "Fahrzeug starten").
* '''Generalisierung von Akteuren:''' Im Beispiel ist der Akteur ''Fahrer'' eine Spezialisierung von ''Anwender''. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case ''Login durchführen''), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.
* '''Generalisierung von Use Cases:''' Ein allgemeiner Anwendungsfall wie ''„Zahlung durchführen“'' kann durch spezialisierte Anwendungsfälle wie ''„Per Kreditkarte zahlen“'' oder ''„Per PayPal zahlen“'' generalisiert werden. Die speziellen Fälle erben die grundlegende Funktionalität, setzen sie aber im Detail abweichend um.
* '''Generalisierung von Anwendungsfällen:''' Ein abstrakter Anwendungsfall wie ''„Medium brennen“'' kann durch spezialisierte Anwendungsfälle wie ''„CD brennen“'' oder ''„DVD brennen“'' geerbt und ausdifferenziert werden.


[[Kategorie:Modellierung]]
[[Kategorie:Modellierung]]
[[Kategorie:FI_I_SDM]]
[[Kategorie:FI_I_SDM]]
[[Kategorie:AHR_I_Informatik LK]]
[[Kategorie:AHR_I_Informatik LK]]

Aktuelle Version vom 27. Mai 2026, 10:59 Uhr

Einführung

Die Unified Modeling Language (Vereinheitlichte Modellierungssprache), kurz UML, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das Anwendungsfalldiagramm (engl. Use Case Diagramm) ist ein elementares Verhaltensdiagramm der UML.

Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des Lastenhefts und bilden die primäre Grundlage für das Pflichtenheft.

Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:

  1. Akteure (engl. actors): Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine Rolle und keine konkrete Person.
  2. Anwendungsfälle (engl. use cases): Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.
  3. Beziehungen (engl. relations): Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.

Hinweis zur Abgrenzung: Ein Anwendungsfalldiagramm bildet keine zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.

Gesamtbeispiel (Systemkontext)

Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden Systemrahmens (Systemgrenze / System Boundary) zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.

Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen

Notation

Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:

  1. Akteure identifizieren: Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp «system». Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. Kunde, Administrator). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.
  2. Anwendungsfälle definieren: Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format Subjekt-Prädikat-Objekt erfolgen (z. B. Artikel suchen, Passwort zurücksetzen).
  3. Beziehungen verknüpfen: Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.

Beziehungen

Assoziation

Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.

Ungerichtete Assoziation

Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.

Ungerichtete Assoziation als einfache Verbindungslinie

Gerichtete Assoziation

Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen.

  • Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.
  • Ein Pfeil, der auf den Akteur zeigt, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).
  • Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.
Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators

Multiplizitäten

Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.

Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs

Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:

  • An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist 3, die Obergrenze ist als * (beliebig viele) definiert (Notation: 3..*). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: 1).
  • An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: 0..*). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: 0..1).

Hinweis für die Praxis: Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen Klassendiagramm.

Includes (Inklusion)

Eine Include-Beziehung (dt. beinhalten oder einschließen) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases).

Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp «include» gekennzeichnet ist. Der Pfeil startet immer beim Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases.

  • Semantik: Der inkludierte Anwendungsfall wird immer (zu 100 %) ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.
Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten

Extend (Erweiterung)

Eine Extend-Beziehung (dt. erweitern) beschreibt ein optionales Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.

Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp «extend» gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases.

Der Basis-Use-Case deklariert sogenannte Erweiterungspunkte (Extension Points), die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort extension points: gefolgt von den Namen der Punkte steht.

Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort Condition: gefolgt von der logischen Bedingung in geschweiften Klammern {...} sowie den Verweis auf den zugehörigen Erweiterungspunkt.

  • Semantik: Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.
Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)

Generalisierung (Vererbung)

Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische "Ist-ein"-Beziehung, analog zur Vererbung in der objektorientierten Programmierung.

Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer geschlossenen, hohlen Dreieckspfeilspitze dargestellt. Der Pfeil zeigt immer vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse).

Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten
  • Generalisierung von Akteuren: Im Beispiel ist der Akteur Fahrer eine Spezialisierung von Anwender. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case Login durchführen), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.
  • Generalisierung von Anwendungsfällen: Ein abstrakter Anwendungsfall wie „Medium brennen“ kann durch spezialisierte Anwendungsfälle wie „CD brennen“ oder „DVD brennen“ geerbt und ausdifferenziert werden.