Zum Inhalt springen

10. UML III – Von User Stories zu Diagrammen

Zu Zen-Modus wechseln

Nach diesem Kapitel kannst du:

  • User Stories und Diagramme ineinander überführen und einen Anwendungsfall in Stories schneiden.
  • Use-Case-, Klassen- und Sequenzdiagramm gegeneinander auf Widersprüche prüfen.
  • begründen, wann sich ein Diagramm lohnt, und passende Ergänzungen (Zustands-, Aktivitätsdiagramm) vorschlagen.

In den Kapiteln 08 und 09 hast du die drei Karten der Navi-App einzeln gezeichnet: Ziele, Stadtplan und Routenanweisung. In diesem Kapitel verbindest du sie mit den User Stories aus Kapitel 04 und prüfst, ob alle drei Karten zusammenpassen.

In Kapitel 04 hast du Anforderungen als User Stories formuliert. In Kapitel 08 begann die Modellierung mit Anwendungsfällen. Das ist kein Widerspruch, sondern dieselbe Information in unterschiedlicher Körnung und mit unterschiedlichem Zweck.

User StoryAnwendungsfall (Use Case)
ZweckPlatzhalter für ein Gespräch; plant und priorisiert Arbeitbeschreibt eine Interaktion vollständig; klärt Verhalten
Umfangklein genug für einen Sprintein Ziel, oft größer als eine Story
Detailgradein Satz plus AkzeptanzkriterienVorbedingung, Standardablauf, Alternativabläufe, Nachbedingung
Lebensdauerwird im Sprint abgearbeitet und geschlossenbleibt als Dokumentation bestehen
Wo sie lebtBacklog, Issue-TrackerAnforderungsdokument, Diplomarbeit

Die Story beantwortet “Was soll als Nächstes gebaut werden?”, der Anwendungsfall beantwortet “Wie verhält sich das System dabei genau?”. In agilen Projekten schreibt man deshalb nicht zwingend beides für alles: Stories sind der Normalfall, Anwendungsfälle und Diagramme kommen dazu, wo ein Ablauf komplex genug ist, dass ein Satz nicht genügt.

Jeder Teil der Story-Schablone landet an einer bestimmten Stelle des Modells. Dazu eine Story zum durchgängigen Beispiel:

Als Mitglied
möchte ich ein verfügbares Buch ausleihen,
damit ich es mit nach Hause nehmen kann.
Akzeptanzkriterien:
- Ein verfügbares Buch kann ausgeliehen werden; das Rückgabedatum wird angezeigt.
- Ein bereits verliehenes Buch kann nicht ausgeliehen werden; eine Vormerkung wird angeboten.
- Ein Mitglied mit offenen Gebühren kann nicht ausleihen.
Teil der Storywird zuim Beispiel
Als RolleAkteur im Use-Case-DiagrammMember
Möchte ich FunktionAnwendungsfall (Verb und Objekt)Borrow book
Damit NutzenNachbedingung und Prüfmaßstab: Wurde das Ziel erreicht?Das Buch ist verliehen und gespeichert
Nomen in Story und KriterienKlassen und AttributeMember, Book, Loan, Rückgabedatum
Verben in den KriterienOperationen und Nachrichtenverfügbar prüfen, ausleihen, vormerken
Akzeptanzkriterium, NormalfallStandardablauf und damit das Sequenzdiagrammerstes Kriterium
Akzeptanzkriterium, AusnahmeAlternativablauf, alt-Fragment, Testfallzweites und drittes Kriterium

Konkret heißt das: Das Sequenzdiagramm aus Schritt 3 (Kapitel 09) ist die grafische Fassung der ersten beiden Akzeptanzkriterien, und das dritte Kriterium ist ein Alternativablauf, der dort noch fehlt - ein Hinweis, dass entweder das Diagramm unvollständig ist oder die Story zu viel auf einmal verlangt.

Mehrere Stories gehören oft zu einem Anwendungsfall und zu einem Oval im Diagramm. “Als Mitglied möchte ich ein Buch ausleihen” und “Als Mitglied möchte ich ein verliehenes Buch vormerken” sind zwei Stories, die gemeinsam das Ziel Borrow book mit seinem Alternativablauf ergeben. Ein umfangreicher Anwendungsfall entspricht damit eher einem Epic, das sich in mehrere Stories zerlegen lässt.

