|
|
|
||
|
"Es ist nicht genug zu wissen; man muss es auch anwenden. AnwendungsfälleIvar Jacobson (heute IBM Rational [L7]) entwickelte das Konzept des Anwendungsfalls (Abk.: AF, engl.: Use Case [L12], Abk.: UC) seit 1967 und benutzte diese Bezeichnung erstmalig 1986. Über mehrere Jahre wurde das Konzept weiter entwickelt und fand dann Mitte der 90er rasante Verbreitung. Die Kernidee besteht in der Beschreibung eines "Stücks" der Software in einem sehr frühen Stadium des Projekts - möglichst noch vor den Prototypen, auf jeden Fall aber vor der Programmierung des Codes.
Damit zeigt ein Anwendungsfall auf, "wie" ein Ziel eines Akteurs erreicht wird oder fehlschlägt. Daraus wird auch ersichtlich, dass es etwas Erfahrung benötigt, Anwendungsfälle zu identifizieren und abzugrenzen. Und so lange man vor einem weißen Blatt Papier sitzt, ist es immer schwierig! Wenn man erst mal einige Anwendungsfälle stichwortartig oder sogar nur mit Überschriften vor sich liegen hat, dann ergeben sich auch schnell die weiteren Schritte. Um es gleich zu sagen: die Anzahl der Anwendungsfälle hängt von sehr vielen Kriterien ab und muss sich ergeben. Es macht keinen Sinn, die Granularität danach auszurichten, wie viele Anwendungsfälle "man haben sollte". In der Regel haben auch wirklich große Projekte nicht mehr als 150 Anwendungsfälle; mein letztes Projekt von etwas mehr als drei Personenjahren Umfang hatte letztendlich 30 Anwendungsfälle, die implementiert wurden. Dies zeigt zumindest, dass sicherlich nicht jeder Button des Programms ein eigener Anwendungsfall ist. Andererseits sollte ein Anwendungsfall eine überschaubare Menge an Funktionalität widerspiegeln: Wenn Sie ein Dutzend verschiedene Anwenderrollen und sogar mehrere Applikationsschnittstellen in einem einzelnen Anwendungsfall wiederfinden, sind Sie wahrscheinlich zu grob unterwegs. Ein Anwendungsfall hat in der Regel einen angenehmen Umfang, wenn sich die Abfolge seiner Aktionen gut in Prosa als Szenario beschreiben lässt. Damit sind auch bereits zwei wichtige Aspekte der Anwendungsfälle genannt, denn die Sicht beinhaltet Szenarien, die die Software unterstützt, d.h. Fälle, für die die Software angewandt werden soll. Diese sollte man in Prosa in der Sprache des Kunden beschreiben, denn in der Regel wird die Anwendungsfallsammlung als Leistungsbeschreibung zur Anlage des Angebots bzw. Auftrags. Damit sollte auch schon klar sein, dass die Anwendungsfälle Leistungsmerkmale aus Anwendersicht beschreiben. Da ein Anwendungsfall mehrere Leistungsmerkmale abdecken kann, werden auch die Merkmalschnittstellen beschrieben. Anwendungsfälle sollten schon beschreiben, "wie" die Fachlichkeit hier unterstützt wird, also "wie" die Software dem Anwender bei der Lösung seines Problems hilft, aber nicht, wie die technische Realisierung des Anwendungsfalls aussieht. Dafür sollten begleitend (oder besser in der nachfolgenden Entwurfsphase) technische Spezifikationen erstellt werden AnwendungsfallhierarchieIm Buch [B14] zitiert Alistair Cockburn [M1] sehr passend ein kleines Gedicht des Iren Jonathan Swift:
Wenn Sie Anwendungsfälle schreiben, werden Sie nämlich eine Hierarchie erkennen, in der Sie diese Anwendungsfälle anordnen können: Wenn ein Akteur beispielsweise regelmäßig Wirtschaftsplananmeldungen erfasst, ein anderer jährlich einen Wirtschaftsplan erstellt und eine Controlling-Abteilung dessen Einhaltung kontinuierlich überwacht, so macht es Sinn, für alle drei Anwendungsfälle einen übergeordneten Anwendungsfall (oder im Sinne der UML ein "Paket") einzurichten, der Gemeinsamkeiten und detailliertere Beziehungen der drei Anwendungsfälle beschreibt. Dadurch entsteht auch eine Beziehung zum Gesamtgeschäftsprozess, die zum Test verwendet werden kann und stets auch weitere Aspekte mit ins Spiel bringt. Es kann sich sogar ergeben, dass es weitere wirtschaftliche Prozesse gibt, die Sie mit der zu erstellenden Software unterstützen sollen, so dass es hier vielleicht sogar noch einen weiteren, übergeordneten Anwendungsfall "Kostenverwaltung" gibt. Es kann auch sein, dass Sie einen Anwendungsfall bei weiterer Betrachtung als unhandlich groß empfinden und in zwei kleinere zerlegen, wodurch sich die Hierarchie ändern kann. Ich versuche immer, nicht mehr als drei echte Hierarchieebenen aufzubauen: An die Wurzel setze ich den Namen des zu erstellenden Softwaresystems, darunter folgen die Anwendungsfälle, die ich gerne "Übersichtsanwendungsfälle" (ÜAF) nenne, weil sie eine sehr grobe Paketierung darstellen. Dann folgen die Anwendungsfälle, die ich gerne "Funktionsanwendungsfälle" (FAF) nenne, weil sie größere funktionale Pakete darstellen. Und schließlich folgen die Anwendungsfälle, die ich dann gerne "Detailanwendungsfälle" (DAF) nenne, weil sie die eigentlichen Szenarien detailliert beschreiben. Bei kleinen Projekten reichen sicherlich auch zwei Stufen und bei riesig großen benötigt man sicherlich eher vier oder gar fünf, aber ich komme mit drei meistens ganz gut hin. Im Buch [B14] beschreibt Alistair Cockburn [M1] eine Hierarchie mit fünf Stufen.
EntstehungSie beginnen bei der Arbeit mit den Anwendungsfällen eigentlich schon in der Geschäftsprozessanalyse, weil Sie im Zweck- und Tragweiten-Diagramm innerhalb der Systemgrenzen bereits Übersichtsanwendungsfälle (bzw. AF-Pakete) einzeichnen. In aller Regel führt nämlich eine Hauptanforderung auch zu einem zentralen Anwendungsfall, so dass Sie also bereits erste Anwendungsfälle vorliegen haben, bevor Sie konkret damit anfangen - Sie müssen sie nur noch als solche hinschreiben. Ausgangspunkt sind also tatsächlich die zu unterstütztenden Geschäftsprozesse und die zu erfüllenden Anforderungen, die Sie während der frühen Phasen des Projekts gesammelt haben. Je besser diese Vorarbeit war, desto sicherer kommen Sie zu guten Anwendungsfällen! Mit den Anwendungsfällen kommt endgültig der Wechsel in die Lösungsebene. Damit geht die Verantwortung des Projektverlaufs auch endgültig auf den Anbieter über, denn dieser muss jetzt Vorschläge zur Konstuktion liefern. Der Anbieter hat die Fachlichkeit und das Problem des Kunden jetzt genug verstanden, um Lösungen anbieten zu können, d.h. dem Kunden präsentieren zu können, "wie" die Software ihn bei der Lösung seiner Probleme unterstützen kann. Während die fachliche Fehlerfreiheit in der Kundenverantwortung liegt, sollte der Anbieter die Verantwortung für die Implementierbarkeit der vorgeschlagenen Lösungen an sich ziehen, denn genau ist sein Job! Zum Test ist es aber sehr wichtig, zunächst noch in Prosa zu formulieren und das System möglichst vollständig aus Anwendersicht beschreiben, denn diese Dokumentation bildet die Grundlage des Systems, das später dem Kunden geliefert wird. Anhand dieser Beschreibungen kann der Kunde also prüfen, ob ihn sein Lösungsanbieter auch wirklich richtig verstanden hat.
In den letzten Jahren sind so nette Formulierungen wie "Business Process Choreography" oder "Use Case Orchestration" oder "Storyboard" aufgekommen, die alle auf Zerlegung mit anschließendem "Zusammenspiel" abzielen - ich hoffe, Sie verzeihen mir die Verwendung eines deutschen Begriffs! Letztendlich geht es darum, die erkannten Abläufe so in handliche Portionen zu zerlegen, dass sie danach wieder nahtlos zu den Abläufen zusammengesetzt werden können. Dabei gehen Sie als Anbieter typischerweise erheblich systematischer vor als der Kunde ursprünglich bei der Erstellung seines Fachkonzepts (sofern es sowas in dem Projekt überhaupt mal gegeben hat). Letztendlich werden beide Dokumente tatsächlich die gleiche inhaltliche Aussage enthalten - nur ist der Anwendungsfallkatalog erheblich implementierungssicherer als das Fachkonzept. Wer schon länger in der Softwareentwicklung unterwegs ist, kennt noch die Begriffe "Lastenheft" und "Pflichtenheft". Das Lastenheft (es beschreibt grob die Lasten, die die Software zu tragen hat) entspricht hier dem Fachkonzept und das Pflichtenheft (es beschreibt präzise die Pflichten, die die Software zu erfüllen hat) entspricht hier der Leistungsbeschreibung, deren wesentliche Bestandteile heutzutage die Anwendungsfallbeschreibungen und die Prototypen sind.
...
Spezial- & Sonderfälle festhalten
Szenarien
Akzeptanzkriterien für Anwendungsfälle [L9]
Basis-Anwendungsfälle Ausblick: Eines Tages werden Anwendungsfälle direkt ausführbar sein. Der Analytiker von heute ist der Programmierer von morgen.
Fazit: |
|||||||||||||||||||||||||||||||||||||||||||||
|
|