UML-Use-Case-Include

Eine Include-Beziehung zeigt, dass ein Use Case einen anderen Use Case immer einschließt und benötigt.

Der eingefügte Use Case ist notwendig und wird jedes Mal ausgeführt.


Symbol

[Use Case A] ────────<<include>>────────► [Use Case B]
              gestrichelte Linie
              mit <<include>>

Pfeilrichtung: Von A nach B = "A inkludiert B"


Wann verwendet man Include?

Use Case A benötigt immer die Funktionalität von Use Case B.

Typische Szenarien:


Visuelles Beispiel: Online-Shopping

     O
    /|\
    / \
   Kunde
     │
     │
     ↓
┌─────────────────┐
│   Bestellen     │
└─────────────────┘
         │
         │ <<include>>
         ↓
┌─────────────────┐
│  Anmelden       │ ← IMMER nötig!
└─────────────────┘
         │
         │ <<include>>
         ↓
┌─────────────────┐
│ Bezahlen        │ ← IMMER nötig!
└─────────────────┘

Erklärung:


Code-Analogie

Include-Beziehung = Funktionsaufruf:

public void bestellen() {
    anmelden();    // <<include>> - wird IMMER aufgerufen
    bezahlen();    // <<include>> - wird IMMER aufgerufen
    bestaetigen();
}

Beispiel: Bibliotheks-System

┌─────────────────┐
│  Buch ausleihen │
└─────────────────┘
         │
         │ <<include>>
         ↓
┌─────────────────┐
│ Benutzer prüfen │ ← Muss IMMER geprüft werden
└─────────────────┘
         │
         │ <<include>>
         ↓
┌─────────────────┐
│ Verfügbarkeit   │ ← Muss IMMER geprüft werden
│    prüfen       │
└─────────────────┘

Ablauf:

  1. Benutzer möchte Buch ausleihen
  2. System prüft immer Benutzer (registriert? Gebühren bezahlt?)
  3. System prüft immer Verfügbarkeit (Buch vorhanden?)

Include vs. Extend

Merkmal <> <> Häufigkeit IMMER OPTIONAL Richtung A inkludiert B B erweitert A Verwendung Pflicht-Funktionalität Zusatz-Funktionalität Beispiel Login bei Bestellung Gutschein bei Bestellung

Visualisierung:

Include (IMMER):
[Bestellen] ──<<include>>──► [Anmelden]
   └─► "Bestellen" braucht "Anmelden" IMMER

Extend (OPTIONAL):
[Bestellen] ◄──<<extend>>── [Gutschein einlösen]
   └─► "Gutschein" ist optional bei "Bestellen"

Praktisches Beispiel: ATM (Geldautomat)

     O
    /|\
    / \
   Kunde
     │
     ├──────────────────────────┐
     │                          │
     ↓                          ↓
┌─────────────┐        ┌─────────────┐
│Geld abheben │        │ Überweisen  │
└─────────────┘        └─────────────┘
     │                          │
     │ <<include>>              │ <<include>>
     ↓                          ↓
┌─────────────────────────────────┐
│  PIN eingeben & verifizieren    │ ← Für BEIDE nötig!
└─────────────────────────────────┘

Vorteil:


Regeln für Include

Wichtige Regeln

  1. Include ist zwingend: Der eingeschlossene Use Case MUSS ausgeführt werden
  2. Pfeilrichtung: Von inkludierendem zu inkludiertem Use Case
  3. Wiederverwendung: Nutze Include für gemeinsame Funktionalität
  4. Nicht übertreiben: Nur bei wirklich notwendigen Abhängigkeiten

Gute Verwendung:

✅ [Bestellen] ──<<include>>──► [Bezahlen]
✅ [Artikel kaufen] ──<<include>>──► [Anmelden]
✅ [Dokument drucken] ──<<include>>──► [Drucker wählen]

Schlechte Verwendung:

❌ [Bestellen] ──<<include>>──► [Newsletter abonnieren] (optional!)
❌ [Suchen] ──<<include>>──► [Favorit hinzufügen] (optional!)

Zusammenfassung

Include-Beziehung

Merkhilfe

"Include" = "einschließen" = muss dabei sein


Verwandte Konzepte