29.06.2015 Aufrufe

Anwendungsfaelle (Use Cases) - auf Matthias-Draeger.info

Anwendungsfaelle (Use Cases) - auf Matthias-Draeger.info

Anwendungsfaelle (Use Cases) - auf Matthias-Draeger.info

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Vorlesung "Softwaretechnik"<br />

Kapitel 4<br />

Anwendungsfälle (<strong>Use</strong> <strong>Cases</strong>)<br />

Lutz Prechelt<br />

Freie Universität Berlin, Institut für Informatik<br />

http://www.inf.fu-berlin.de/inst/ag-se/<br />

• Was ist ein <strong>Use</strong> Case?<br />

• Beispiele<br />

• Wichtige Parameter<br />

• Bereich ("system under<br />

discussion")<br />

• Detailgrad/Zielniveau<br />

• Schrittweise Präzisierung<br />

• Gefahren von Präzision<br />

• <strong>Use</strong>-Case-Hierarchien<br />

• Überblick, Benutzerziele,<br />

Details<br />

• Warum-Wie-Verbindung<br />

• Checkliste für <strong>Use</strong> <strong>Cases</strong><br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 1 / 44


Wo sind wir?: Taxonomie<br />

"Die Welt der Softwaretechnik"<br />

Welt der Problemstellungen:<br />

Welt der Lösungsansätze:<br />

• Produkt (Komplexitätsprob.)<br />

• Anforderungen (Problemraum)<br />

• Entwurf (Lösungsraum)<br />

• Prozess (psycho-soziale P.)<br />

• Kognitive Beschränkungen<br />

• Mängel der Urteilskraft<br />

• Kommunikation, Koordination<br />

• Gruppendynamik<br />

• Verborgene Ziele<br />

• Fehler<br />

• Technische Ansätze ("hart")<br />

• Abstraktion<br />

• Wiederverwendung<br />

• Automatisierung<br />

• Methodische Ansätze<br />

("weich")<br />

• Anforderungsermittlung<br />

• Entwurf<br />

• Qualitätssicherung<br />

• Projektmanagement<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 2 / 44


Wo sind wir?:<br />

Anforderungsermittlung<br />

• Einsicht: Man darf sich nicht <strong>auf</strong> intuitiven Eindruck darüber<br />

verlassen, was gebaut werden sollte<br />

• sondern sollte die Anforderungen systematisch ermitteln<br />

• Prinzipien:<br />

• Erhebung der Anforderungen bei allen Gruppen von Beteiligten<br />

• Beschreibung in einer Form, die die Beteiligten verstehen<br />

• Validierung anhand der verschriftlichten Form<br />

• Spezifikation: Übertragung in zur Weiterverarbeitung günstige<br />

Form<br />

• Trennung von Belangen: Anford. möglichst wenig koppeln<br />

• Analyse <strong>auf</strong> Vollständigkeit: Lücken <strong>auf</strong>decken und schließen<br />

• Analyse <strong>auf</strong> Konsistenz: Widersprüche <strong>auf</strong>decken und lösen<br />

• Mediation: Widersprüche, die <strong>auf</strong> Interessengegensätzen<br />

beruhen, einer Lösung zuführen (Kompromiss oder Win-Win)<br />

• Verwaltung: Übermäßige Anforderungsänderungen eindämmen,<br />

Anforderungsdokument immer aktuell halten<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 3 / 44


Was ist ein<br />

<strong>Use</strong> Case (Anwendungsfall)?<br />

• Rolle:<br />

• Vereinbarung zwischen den Beteiligten eines Projekts<br />

über das Verhalten des Systems<br />

• Ansatz:<br />

• Beschreibung des Verhaltens des Systems<br />

• als Antwort <strong>auf</strong> einen Auftrag eines Hauptakteurs,<br />

• der mit seinem Auftrag ein Ziel verfolgt und erreicht<br />

• Ein <strong>Use</strong> Case bündelt die Beschreibungen für viele einzelne<br />

Fälle (Szenarios), die den Zielen nach eng zusammen gehören<br />

• ist also abstrakt<br />

• aber nicht sehr<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 4 / 44


Welche Form hat ein <strong>Use</strong> Case?<br />

• Normalerweise Text<br />

• meist strukturierter Text<br />

• Das Prinzip ist aber auch mit formalen, insbesondere<br />

grafischen Notationen anwendbar:<br />

• Flussdiagramme<br />

• Zustandsdiagramme<br />

• Sequenzdiagramme<br />

• Petrinetze u.a.<br />

• Text ist aber meist die beste Wahl<br />

• Anmerkung: Wer nicht gut Text schreiben kann,<br />

kann auch nicht gut <strong>Use</strong> <strong>Cases</strong> schreiben<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 5 / 44


Beispiel: <strong>Use</strong> Case<br />

"Über WWW Aktien k<strong>auf</strong>en"<br />

• Hauptakteur: Käufer<br />

• Anwendungsbereich:<br />

• Personal Advisors/Finance package (PAF)<br />

• Niveau: Benutzerziel<br />

• Beteiligte und Interessen:<br />

• Käufer: Will Aktien k<strong>auf</strong>en und in sein PAF Portfolio ergänzen<br />

• Broker: Benötigt vollständige K<strong>auf</strong><strong>info</strong>rmation<br />

• Voraussetzung: Benutzer hat PAF gestartet<br />

• Mindestzusicherung:<br />

• Es wird genügend Protokoll<strong>info</strong>rmation gesammelt, damit PAF<br />

ggf. entdecken kann, wenn etwas schiefgeht und den Benutzer<br />

nach mehr Information fragen kann<br />

• Zusicherung im Erfolgsfall:<br />

• Broker-Website hat den K<strong>auf</strong> bestätigt;<br />

Protokolle und Portfolio sind aktualisiert<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 6 / 44


Bsp: <strong>Use</strong> Case<br />

"Über WWW Aktien k<strong>auf</strong>en" (2)<br />

• Haupt-Erfolgsszenario:<br />

1. Käufer wählt "Aktien über das WWW k<strong>auf</strong>en" aus<br />

2. PAF fordert Name der Website vom Käufer an<br />

3. PAF öffnet Website, behält aber die Kontrolle<br />

4. Käufer benutzt die Website zum Aktienk<strong>auf</strong><br />

5. PAF fängt die Reaktionen der Website ab und aktualisiert des<br />

Käufers Portfolio<br />

6. PAF zeigt dem Käufer das neue Portfolio<br />

2 Akteure Akteur ist stets aktiv Ziele sind erkennbar<br />

Akteur = Rolle<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 7 / 44


Bsp: <strong>Use</strong> Case<br />

"Über WWW Aktien k<strong>auf</strong>en" (3)<br />

• Erweiterungen:<br />

• 3a. Web-Fehler beim Verbindungs<strong>auf</strong>bau<br />

• 3a1. System meldet Fehler an Benutzer (mit Ratschlag)<br />

und geht zurück zum vorherigen Schritt<br />

• 3a2. Käufer verlässt <strong>Use</strong> Case oder probiert erneut<br />

• 4a. Computer stürzt während Transaktion ab<br />

oder wird ausgeschaltet<br />

• 4a1. (Was machen wir da???)<br />

• 4b. Website bestätigt K<strong>auf</strong> nicht sofort,<br />

sondern stellt ihn <strong>auf</strong> Warteliste<br />

• 4b1. PAF protokolliert dies und setzt einen Terminmerker,<br />

um den Käufer später nach dem Ergebnis zu fragen<br />

• …<br />

• 5a. Website liefert zu wenig Information über den K<strong>auf</strong><br />

• 5a1. PAF protokolliert den Mangel, lässt Käufer K<strong>auf</strong> aktualisieren<br />

0, 1 oder mehrere<br />

Varianten pro Schritt<br />

<strong>Use</strong> <strong>Cases</strong> müssen nicht<br />

immer vollständig sein<br />

Verweis <strong>auf</strong><br />

Unter-<strong>Use</strong>-Case<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 8 / 44


Ein realer <strong>Use</strong> Case<br />

• Die Beschreibung <strong>auf</strong> den drei vorherigen Folien war übrigens<br />

ein realer <strong>Use</strong> Case aus einem realen Projekt<br />

• Und er ist recht gut gelungen:<br />

• Enthält genügend detaillierte Information<br />

• Ziel, Randbedingungen, Schritte, Problemsituationen<br />

• aber kaum etwas Unnötiges<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 9 / 44


Beispiel 2: Auto-Unfallschaden<br />

ersetzt bekommen<br />

• Hauptakteur: Geschädigter<br />

• Anwendungsbereich: SicherMich AG (Versicherung)<br />

• Niveau: Überblick<br />

• Beteiligte und Interessen:<br />

• Geschädigter: Möglichst hohe Erstattung bekommen<br />

• SicherMich: Möglichst wenig Erstattung bezahlen<br />

• Aufsichtsbehörde: Einhaltung der Gesetze sicherstellen<br />

• Voraussetzung: --<br />

• Mindestzusicherung:<br />

• SicherMich protokolliert Schadensmeldung und alle Aktivitäten<br />

• Zusicherung im Erfolgsfall:<br />

• Geschädigter und SicherMich einigen sich über Entschädigung<br />

und SicherMich zahlt diesen Betrag an Geschädigten<br />

• Auslöser: Geschädigter reicht Schadensmeldung ein<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 10 / 44


Beispiel 2: Auto-Unfallschaden<br />

ersetzt bekommen (2)<br />

• Haupt-Erfolgsszenario:<br />

1. Geschädigter reicht Schadensmeldung und Detail<strong>info</strong>rmation ein<br />

2. SicherMich prüft, dass Geschädigter eine gültige Police hat<br />

3. SicherMich weist den Fall einem Sachbearbeiter zur Prüfung zu<br />

4. SicherMich stellt fest, dass der Sachverhalt gemäß der<br />

Versicherungsbedingungen versichert ist<br />

5. SicherMich zahlt an Geschädigten und schließt den Fall<br />

egal ob manuell oder<br />

mittels einer Software<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 11 / 44


Beispiel 2: Auto-Unfallschaden<br />

ersetzt bekommen (3)<br />

• Erweiterungen:<br />

• 1a. Eingereichte Daten sind unvollständig<br />

• 1a1. SicherMich bittet Geschädigten um Auskünfte<br />

• 1a2. Geschädigter liefert fehlende Informationen<br />

• 2a. Geschädigter hat keine gültige Police<br />

• 2a1. SicherMich <strong>info</strong>rmiert Geschädigten, weist Antrag zurück,<br />

protokolliert all dies und schließt den Vorgang<br />

• 4a. Unfall verletzt wesentliche Versicherungsbedingungen<br />

• 4a1. SicherMich <strong>info</strong>rmiert Geschädigten, weist Antrag zurück,<br />

protokolliert all dies und schließt den Vorgang<br />

• 4b. Unfall verletzt Details der Versicherungsbedingungen<br />

• 4a1. SicherMich tritt in Verhandlungen mit Geschädigtem über<br />

Verringerung der Zahlung ein<br />

"Unfall" ist kein Akteur! Eigentlich:<br />

"SicherMich stellt fest, dass …" (Bedingung)<br />

etc.<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 12 / 44


Zusätzliche Felder<br />

Je nach Projektsituation ist es evtl. sinnvoll, der <strong>Use</strong>-Case-<br />

Schablone weitere Felder hinzuzufügen, z.B.<br />

• Lieferant der Anforderungen<br />

• Person. Für die Rückverfolgung bei Rückfragen<br />

• Trennung von Erweiterungen, Fehlerfällen, Alternativen<br />

• Werden ggf. an andere <strong>Use</strong>-<strong>Cases</strong> delegiert:<br />

• Erweiterungen: "extends"-Beziehung<br />

• Alternativen, Fehlerfälle: "generalizes"-Beziehung<br />

• Besondere Anforderungen<br />

• z.B. betreffend Datenformate, GUI o.ä. Sparsam einsetzen!<br />

• Offene Fragen<br />

• Streitpunkte, Zweifelspunkte, erwartete Ergänzungen etc.<br />

• Annahmen<br />

• z.B. über Kenntnisse des Benutzers<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 13 / 44


Akteure und Rollen<br />

• Die Akteure werden stets aus einer Perspektive bezeichnet,<br />

die zum <strong>Use</strong> Case gehört<br />

• z.B. Käufer, Geschädigter<br />

• jede Bezeichnung führt also eine Rolle ein<br />

• Im Anforderungsdokument muss irgendwo zusätzlich<br />

festgelegt werden, welche Beteiligten welche dieser Rollen<br />

einnehmen können<br />

• und unter welchen Umständen<br />

• Diese Festlegungen definieren Rechte, Benutzergruppen,<br />

Bündelung von Funktionen im GUI jeder Benutzergruppe etc.<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 14 / 44


Arten von <strong>Use</strong> <strong>Cases</strong><br />

<strong>Use</strong> <strong>Cases</strong> können für viele Zwecke eingesetzt werden:<br />

• Beschreibung von Geschäftsprozessen einer Organisation<br />

• Beschreibung der funktionalen Anforderungen einer<br />

Software oder Komponente<br />

• Dokumentation des Entwurfs eines Systems<br />

• textuelle Alternative zu Sequenzdiagrammen<br />

Und in verschiedenen Projekt-Kontexten, insbesondere:<br />

• Kleine, eng gekoppelte Gruppen von Beteiligten<br />

• Große oder örtlich verteilte Gruppen von Beteiligten<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 15 / 44


Arten von <strong>Use</strong> <strong>Cases</strong> (2)<br />

Deshalb sollte man <strong>Use</strong> <strong>Cases</strong> entlang 2 Dimensionen<br />

unterscheiden:<br />

• Bezug (Anwendungsbereich, scope,<br />

"system under discussion", SuD)<br />

• eine Organisation<br />

• ein Softwaresystem<br />

• eine SW-Komponente<br />

Geschäftsprozess<br />

Interaktion, funktionale Anforderungen<br />

Verhalten einer Schnittstelle<br />

• Abstraktionsgrad (Wie viele Details fehlen?)<br />

• Überblick<br />

hoher Abstraktionsgrad<br />

• Benutzerinteraktion<br />

• Details<br />

mittlerer Abstraktionsgrad<br />

geringer Abstraktionsgrad<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 16 / 44


Arten von <strong>Use</strong> <strong>Cases</strong> (3)<br />

Anders ausgedrückt: Man muss beantworten<br />

• Von welchem System reden wir hier eigentlich?<br />

• Der ganzen Firma, dem zu bauenden System,<br />

einem Teil des Systems oder noch was anderem<br />

• Wenn das nicht klar ist, wird der <strong>Use</strong> Case unverständlich<br />

• Wie genau sollten wir die Abläufe beschreiben?<br />

• Nur als Hintergrund<strong>info</strong>rmation<br />

• Genau genug, um es konstruieren zu können<br />

• Wenn die Genauigkeit zu hoch ist,<br />

liest niemand die Beschreibung mehr<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 17 / 44


Arten von <strong>Use</strong> <strong>Cases</strong> (4)<br />

• (1) Beispiel PAF (Aktien über WWW k<strong>auf</strong>en):<br />

• Bezug:<br />

Softwaresystem<br />

• Abstraktionsgrad:<br />

Benutzerinteraktion<br />

• (2) Beispiel SicherMich (Auto-Unfallschaden ersetzt<br />

bekommen):<br />

• Bezug:<br />

Organisation<br />

• Abstraktionsgrad: Überblick<br />

• Dies sind auch die beiden häufigsten Sorten:<br />

• (1) Interaktionsbeschreibungen für SW-Systeme liefern<br />

funktionale Anforderungen<br />

• (2) Überblicksbeschreibungen für Organisationen liefern<br />

den Hintergrund für das Verständnis von Anforderungen<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 18 / 44


Feinkörnigere <strong>Use</strong> <strong>Cases</strong> sind möglich<br />

• Der Hauptakteur muss kein Mensch sein<br />

• also kann der Bezug eine Softwarekomponente ohne<br />

Benutzerinteraktion sein<br />

• oft einfacher <strong>auf</strong>zuschreiben als ein Sequenzdiagramm<br />

• Ein <strong>Use</strong> Case kann auch feine Details enthalten<br />

• Aber: Er sollte stets Ziele/Zwecke beschreiben,<br />

nicht bloße technische Einzelheiten<br />

• Ein <strong>Use</strong> Case kann "Innereien" offen legen ("white box")<br />

• und beschreibt dann Entwurf, nicht (nur) Anforderungen.<br />

• Das ist jedoch eine ungewöhnliche Verwendung.<br />

• Normalerweise bieten <strong>Use</strong> <strong>Cases</strong> keinen Einblick ("black box")<br />

• Beide Beispiele (PAF und SicherMich) waren ohne Einblick<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 19 / 44


Vorsicht mit Präzision!<br />

• Genauigkeit hat zwei Facetten:<br />

Präzision (precision) und Richtigkeit (accuracy)<br />

• Pi ≈ 4,141592654<br />

• sehr präzise, aber wenig richtig<br />

• Pi ≈ 3<br />

• wenig präzise, aber völlig richtig<br />

• Pi ≈ 3,14<br />

• ausreichend präzise und völlig richtig<br />

• Der Fehler durch Präzisionsmangel ist<br />

kleiner als die Ungewissheit durch<br />

Wärmeausdehnung!<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 20 / 44


Präzisions-Gefahren bei <strong>Use</strong> <strong>Cases</strong><br />

Wer zu früh zu genau spezifiziert, geht Gefahren ein:<br />

• Gefahr 1: Alles falsch!<br />

• Oft übersieht man anfangs etwas Wichtiges total oder<br />

sitzt einem wichtigen Missverständnis <strong>auf</strong><br />

• und muss eigentlich alles ganz anders machen<br />

• Wer dann gleich in Details investiert, setzt viel Arbeit in den Sand<br />

• Gefahr 2: Niemand liest's!<br />

• Die Beteiligten an einem Projekt sind in der Regel sehr an<br />

grundlegenden Informationen, Überblicken etc. interessiert<br />

• Aber wenn Dokumente zu umfangreich werden, liest niemand sie<br />

mehr<br />

• Also: Weniger ist oft mehr<br />

• <strong>Use</strong> <strong>Cases</strong> sollten immer nur gerade genau genug sein.<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 21 / 44


Präzision bei <strong>Use</strong> <strong>Cases</strong>: Empfehlung<br />

<strong>Use</strong> <strong>Cases</strong> sollte man schrittweise präziser machen:<br />

• Stufe 1: Hauptakteur und Ziel<br />

• Schon das klärt wichtige Anforderungen und Beteiligte<br />

• Nun erst mal prüfen, ob alles wirklich stimmt<br />

• Stufe 2: Haupt-Erfolgsszenario<br />

• Reicht in manchen Fällen schon ganz aus<br />

• Auch hier prüfen, ob es so akzeptabel ist (z.B. Benutzbarkeit)<br />

• Stufe 3: Erweiterungsbedingungen (Varianten, Fehler)<br />

• Welche Probleme und Varianten müssen ggf. behandelt werden?<br />

• "Gefahr erkannt, Gefahr schon halb gebannt"<br />

• Stufe 4: Erweiterungsschritte<br />

• Wie werden die Probleme/Varianten behandelt?<br />

• Kann man oft weglassen: Wird dann <strong>info</strong>rmell geklärt<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 22 / 44


Konzentrieren<br />

Sie sich <strong>auf</strong> das Wesentliche!<br />

Tom Selleck<br />

Saddam Hussein<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 23 / 44


Präzision der Form<br />

Nicht nur beim Inhalt, auch in der Form der <strong>Use</strong> <strong>Cases</strong> gilt die<br />

Regel "bitte gerade genau genug":<br />

• Informelle <strong>Use</strong> <strong>Cases</strong> sind eventuell reiner Fließtext<br />

• ganz ohne Abschnittsnamen und feste Struktur<br />

• Die wichtigsten Angaben (Hauptakteur, Ziel, wichtigste Schritte)<br />

müssen natürlich erkennbar sein<br />

• Meist ist etwas Struktur aber dermaßen hilfreich, dass sie sich<br />

empfiehlt<br />

Der umgekehrte Fall gilt ebenso:<br />

• Wenn die Anforderungen kritisch sind oder<br />

im Team keine hohe Kommunikation herrschen kann<br />

• z.B. weil es sehr groß oder örtlich verteilt ist<br />

• dann kann verstärkte Struktur nützlich sein<br />

• z.B. mehr feste Abschnitte oder rigidere Formulierungsweise<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 24 / 44


Wichtigkeit von Zielen<br />

• Ein gutes Anforderungsdokument benennt Anforderungen<br />

nicht einfach, sondern begründet sie<br />

• damit man Mehrdeutigkeiten leichter ausräumen kann<br />

• damit man Prioritäten vernünftig setzen kann<br />

• In <strong>Use</strong> <strong>Cases</strong> werden die Begründungen durch die Ziele<br />

geliefert<br />

• Ein Ziel beantwortet zu den Schritten die Frage "Warum?"<br />

• Der Name eines <strong>Use</strong> <strong>Cases</strong> sollte ein Ziel bezeichnen<br />

• In einem umfassenderen <strong>Use</strong> Case tritt dieses Ziel als Schritt <strong>auf</strong><br />

• Ziele-als-Schritte beschreibt eine hierarchische Zerlegung<br />

• so dass einzelne <strong>Use</strong> <strong>Cases</strong> übersichtlich/beherrschbar bleiben<br />

• Ein guter <strong>Use</strong> Case hat meistens 3 bis 9 Schritte<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 25 / 44


Beispiel: Gesund werden (1)<br />

• <strong>Use</strong> Case: Patient (Hauptakteur) will gesund werden (Ziel)<br />

und besucht dazu einen Arzt (SuD)<br />

• Schritte:<br />

• 1. Arzt stellt Diagnose<br />

• 2. Arzt verordnet Medikament<br />

• 3. Patient beschafft Medikament<br />

• 4. Patient nimmt Medikament ein<br />

(SuD: Apotheke)<br />

• Varianten:<br />

• 2a. Arzt überweist an Facharzt<br />

• 2b. Arzt überweist ins Krankenhaus<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 26 / 44


Beispiel: Gesund werden (2)<br />

• <strong>Use</strong> Case:<br />

Arzt (Hauptakteur) stellt Diagnose (Ziel) für Patient<br />

• Schritte:<br />

• 1. Arzt validiert Krankenversicherung via eGK<br />

• 2. Arzt befragt Patient nach Symptomen und Historie<br />

• 3. Arzt untersucht Patient<br />

• 4. Arzt entscheidet Diagnose(n)<br />

• 5. Arzt speichert Diagnose <strong>auf</strong> eGK<br />

• Varianten:<br />

• 1a. Arzt geht direkt zu Notfallversorgung über (Ende)<br />

• 1b. eGK oder eGK-Infrastruktur nicht verfügbar<br />

• 5a. Patient verweigert Speicherung<br />

• 5b. eGK oder eGK-Infrastruktur nicht verfügbar<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 27 / 44


Beispiel: Gesund werden (3)<br />

• <strong>Use</strong> Case: Arzthelfer (Hauptakteur) validiert<br />

Krankenversicherung (Ziel) für Patient über die eGK (SuD)<br />

• Schritte:<br />

• 1. Arzthelfer legt HBA in eGK-Terminal ein und authentisiert sich<br />

• 2. Patient legt eGK in eGK-Terminal ein und authentisiert sich<br />

• 3. Arzthelfer fragt Krankenversicherungsstatus ab<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 28 / 44


Beispiel:<br />

Gesund werden – Beobachtungen<br />

1. Es entsteht eine Hierarchie von Zielen/Zwecken:<br />

• HBA in eGK-Terminal einlegen hat den Zweck<br />

Krankenversicherung validieren<br />

hat den Zweck<br />

Diagnose stellen<br />

hat den Zweck<br />

Gesund werden<br />

2. "Arzt" ist gar keine Person, sondern eine Organisation<br />

• Rollenwechsel von "Arzt prüft" zu "Arzthelfer legt ein"<br />

3. Klare Benennung der Akteure macht <strong>auf</strong> Probleme<br />

<strong>auf</strong>merksam:<br />

• Wer wird am Ende die Diagnose speichern: Arzt oder Arzthelfer?<br />

• Falls Arzt: Muss sich der Patient dann nochmals anmelden?<br />

• Allgemein: Wie oft pro Tag melden sich Arzt/Arzthelfer an?<br />

• etc.<br />

4. Geringe Zahl von Schritten erlaubt jederzeitige Orientierung<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 29 / 44


Nochmal: Das richtige Detailniveau<br />

Ein gutes Projekt sollte haben:<br />

• 1 Überblicks-<strong>Use</strong>-Case für das ganze Projekt<br />

• Je 1 Überblicks-<strong>Use</strong>-Case für jeden Bereich von Zielen<br />

• meistens 2 bis 4; fast niemals mehr als ein Dutzend<br />

• Je 1 Überblicks-<strong>Use</strong>-Case für Abläufe, die<br />

aus mehr als einer Sitzung am Rechner bestehen<br />

• selten mehr als ein Dutzend; oft Ersatz für obige Bereiche<br />

• Je 1 Benutzerziel-<strong>Use</strong>-Case für jeden Abl<strong>auf</strong>, der<br />

"in einem Rutsch" (1 Sitzung) absolviert wird<br />

• bei einem großen System eventuell einige Dutzend<br />

• bei langen Abläufen zerlegt in Teile<br />

• Je 1 Detail-<strong>Use</strong>-Case für komplizierte Teilabläufe<br />

• Die meist mehrfach wiederverwendet werden<br />

• Je nach gewünschten Detailgrad viele oder wenige<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 30 / 44


Beispiel<br />

Wie?<br />

Warum?<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 31 / 44


Schrittweises Modell<br />

für das Gesamtvorgehen<br />

Globale Schritte:<br />

• Lege die Grenzen des Systems fest<br />

• Kontextbild, Liste von Eingaben und Ausgaben<br />

• Finde alle Hauptakteure<br />

• Vollständigkeit ist essenziell<br />

• Finde alle wichtigen Ziele jedes Hauptakteurs<br />

• (Man kann die Leute dafür sogar fragen!) ☺<br />

• Schreibe wenige, grobe, zusammenfassende Überblicks-<strong>Use</strong>-<br />

<strong>Cases</strong>, die alle Ziele und Akteure erfassen<br />

• Das charakterisiert den Zweck und die Prioritäten des Systems<br />

• Analysiere diese: Ziele zufügen, entfernen, vereinigen<br />

• Befrage dabei die Hauptakteure<br />

Jetzt geht es an die einzelnen Benutzer-Interaktionen:<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 32 / 44


Schrittweises Modell<br />

für das Gesamtvorgehen (2)<br />

Für jeden <strong>Use</strong> Case <strong>auf</strong> Benutzerebene:<br />

• Wähle nächsten <strong>Use</strong> Case zum Ausarbeiten aus<br />

• Schreibe das Haupt-Erfolgsszenario<br />

• möglichst stets 3 bis 9 Schritte<br />

• Finde und beschreibe alle Misslingensfälle und alternative<br />

Erfolgsfälle<br />

• Breche Teil-<strong>Use</strong>-<strong>Cases</strong> heraus wo nötig<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 33 / 44


<strong>Use</strong> <strong>Cases</strong> und Szenarios<br />

• In Fällen, in denen das Schreiben eines <strong>Use</strong> Case schwer fällt<br />

• oder wenn man erwartet, dass er für manche Beteiligte zu<br />

schwierig zu verstehen ist (weil zu abstrakt)<br />

• kann man zusätzlich Szenarios verwenden:<br />

• Ein Szenario ist eine konkrete(re) Ausprägung eines <strong>Use</strong> Case<br />

• Es gibt also keine Varianten, sondern nur einen linearen Abl<strong>auf</strong><br />

• Dieser kann allgemein beschrieben sein oder ganz konkrete<br />

Datenwerte etc. angeben<br />

• In vielen Fällen kommt man aber ohne Szenarios aus<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 34 / 44


Checkliste für <strong>Use</strong>-Case-Bestandteile<br />

Bei einem guten <strong>Use</strong> Case lautet jede Antwort "ja":<br />

• Titel:<br />

• Aktive Verbalphrase, die das Ziel des Hauptakteurs nennt?<br />

• Ist das SuD für die Zielerreichung "zuständig"?<br />

• Bereich (SuD):<br />

• Angegeben?<br />

• Wenn das SuD entworfen werden muss, müssen (a) alle Teile<br />

entworfen werden und (b) nichts außerhalb (Systemgrenze)?<br />

• Detailgrad/Zielniveau:<br />

• Liegt das Ziel wirklich <strong>auf</strong> diesem Niveau?<br />

• Passt der Inhalt zum geplanten Detailgrad?<br />

• Hauptakteur:<br />

• Hat er/sie/es Verhalten?<br />

• Hat er/sie/es ein Ziel, das zu einer Dienstzusicherung des SuD<br />

passt?<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 35 / 44


Checkliste<br />

für <strong>Use</strong>-Case-Bestandteile (2)<br />

• Voraussetzungen:<br />

• Sind sie verbindlich und herstellbar?<br />

• Werden sie im <strong>Use</strong> Case nicht mehr überprüft?<br />

• Beteiligte und ihre Interessen:<br />

• Muss das SuD in diesem <strong>Use</strong> Case diese Interessen bedienen?<br />

• Mindestzusicherungen:<br />

• Sind die Interessen aller Beteiligten angemessen geschützt?<br />

• Zusicherungen im Erfolgsfall:<br />

• Sind die Interessen aller Beteiligten befriedigt?<br />

• Haupt-Erfolgsszenario:<br />

• Hat es 3 bis 9 Schritte?<br />

• Beschreibt es den Abl<strong>auf</strong> vom Auslöser bis zur Erfolgsgarantie?<br />

• Erlaubt es ggf. geeignete Abwandlungen in der Reihenfolge?<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 36 / 44


Checkliste<br />

für <strong>Use</strong>-Case-Bestandteile (3)<br />

• Jeder Einzelschritt in einem Szenario:<br />

• Ist er als erreichtes Ziel formuliert?<br />

• z.B. "validieren", nicht: "prüfen"<br />

• Treibt er den Prozess sichtbar voran?<br />

• Ist klar, wer der handelnde Akteur ist?<br />

• Ist die Absicht des Akteurs klar?<br />

• Abstrahiert der Schritt von der Bedienschnittstelle?<br />

• Ist erkennbar, welche Information verarbeitet wird?<br />

• Erweiterungsbedingungen:<br />

• Kann das SuD diesen Fall entdecken (falls nötig)?<br />

• Muss das SuD diesen Fall behandeln?<br />

• Inhalt des <strong>Use</strong> <strong>Cases</strong> insgesamt:<br />

• Gegenüber den Beteiligten: "Ist dies, was Du möchtest?",<br />

"Kannst Du später entscheiden, ob es richtig gebaut wurde?"<br />

• Gegenüber den Entwicklern: "Kannst Du das bauen?"<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 37 / 44


Und:<br />

Anforderungen müssen einleuchten<br />

• Gute, sinnvolle<br />

Anforderungen kann<br />

man immer in<br />

einleuchtender Form<br />

beschreiben<br />

• Evtl. fehlt nur ein<br />

Überblick<br />

• Hinterfragen Sie also<br />

uneinleuchtende!<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 38 / 44


Wie geht's dann weiter?<br />

• <strong>Use</strong> <strong>Cases</strong> sind aus Benutzersicht wunderbar<br />

• klar, prüfbar, einleuchtend<br />

• Auch als Werkzeug für die Anforderungserhebung sind sie<br />

günstig<br />

• einfach zu schreiben, einfach mit Beteiligten abzugleichen<br />

• Aus Entwicklersicht lassen sie aber zu wünschen übrig<br />

• Sie beschreiben nicht, welche Funktionen die SW braucht<br />

• Und auch nicht, was für Daten im System vorhanden sind<br />

• Es ist unklar, wie man die Arbeit <strong>auf</strong> Personen verteilen kann<br />

• Deshalb müssen als nächstes Daten und Funktionen<br />

identifiziert werden<br />

• Anforderungsanalyse<br />

• Siehe nächste Vorlesungen<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 39 / 44


Warnung: <strong>Use</strong> <strong>Cases</strong> sind nur ein Teil!<br />

• <strong>Use</strong> <strong>Cases</strong> decken nur Verhaltensanforderungen ab!<br />

• Sie beschreiben z.B. nicht<br />

• Geschäftsregeln (globale Festlegungen);<br />

• nichtfunktionale Anforderungen;<br />

• ob bestimmte konkrete Funktionen gewünscht werden;<br />

• Domäneneigenschaften und Annahmen;<br />

• Datenmodell, technische Schnittstellen u.ä.;<br />

• technische, organisatorische, rechtliche u.a. Randbedingungen<br />

• Das Anforderungsdokument muss also mehr als nur <strong>Use</strong><br />

<strong>Cases</strong> enthalten<br />

• aber <strong>Use</strong> <strong>Cases</strong> bilden einen guten Rahmen für den Rest<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 40 / 44


Warnung: <strong>Use</strong>-Case-Diagramme<br />

• UML-<strong>Use</strong>-Case-<br />

Diagramme enthalten<br />

im Gegensatz zu<br />

anderen UML-<br />

Diagrammen kaum<br />

Information<br />

• Sind nur nützlich, um<br />

Übersicht über die<br />

Zusammenhänge<br />

zwischen mehreren<br />

<strong>Use</strong> <strong>Cases</strong> zu fördern<br />

• Bitte nie das Diagramm<br />

mit dem <strong>Use</strong> Case<br />

verwechseln!<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 41 / 44


Zusammenfassung<br />

• Was ist ein <strong>Use</strong> Case?<br />

• Beispiele<br />

• Felder<br />

• Arten von <strong>Use</strong> <strong>Cases</strong><br />

• Wichtige Parameter<br />

• Bereich ("system under discussion")<br />

• Detailgrad/Zielniveau<br />

• Schrittweise Präzisierung<br />

• Gefahren von Präzision<br />

• Gesamtvorgehens-Schritte<br />

• Checkliste für <strong>Use</strong> <strong>Cases</strong><br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 42 / 44


Quelle<br />

• Alistair Cockburn: "Writing Effective <strong>Use</strong> <strong>Cases</strong>",<br />

Addison-Wesley 2001<br />

• http://alistair.cockburn.us/crystal/books/weuc/weuc0002extract.pdf<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 43 / 44


Danke!<br />

Lutz Prechelt, prechelt@inf.fu-berlin.de [6] 44 / 44

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!