flowchart LR
  accTitle: Ein Anwendungsfall wird in mehrere Stories geschnitten
  UC["Use Case: Borrow book"] --> S1["Story 1: Buch ausleihen (Standardablauf)"]
  UC --> S2["Story 2: Verliehenes Buch vormerken (Alternativablauf)"]
  UC --> S3["Story 3: Ausleihe bei offener Gebühr sperren (Alternativablauf)"]

Auch die umgekehrte Richtung kommt vor, und sie ist in agilen Projekten sogar der häufigere Weg, wenn ein größeres Vorhaben erst einmal verstanden werden muss.

  • Use Case in Stories schneiden. Ein Anwendungsfall ist meist zu groß für einen Sprint. Der Standardablauf wird die erste Story (dünner, aber durchgängiger Durchstich), jeder Alternativablauf eine weitere. Im Beispiel: Story 1 Buch ausleihen, Story 2 Verliehenes Buch vormerken, Story 3 Ausleihe bei offener Gebühr sperren. Der Wert wächst Sprint für Sprint, und nach Story 1 ist bereits etwas Lauffähiges vorhanden.
  • Diagramm deckt fehlende Stories auf. Ein Zustandsdiagramm für Loan zeigt den Zustand überfällig - und niemand hat eine Story dafür geschrieben, was dann passiert. Eine Klasse im Klassendiagramm, die in keinem Ablauf vorkommt, ist ein Hinweis auf eine vergessene Anforderung. Das Diagramm liefert also Fragen an den Product Owner, und aus den Antworten werden neue Stories.
  • Diagramm wird zu Tasks, nicht zu Stories. Ein Klassendiagramm ist technisch: “Klasse LoanService anlegen” oder “Tabelle loan erstellen” hat für keine Nutzerin einen sichtbaren Wert und ist deshalb keine Story, sondern ein Task an einer Story (siehe INVEST in Kapitel 04, Kriterium Valuable). Wer aus dem Klassendiagramm Stories macht, landet bei “Als Nutzer möchte ich eine Datenbank”.
  • Bestehende Software verstehen. Bei Altsystemen ohne Dokumentation geht man manchmal rückwärts: aus dem Code ein Klassendiagramm, aus dem Ablauf ein Sequenzdiagramm, daraus die tatsächlich unterstützten Anwendungsfälle und schließlich Stories für Änderungen. Das Ergebnis ist eine Schätzung, kein Beweis, denn der Code zeigt, was passiert, nicht was gewollt war.

Wo begegnet dir das? Auf dem Board deines Jahresprojekts in GitLab sind die Issues die Stories. Das Diagramm in der Dokumentation zeigt, wie viele von ihnen zu einem größeren Ziel gehören, und es macht sichtbar, was im Backlog noch fehlt.

Wie viel Modellierung verträgt ein agiles Projekt?

Abschnitt betitelt „Wie viel Modellierung verträgt ein agiles Projekt?“

Die Befürchtung, UML und Scrum passten nicht zusammen, beruht meist auf einem Missverständnis: Nicht die Diagramme sind das Problem, sondern ihr Zeitpunkt. Ein vollständiges Modell für alle Anforderungen vor dem ersten Sprint ist der Wasserfall in neuer Verpackung. Bewährt hat sich stattdessen Modellierung just in time.

  • Zu den Stories, die im nächsten Sprint anstehen, entsteht eine Skizze am Whiteboard (Fowler: Skizze statt Bauplan, siehe Kapitel 08), und sie wird fotografiert oder abgezeichnet.
  • Diagramme, die über den Sprint hinaus nützlich bleiben - Klassenstruktur, zentrale Abläufe -, kommen in die Dokumentation und werden mit dem Code gepflegt.
  • Die Skizze wird nicht gepflegt, wenn sie ihren Zweck erfüllt hat. Sie war ein Werkzeug des Gesprächs, nicht ein Ergebnis.

Der Arbeitsablauf ist keine Einbahnstraße, aber er hat eine sinnvolle Reihenfolge:

