Anwendungsfaelle (Use Cases) - auf Matthias-Draeger.info
Anwendungsfaelle (Use Cases) - auf Matthias-Draeger.info
Anwendungsfaelle (Use Cases) - auf Matthias-Draeger.info
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