In Unified Modeling Language (UML), Use-Case-Diagramme sind leistungsfähige Werkzeuge zur Erfassung funktionaler Anforderungen eines Systems. Ein wesentliches Merkmal dieser Diagramme ist die <<extend>>-Beziehung, die es ermöglicht, optionale oder bedingte Verhaltensweisen an bestimmten Stellen, sogenannten Erweiterungspunkten. Die richtigen Stellen zum Einfügen dieser Erweiterungspunkte zu identifizieren, ist entscheidend für die Erstellung modularer, wiederverwendbarer und klarer Use-Case-Modelle. Dieser Artikel bietet eine Schritt-für-Schritt-Anleitung zum Erkennen und Implementieren von Erweiterungspunkten, ergänzt durch praktische Beispiele, um ihre Anwendung in realen Szenarien zu veranschaulichen.
Was sind Erweiterungspunkte und <<extend>>-Beziehungen?
Ein Erweiterungspunkt ist eine spezifische Stelle innerhalb eines Basis-Use-Cases, an der zusätzliche, optionale oder bedingte Verhaltensweisen (von einem erweiternden Use-Case) eingefügt werden können. Die <<extend>>-Beziehung zeigt an, dass der erweiternde Use-Case Verhaltensweisen unter bestimmten Bedingungen zum Basis-Use-Case hinzufügt, ohne dessen Kernablauf zu verändern. Dadurch wird die Systemgestaltung flexibel, wodurch optionale Funktionen oder Variationen möglich sind, während der Basis-Use-Case unabhängig und vollständig bleibt.
Zum Beispiel enthält in einem E-Commerce-System der Basis-Use-Case „Bestellung aufgeben“ könnte einen Erweiterungspunkt für „Rabatt anwenden“, der nur ausgelöst wird, wenn der Benutzer einen gültigen Rabattcode eingibt. Der Basis-Use-Case bleibt ohne Rabatt funktionsfähig, wird aber durch die Erweiterung bei Anwendung verbessert.
Warum sind Erweiterungspunkte wichtig?
Erweiterungspunkte verbessern Use-Case-Diagramme durch:
- Modularisierung des Verhaltens: Die Trennung von optionalen oder bedingten Verhaltensweisen in getrennte Anwendungsfälle verbessert Klarheit und Wiederverwendbarkeit.
- Unterstützung von Flexibilität: Sie ermöglichen es dem System, Variationen zu berücksichtigen, ohne den Basisanwendungsfall zu überladen.
- Verbesserung der Wartbarkeit: Änderungen am optionalen Verhalten können vorgenommen werden, ohne den Kernanwendungsfall zu modifizieren.
- Verbesserung der Kommunikation mit Stakeholdern: Gut benannte Erweiterungspunkte erleichtern es den Stakeholdern, zu verstehen, wo und warum Erweiterungen stattfinden.
Allerdings erfordert die Identifizierung der richtigen Punkte für <<extend>>-Segmente eine sorgfältige Analyse. Im Folgenden skizzieren wir einen strukturierten Ansatz zur Identifizierung dieser Stellen, gefolgt von illustrativen Beispielen.
Wie man Erweiterungspunkte für <<extend>>-Segmente identifiziert
Hier ist eine Schritt-für-Schritt-Anleitung zum Finden und Definieren von Erweiterungspunkten in einem Anwendungsfall:
1. Analyse des Basisanwendungsfalls
Beginnen Sie damit, die Hauptszenario des Erfolgs und alternative Abläufedes Basisanwendungsfalls gründlich zu überprüfen. Suchen Sie nach Schritten, bei denen:
- Zusätzliches Verhalten kann optional auftreten (z. B. vom Benutzer ausgelöste Aktionen).
- Bedingte Aktionen könnten je nach bestimmten Umständen eingefügt werden.
- Variationen oder Verbesserungen könnten hinzugefügt werden, ohne den Hauptablauf zu stören.
Beispiel: In einem „Anmeldung im System“ Anwendungsfall umfasst die Eingabe von Anmeldeinformationen und die Authentifizierung. Ein optionaler Schritt, wie „Zwei-Faktor-Authentifizierung aktivieren“, könnte ein Erweiterungspunkt sein, der nur dann ausgelöst wird, wenn der Benutzer diese Funktion aktiviert hat.
2. Identifizieren Sie optionales oder bedingtes Verhalten
Konzentrieren Sie sich auf Teile des Anwendungsfalls, die nicht immer ausgeführt werden. Dazu könnten gehören:
- Optionale Benutzereingaben (z. B. Hinzufügen einer Geschenkverpackung im Bestellprozess).
- Ausnahmefälle (z. B. Behandlung von Zahlungsausfällen).
- Erweiterungen, die durch bestimmte Bedingungen ausgelöst werden (z. B. Anwendung eines Rabattcodes).
Beispiel: In einem „Flug buchen“ Anwendungsfall könnte der Reisende die Möglichkeit haben, „Sitzplatzpräferenz auswählen“ (z. B. Fenster- oder Gangplatz). Dieser Schritt ist für die Buchung nicht obligatorisch, erhöht aber die Benutzererfahrung, wenn er gewählt wird, und macht ihn somit zu einem Kandidaten für einen Erweiterungspunkt.
3. Definieren Sie sinnvolle und benannte Erweiterungspunkte
Jeder Erweiterungspunkt sollte einen klaren, beschreibenden Namen haben, der seinen Zweck widerspiegelt. Dies hilft sowohl Entwicklern als auch Stakeholdern, zu verstehen, wo und warum die Erweiterung erfolgt.
Beispiel: In einem „Zahlung verarbeiten“ Use Case, ein Erweiterungspunkt namens„Gutscheincode überprüfen“ deutet klar darauf hin, dass das erweiternde Verhalten die Überprüfung und Anwendung eines Gutscheins umfasst, was nur dann erfolgt, wenn der Benutzer einen bereitstellt.
4. Unabhängigkeit des Basis-Use-Cases sicherstellen
Der Basis-Use-Case muss weiterhinvollständig und sinnvollohne das erweiternde Verhalten. Erweiterungen sollten die Funktionalität verbessern oder ergänzen, aber nicht entscheidend für den Erfolg des Basis-Use-Cases sein.
Beispiel: In einem „Bewerbung einreichen“ Use Case für eine Stellensuchplattform ist ein Erweiterungspunkt wie„Zusätzliche Dokumente hochladen“ ermöglicht Kandidaten, zusätzliche Dateien (z. B. Zertifizierungen) bereitzustellen. Der Bewerbungsprozess ist ohne diesen Schritt abgeschlossen, aber die Erweiterung bringt für einige Benutzer zusätzlichen Wert.
5. Modellierungswerkzeuge nutzen
Werkzeuge wie Visual Paradigm vereinfachen den Prozess der Definition von Erweiterungspunkten. In Visual Paradigm:
- Klicken Sie mit der rechten Maustaste auf den Basis-Use-Case, wählen SieErweiterungspunkt hinzufügen, und weisen Sie einen beschreibenden Namen zu.
- Dokumentieren Sie Erweiterungspunkte im Kompartment des Use-Cases zur Klarheit.
- Verknüpfen Sie erweiternde Use Cases mit spezifischen Erweiterungspunkten, um anzuzeigen, wo ihr Verhalten integriert wird.
Beispiel: In Visual Paradigm für ein „Abholen“ Use Case können Sie einen Erweiterungspunkt namens „Versandanweisungen festlegen“ und verknüpfen Sie ihn mit einem erweiternden Use Case „Sonderlieferhinweise hinzufügen“.
6. Anwendung realer Szenarien
Die Zuordnung von Erweiterungspunkten zu praktischen Szenarien stellt sicher, dass sie den Systemanforderungen entsprechen. Testen Sie Ihre Auswahl, indem Sie überprüfen, wie sie in die Arbeitsabläufe und Benutzerinteraktionen des Systems passen.
Praktische Beispiele für Erweiterungspunkte
Lassen Sie uns mehrere praktische Beispiele untersuchen, um zu zeigen, wie Erweiterungspunkte effektiv identifiziert und implementiert werden können.
Beispiel 1: E-Commerce-System – Bestellung aufgeben
- Basiseinsatzfall: Bestellung aufgeben
Der Benutzer wählt Artikel aus, gibt Zahlungsdetails ein und bestätigt die Bestellung.
- Erweiterungspunkte:
- Rabatt anwenden: Wird ausgelöst, wenn der Benutzer während des Bezahlvorgangs einen gültigen Rabattcode eingibt.
- Versandanweisungen angeben: Wird ausgelöst, wenn der Benutzer besondere Lieferhinweise hinzufügen möchte (z. B. „Paket an der Hintertür ablegen“).
- Erweiterung von Anwendungsfällen:
- Rabatt anwenden: Überprüft den Code und passt den Gesamtbetrag an.
- Spezielle Lieferhinweise hinzufügen: Erlaubt dem Benutzer, benutzerdefinierte Anweisungen einzugeben.
- Begründung: Diese Erweiterungen sind optional und treten nur unter bestimmten Bedingungen auf (z. B. bei einem gültigen Rabattcode oder wenn der Benutzer besondere Anweisungen bevorzugt). Der Basisanwendungsfall bleibt ohne sie vollständig.
Beispiel 2: Bankensystem – Bargeld abheben
- Basisanwendungsfall: Bargeld abheben
Der Benutzer steckt seine Karte ein, gibt seine PIN ein, gibt einen Betrag an und erhält Bargeld.
- Erweiterungspunkte:
- Beleg anfordern: Wird ausgelöst, wenn der Benutzer wählt, eine Transaktionsbestätigung zu erhalten.
- Kontostand vor Abhebung prüfen: Wird ausgelöst, wenn der Benutzer wählt, sein Kontoguthaben vor der Abhebung anzuzeigen.
- Erweiterung von Anwendungsfällen:
- Bestätigung ausdrucken: Generiert und druckt eine Transaktionsbestätigung aus.
- Kontostand anzeigen: Zeigt das aktuelle Guthaben des Benutzers an.
- Begründung: Diese Verhaltensweisen sind optional und beeinflussen den Kernprozess der Abhebung nicht, wodurch sie ideal für <<extend>>-Beziehungen sind.
Beispiel 3: Online-Lernplattform – Quiz beantworten
- Basisanwendungsfall: Quiz beantworten
Der Student meldet sich an, wählt ein Quiz aus, beantwortet Fragen und gibt seine Antworten ab.
- Erweiterungspunkte:
- Zusätzliche Zeit beantragen: Wird ausgelöst, wenn der Student eine besondere Ermäßigung für zusätzliche Zeit hat.
- Fortschritt speichern: Wird ausgelöst, wenn der Schüler wählt, seine Antworten zu speichern und später fortzufahren.
- Erweiterung von Anwendungsfällen:
- Zusätzliche Zeit gewähren: Verlängert die Prüfungszeit für berechtigte Schüler.
- Prüfung speichern und fortsetzen: Erlaubt eine teilweise Ausführung und eine spätere Fortsetzung.
- Begründung: Diese Erweiterungen sind bedingt (z. B. aufgrund der Berechtigung oder der Benutzerwahl) und verbessern den Basisanwendungsfall, ohne unbedingt erforderlich zu sein.
Beispiel 4: Bibliothekssystem – Buch ausleihen
- Basisanwendungsfall: Buch ausleihen
Der Benutzer sucht ein Buch, wählt es aus und leiht es mit seiner Bibliothekskarte aus.
- Erweiterungspunkte:
- Buch reservieren: Wird ausgelöst, wenn das Buch nicht verfügbar ist und der Benutzer es reservieren möchte.
- Überfällige Gebühren bezahlen: Wird ausgelöst, wenn der Benutzer offene Strafen hat, die vor dem Ausleihen beglichen werden müssen.
- Erweiterung von Anwendungsfällen:
- Reservierung vornehmen: Fügt den Benutzer einer Warteliste für das Buch hinzu.
- Strafen begleichen: Verarbeitet die Zahlung für überfällige Strafen.
- Begründung: Diese Aktionen sind bedingt (z. B. Unverfügbarkeit des Buches oder unbezahlte Strafen) und gehören nicht zu jedem Ausleihvorgang.
Best Practices zur Definition von Erweiterungspunkten
Um eine effektive Nutzung von Erweiterungspunkten sicherzustellen, beachten Sie diese Best Practices:
- Halten Sie Namen beschreibend: Verwenden Sie klare, spezifische Namen wie„Gutschein anwenden“ oder „Sitzplatzpräferenz auswählen“ um Mehrdeutigkeiten zu vermeiden.
- Überprüfen Sie die Unabhängigkeit: Stellen Sie sicher, dass der Basisanwendungsfall vollständig funktioniert, ohne die erweiternde Funktion.
- Dokumentieren Sie die Bedingungen: Geben Sie die Bedingungen an, unter denen die Erweiterung ausgelöst wird (z. B. „Wenn der Benutzer einen gültigen Gutscheincode eingibt“).
- Nutzen Sie Werkzeuge effektiv: Nutzen Sie UML-Tools wie Visual Paradigm oder Enterprise Architect, um Erweiterungspunkte visuell zu definieren und zu verknüpfen.
- Testen Sie mit Stakeholdern: Überprüfen Sie Erweiterungspunkte mit Stakeholdern, um sicherzustellen, dass sie den Systemanforderungen und Benutzererwartungen entsprechen.
Häufige Fehler, die Sie vermeiden sollten
- Übermäßige Verwendung von Erweiterungen: Verwenden Sie <<extend>> nicht für obligatorisches Verhalten; verwenden Sie stattdessen <<include>> für erforderliche Teilflüsse.
- Umschreibende Erweiterungspunkte: Vermeiden Sie generische Namen wie„Etwas tun“, die den Zweck der Erweiterung nicht vermitteln.
- Überlastung des Basis-Nutzungsszenarios: Stellen Sie sicher, dass Erweiterungen wirklich optional sind, um eine Überkomplizierung des Hauptablaufs zu vermeiden.
- Ignorieren von Bedingungen: Definieren Sie immer die spezifischen Bedingungen, die die Erweiterung auslösen, um Klarheit zu gewährleisten.
Visualisierung von Erweiterungspunkten in UML-Tools
In Tools wie Visual Paradigm werden Erweiterungspunkte innerhalb des Kompartmentes des Basis-Nutzungsszenarios dokumentiert. Zum Beispiel:
- Nutzungsszenario: Bestellung aufgeben
- Erweiterungspunkte:
- Rabatt anwenden (Bedingung: Benutzer gibt einen gültigen Rabattcode ein)
- Versandanweisungen angeben (Bedingung: Benutzer wählt, Zusatzinformationen zur Lieferung hinzuzufügen)
- Die erweiternden Use Cases sind mit diesen Punkten über <<extend>>-Beziehungen verbunden, oft mit einer Notiz, die die Bedingung angibt.
Diese visuelle Darstellung stellt sicher, dass Entwickler und Stakeholder leicht nachvollziehen können, wie und wo Erweiterungen integriert werden.
Fazit
Die Identifizierung der richtigen Punkte zum Einfügen von <<extend>>-Segmenten in einem Use Case erfordert ein tiefes Verständnis der funktionalen Anforderungen des Systems und eine sorgfältige Analyse des Ablaufs des Basis-Use Cases. Indem man sich auf optionale oder bedingte Verhaltensweisen konzentriert, klare Namen vergeben und die Unabhängigkeit des Basis-Use Cases sicherstellt, kann man modulare und flexible Use Case-Modelle erstellen. Praxisbeispiele wie das Anwenden von Rabatten in einem E-Commerce-System oder das Anfordern zusätzlicher Zeit bei einer Quiz-Abfrage zeigen, wie Erweiterungspunkte die Systemgestaltung verbessern, ohne die Kernfunktionen zu überlasten.
Indem Sie die in diesem Leitfaden aufgeführten Schritte befolgen – Flussanalysen durchführen, optionale Verhaltensweisen identifizieren, Erweiterungspunkte eindeutig benennen und UML-Tools nutzen – können Sie die Kunst der Definition von Erweiterungspunkten meistern. Dieser Ansatz verbessert nicht nur die Klarheit und Wartbarkeit Ihrer Use Case-Diagramme, sondern stellt auch sicher, dass Ihr System an sich verändernde Anforderungen angepasst werden kann.