flowchart LR
  S[User Story mit Akzeptanzkriterien] -->|Rolle und Ziel| A[Use Case mit Beschreibung]
  A -->|zu große Fälle werden in Stories geschnitten| S
  A -->|Nomen werden zu Klassen| B[Klassendiagramm]
  A -->|Standardablauf wird zu Nachrichten| C[Sequenzdiagramm]
  C -->|Nachrichten werden zu Methoden| B
  B -->|Methoden müssen existieren| C
  A -->|Alternativabläufe werden zu Tests| D[Testfälle]

Die Pfeile sind Prüfbeziehungen: Jedes Diagramm liefert dem nächsten Rohmaterial und kontrolliert es zugleich. Wie bei den drei Karten der Navi-App: Erst wenn Ziele, Stadtplan und Route zusammenpassen, kannst du dich auf die Reise verlassen.

VonNachWas geprüft wird
Use CaseKlassendiagrammKommt jedes fachliche Nomen aus den Beschreibungen als Klasse oder Attribut vor?
Use CaseSequenzdiagrammGibt es zu jedem wichtigen Standardablauf ein Sequenzdiagramm?
SequenzdiagrammKlassendiagrammExistiert jede Nachricht als Operation in der Klasse des Empfängers?
KlassendiagrammSequenzdiagrammWird jede Operation in mindestens einem Ablauf wirklich gebraucht? Eine nie gerufene Methode ist entweder überflüssig oder ein vergessener Anwendungsfall.
  1. Anwendungsfälle sammeln. Aus den Stories des Backlogs (oder direkt mit dem Auftraggeber) Akteure und ihre Ziele festhalten, die wichtigsten Anwendungsfälle mit Standard- und Alternativabläufen beschreiben.
  2. Klassen ableiten. Aus den Nomen der Beschreibungen Kandidaten sammeln, überflüssige streichen (technische Details, Synonyme), Beziehungen und Multiplizitäten festlegen.
  3. Ablauf zeichnen. Für jeden wichtigen Anwendungsfall den Standardablauf als Sequenzdiagramm zeichnen.
  4. Gegenprüfen. Jede Nachricht im Klassendiagramm suchen, fehlende Operationen und Klassen ergänzen.
  5. Wiederholen. Beim Zeichnen von Schritt 3 fällt fast immer etwas an Schritt 1 oder 2 auf - das ist das Ziel, kein Rückschritt.

Für Anforderungen, Struktur und Ablauf eines typischen Schulprojekts: ja, als Grundgerüst. Drei Ergänzungen kommen in Diplomarbeiten aber oft dazu, und du solltest zumindest wissen, wofür sie da sind.

DiagrammWann ergänzenBeispiel
ZustandsdiagrammEin Objekt hat einen Lebenszyklus mit klaren Zuständen und ÜbergängenLoan: angefragt, aktiv, überfällig, zurückgegeben
AktivitätsdiagrammEin Arbeitsablauf mit Verzweigungen und Parallelität, oft über mehrere AkteureBestellprozess von der Bestellung bis zum Versand
Komponenten- und VerteilungsdiagrammDie technische Architektur soll gezeigt werden: Dienste, Datenbank, SchnittstellenFrontend, API, Datenbank, externer Zahlungsdienst

So sieht das Zustandsdiagramm für die Ausleihe aus. Es zeigt auf einen Blick, welche Zustände eine Loan kennt und was sie weiterschaltet.

stateDiagram-v2
  accTitle: Lebenszyklus einer Ausleihe
  [*] --> Active : Buch ausgeliehen
  Active --> Overdue : Rückgabedatum überschritten
  Overdue --> Returned : Buch zurückgegeben, Gebühr bezahlt
  Active --> Returned : Buch zurückgegeben
  Returned --> [*]

Das Entity-Relationship-Diagramm für die Datenbank gehört nicht zur UML, sieht dem Klassendiagramm aber ähnlich. Es modelliert Tabellen und Schlüssel, nicht Klassen und Operationen; im Datenbankunterricht lernst du es genauer kennen.

Wo begegnet dir das? Der Bestellstatus in einem Webshop (bestellt, bezahlt, versandt, geliefert) ist ein Zustandsdiagramm, das du aus dem Alltag kennst. Wer Software für einen solchen Ablauf baut, braucht genau dieses Modell.

