Klaus Schultz  Reverse- & Software-Engineering


 

Alistair Cockburn: Writing Effective Use Cases. Addison-Wesley 2001

Dieses Büchlein ist über das effektive Arbeiten mit Use Cases. Es ist von einem Praktiker geschrieben und enthält zahlreiche Beispielen aus der Praxis (meist Versicherungsbranche). Es spricht einige wichtige Punkte an, die in anderer Literatur übergangen werden oder nur schematisch beantwortet werden. Es ist kein UML-Buch.

Im folgenden zitiere ich einige Kernaussagen (in englisch) und erläutere sie teilweise (in deutsch).

bullet

A use case is a prose essay. Nicht die Diagramme sind wichtig, sondern die Prosa.

bullet

Make the use case easy to read. You want your requirements document short, clear, and easy to read. Lasse die Intention des Aktors deutlich werden. Vermeide nach Möglichkeit ausgegliederte Extension Use Cases.

bullet

Just one sentence form. Die Einzelschritte eines Use Cases werden in nur einer Art beschrieben: mit einem Satz in Präsens, einem aktivem Verb, mit einem Subjekt, das erfolgreich ein Ziel verfolgt. Bsp: "Kunde schiebt Karte ein und gibt die PIN ein."
Im unteren Teil des Use Cases, in dem Extensions beschrieben werden, ändert sich der Stil. Eine Bedingung wird vorangestellt, z.B. "Falsche PIN eingegeben:..."

bullet

"Include" sub use cases. In UML-Terminologie ausgedrückt: verwende die include-relationship, sie ist eine natürliche Sache. Vermeide die extends- und specializes-relationship, sie trägt nur zur allgemeinen Verwirrung bei.

bullet

Who has the ball. Benenne den Aktiven eines Use Case Schrittes (Aktor oder System, das auch eine Art Aktor ist).

bullet

Get the Goal Level Right. Auf welcher Ebene bewegt sich der Use Case? Wird ein ganzer Geschäftsprozess dargestellt? oder ein einzelner, abgeschlossener Arbeitsschritt mehrere Ebenen darunter? Beides ist erlaubt, sofern dadurch Klarheit geschaffen wird. Entscheidend ist aber die Ebene des einzelnen Akteurs: was will dieser in einer Arbeitssitzung erreichen (deswegen spricht Cockburn auch immer von einem "goal level"). Entspricht in der Geschäftsprozessmodellierung der ElementarFunktion. Der Test für den user level:
- it is done by one person, in one place, at one time(2 to 20 min.)
- the actor can go away happily as sooon as it is completed
- the actor (if an employee) can ask for a raise after doing many of these (ist das nun typisch amerikanisch oder typisch gewerkschaftlich?)
Beispiele: "Log in" ist zu detailliert, "buy a book" ist OK, "online auction" ist high level, weil sie über mehrere Tage geht. "Schadensmeldung eingeben" in einer Versicherung ist user level.
Es ist durchaus sinnvoll, use cases auf allen diesen Ebenen zu schreiben.

bullet

Keep the GUI out. Capture the real intent of the actor.

bullet

Every use case has two possible endings, success and failure. Das trifft auch auf die include use cases zu.

bullet

Stakeholders need guarantees. Das System soll die Interessen aller beteiligten Stakeholder gewährleisten, und zwar nicht nur bei success.

bullet

Preconditions werden als wahr vorausgesetzt und im use case nicht nochmals überprüft. Bsp: Benutzer ist eingeloggt. Preconditions werden in einem vorausgegangen use case hergestellt.

bullet

Pass/Fail tests for one use case Tabelle auf S.213

bullet

It's just chapter three.
Use cases are only a small part of the total requirements-gathering effort, perhaps "Chapter 3" of the requirements document. Sie sind zwar zentral und verbinden Datendefinitionen, User Interface, etc. Aber nichtsdestotrotz sind sie nur ein Teil der Requirements: nämlich der funktionale.
Eine Verlinkung der use cases mit Datenbeschreibungen wie "Adresse" ist sinnvoll (S.162)
Im use case selbst wird ein Nickname benutzt, z.B. "Adresse", deren Bestandteile müssen in einem weiteren Präzisierungsschritt beschrieben werden, am besten nicht im use case-Format.

Ein Argument, das Cockburn öfters verwendet, z.B. gegen allzu lange, ausgefeilte Use Cases: Use Cases dienen der Kommunikation im Team, und sollen diese nicht ersetzen oder lähmen.