In vielen Diskussionen höre ich die Aussage:
„Use Cases und User Stories können dasselbe enthalten.“
Auf den ersten Blick klingt das plausibel.
Beide beschreiben Anforderungen. Beide beschreiben Verhalten. Beide werden in der Softwareentwicklung eingesetzt.
Aber was passiert, wenn wir ein echtes, nicht triviales Beispiel nehmen und versuchen, es in beiden Formen darzustellen?
Statt theoretisch zu diskutieren, schauen wir uns ein konkretes Beispiel an.
Ein realer Use Case
Der folgende Use Case beschreibt das Anlegen eines Auftrags.
Er ist leicht anonymisiert, aber fachlich vollständig.
# UC-002: Auftrag anlegen **Primärer Akteur:** Sachbearbeiter **Sekundäre Akteure:** Buchhaltung, Qualitätssicherung **Ziel:** Neuen Auftrag anlegen **Status:** Dokumentiert ## Vorbedingungen - Der Benutzer ist eingeloggt - Der Benutzer hat die Berechtigung, Aufträge zu erstellen - Der Benutzer hat die Detailansicht eines Kunden geöffnet ## Nachbedingungen ### Erfolgsfall - Der Auftrag wird erfolgreich gespeichert und erhält eine Auftragsnummer - Der erstellte Auftrag wird angezeigt ### Fehlerfall - Es wird eine Fehlermeldung angezeigt, die den Fehler beschreibt - Es wird kein Auftrag erstellt ## Hauptablauf 1. Der Benutzer klickt auf **Auftrag erstellen** 2. Das System validiert den Kunden (siehe GR-001) 3. Das System validiert den Standort (siehe GR-002) 4. Das System validiert die Kanal-/Erfassungsart-Kombination (siehe GR-003) 5. Das System erstellt den Auftrag mit Standardwerten (siehe GR-004) 6. Das System validiert das Wunschlieferdatum (siehe GR-005) 7. Das System setzt Lieferdatum und Tour anhand des Lieferkalenders 8. Das System setzt die Lieferadresse (Standardadresse des Kunden) 9. Das System setzt den Status auf **NEU** 10. Das System speichert den Auftrag und sperrt ihn für den aktuellen Benutzer 11. Das System zeigt den Auftrag an ## Alternativabläufe ### 1a. Auftrag ohne vorgewählten Kunden erstellen 1. Der Benutzer klickt auf **Auftrag erstellen** 2. Das System öffnet einen leeren Auftrag 3. Der Benutzer wählt einen Kunden aus 4. Weiter mit Schritt 2 des Hauptablaufs ### 2a. Kundenvalidierung schlägt fehl 1. Das System zeigt eine Fehlermeldung an (z.B. „Kunde ist inaktiv“) 2. Der Auftrag wird nicht erstellt ### 3a. Standortvalidierung schlägt fehl 1. Das System zeigt eine Fehlermeldung an (z.B. „Standort ist gesperrt“) 2. Der Auftrag wird nicht erstellt ### 6a. Lieferdatum ungültig (elektronische Erfassung) 1. Das System erstellt den Auftrag trotzdem, markiert ihn aber als **BLOCKIERT** 2. Der Auftrag muss manuell freigegeben werden ### 6b. Abholauftrag 1. Das System überspringt die Lieferdatum-Validierung 2. Die Tour wird auf **ABHOLUNG** gesetzt 3. Weiter mit Schritt 8 ### 6c. Express-/Sonderauftrag 1. Das System prüft nur, ob das Datum nicht in der Vergangenheit liegt 2. Die Tour wird auf **EXPRESS** gesetzt 3. Weiter mit Schritt 8 ### 6d. Standort geändert 1. Das System prüft, ob der Kunde eine aktive Tourenplanung am neuen Standort hat 2. Falls ja: normale Validierung 3. Falls nein: - keine Validierung - Tour wird auf **EXPRESS** gesetzt ## Geschäftsregeln (Auszug) ### GR-001: Kundenvalidierung - Kunde muss aktiv sein - Keine Sperren auf Kunde, Organisation oder Gruppe ### GR-002: Standortvalidierung - Standort darf nicht gesperrt sein - Lieferdatum muss nach Aktivierungsdatum liegen ### GR-003: Kanal-/Erfassungsart-Validierung - Manche Erfassungsarten erfordern einen Kanal - Manche verbieten einen Kanal - Sonst ist der Kanal optional ### GR-004: Standardwerte - Status = NEU - Auftragstyp = STANDARD - Erfassungsart = Telefon - Kanal = keiner - Lieferdatum = nächstmöglich ### GR-005: Lieferdatum-Validierung - Standard: Datum muss im Lieferkalender sein - Express: Datum darf nicht in der Vergangenheit liegen - Ungültig (elektronisch): Auftrag wird blockiert
Schon in dieser Form sieht man:
- ein klarer Ablauf
- explizite Alternativen
- zentrale Regeln
- vollständige Transparenz
Alles ist an einem Ort sichtbar.
Jetzt das gleiche mit User Stories
Wir starten mit einem Epic.
Als Sachbearbeiter möchte ich Aufträge erfassen damit Kundenbestellungen abgewickelt werden können
Dann leiten wir User Stories ab.
Als Sachbearbeiter möchte ich einen Auftrag für einen Kunden erstellen damit ich eine Bestellung erfassen kann # Akzeptanzkriterien - Kunde muss aktiv sein - Standort muss gültig sein - Kanal und Erfassungsart müssen konsistent sein - Auftrag wird mit Standardwerten erstellt - Lieferdatum wird validiert - Auftrag wird gespeichert und angezeigt
Als Sachbearbeiter möchte ich eine Fehlermeldung sehen wenn der Kunde ungültig ist damit ich keine falschen Aufträge erfasse
Als Sachbearbeiter möchte ich Aufträge mit ungültigem Lieferdatum blockieren damit sie nicht falsch verarbeitet werden
Als Sachbearbeiter möchte ich Abholaufträge erstellen damit Kunden Ware selbst abholen können
Als Sachbearbeiter möchte ich, dass Kanal und Erfassungsart validiert werden damit die Herkunft eines Auftrags korrekt ist
Um den gesamten fachlichen Umfang abzudecken, brauchen wir:
- viele User Stories
- viele Akzeptanzkriterien
- implizite Abhängigkeiten zwischen ihnen
Was hat sich verändert?
Beide Varianten beschreiben denselben fachlichen Inhalt.
Aber die Struktur ist komplett unterschiedlich.
Bei User Stories:
- Verhalten ist auf viele Einheiten verteilt
- Abläufe sind implizit
- Alternativen sind verstreut
- Regeln sind in Kriterien versteckt oder dupliziert
Um das System zu verstehen, muss man sich den Ablauf im Kopf zusammensetzen.
Beim Use Case:
- Verhalten ist explizit beschrieben
- der Ablauf ist durchgängig sichtbar
- Alternativen sind klar strukturiert
- Regeln sind zentral definiert
Können User Stories dasselbe enthalten?
Ja.
Aber nur, wenn man:
- viele Stories schreibt
- sehr viele Akzeptanzkriterien ergänzt
- diszipliniert arbeitet
- ständig synchronisiert
In der Praxis führt das zu:
- Fragmentierung
- Inkonsistenzen
- geringerer Verständlichkeit
Die Information ist noch da.
Aber sie ist nicht mehr als Ganzes sichtbar.
Warum ist das wichtig?
Bei einfachen Features ist der Unterschied klein.
Aber in echten Business-Anwendungen:
- greifen Regeln ineinander
- hängen Abläufe voneinander ab
- sind Sonderfälle entscheidend
Dann wird Fragmentierung zum Problem:
- Missverständnisse nehmen zu
- Fehler entstehen
- Entwicklung wird langsamer
Und mit AI wird das noch relevanter.
AI funktioniert am besten mit:
- klarer Struktur
- explizitem Verhalten
- vollständigem Kontext
Use Cases liefern genau das.
Fazit
User Stories und Use Cases können denselben fachlichen Inhalt beschreiben.
Aber sie liefern nicht die gleiche Klarheit.
User Stories beschreiben Absicht.
Use Cases beschreiben Verhalten.
Solange Systeme einfach sind, funktioniert beides.
Sobald sie komplex werden, wird der Unterschied sichtbar.
Und wenn man versucht, einen vollständigen Use Case in User Stories zu pressen,
reduziert man die Komplexität nicht.
Man verteilt sie nur.