Wichtiger als die Anzahl der Diagrammtypen ist deshalb die Haltung: Modelliert wird, was eine Entscheidung klärt oder eine Frage beantwortet. Ein Diagramm, das niemand liest und das nach der Abgabe nie wieder geöffnet wird, war Aufwand ohne Nutzen.

Wende die drei Diagramme auf ein neues System an. Das Mini-Projekt ist eine Übungsfassung zum Selberprobieren an einem fremden System; im eigenen Jahresprojekt machst du dasselbe in Aufgabe 04 bis 06. Hier steht der Kern des ganzen Mini-Projekts. Die Aufgabe ist bewusst offen; zeichne auf Papier, im Whiteboard-Tool deiner Wahl oder mit draw.io.

Ausgangslage: Eine Quiz-Anwendung für den Unterricht. Lehrpersonen legen Quizze mit Fragen an, Schülerinnen und Schüler spielen ein Quiz und sehen danach ihre Punkte. Ein Quiz besteht aus mehreren Fragen, jede Frage hat mehrere Antwortmöglichkeiten, von denen mindestens eine richtig ist.

  1. Use-Case-Diagramm: Bestimme die Akteure und mindestens fünf Anwendungsfälle. Verwende mindestens ein include oder extend und begründe in einem Satz, warum es diese Beziehung und nicht die andere ist.
  2. Beschreibung: Schreibe für den wichtigsten Anwendungsfall die Beschreibung mit Vorbedingung, Standardablauf, mindestens einem Alternativablauf und Nachbedingung.
  3. Klassendiagramm: Leite aus deiner Beschreibung mindestens vier Klassen ab. Gib Sichtbarkeit, Multiplizitäten und mindestens eine Komposition an und begründe, warum es eine Komposition und keine Assoziation ist.
  4. Sequenzdiagramm: Zeichne den Standardablauf aus Schritt 2 mit mindestens einem alt-Fragment.
  5. Gegenprobe: Prüfe, ob jede Nachricht deines Sequenzdiagramms als Operation im Klassendiagramm steht. Notiere, was du dabei ergänzen musstest.

Eine einzige “richtige” Lösung gibt es hier nicht: Ob deine Klassen “richtig” sind, entscheidet die Frage, ob der Ablauf damit ohne Widerspruch erklärbar ist, und nicht der Vergleich mit einer fremden Lösung.

  • uml-diagrams.org - gut gegliederte Referenz zu allen UML-Diagrammtypen mit Beispielen; hilfreich, wenn du über die drei Diagramme der Kapitel 08 bis 10 hinausgehen willst.
  • draw.io: Insert and edit a Mermaid diagram - zeigt, wie ein Mermaid-Text in bearbeitbare draw.io-Formen umgewandelt wird, wenn du ein Diagramm grafisch nachbearbeiten willst.

Du kannst dir diesen Text mit der Vorlesefunktion deines Browsers oder Betriebssystems kostenlos anhören, etwa mit “Laut vorlesen” in Microsoft Edge. Das eignet sich gut zum Wiederholen vor der Schularbeit.

Lernergebnisse: Was du nach diesem Kapitel können solltest

Abschnitt betitelt „Lernergebnisse: Was du nach diesem Kapitel können solltest“
  • Anwenden: User Stories in Anwendungsfälle und Diagramme überführen und einen Anwendungsfall in Stories schneiden.
  • Analysieren: Use-Case-, Klassen- und Sequenzdiagramm gegeneinander auf Widersprüche prüfen.
  • Beurteilen: begründen, ob ein Diagramm eine Entscheidung klärt oder nur Aufwand erzeugt, und passende Ergänzungen (Zustands-, Aktivitätsdiagramm) vorschlagen.
  • Aufgabe 06 - Jahresprojekt Sprint 1 - Review, Stories und Modell: Kata: eine Story den Modellelementen zuordnen, dazu Review und Retrospektive von Sprint 1 (Wesentlich_überwiegend); Release und einen Anwendungsfall in Stories schneiden (Wesentlich_vollständig). PlusPlus: die vier Prüfbeziehungen an den eigenen Diagrammen, Zustandsdiagramm und Story oder Task; MandalorianPlus: Modellierung just in time und eine Zeile für die Definition of Done.

GAM

CC-BY-SA

https://qiz.at/rules