01.03.2013 Aufrufe

Konzept und Werkzeug zur erfahrungsbasierten Erstellung von Use ...

Konzept und Werkzeug zur erfahrungsbasierten Erstellung von Use ...

Konzept und Werkzeug zur erfahrungsbasierten Erstellung von Use ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Leibniz Universität Hannover<br />

Fachgebiet Software Engineering<br />

Institut für Praktische Informatik<br />

Fakultät für Elektrotechnik <strong>und</strong> Informatik<br />

<strong>Konzept</strong> <strong>und</strong> <strong>Werkzeug</strong> <strong>zur</strong> <strong>erfahrungsbasierten</strong><br />

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

Masterarbeit<br />

im Studiengang Informatik<br />

<strong>von</strong><br />

Christian Crisp<br />

Prüfer: Prof. Dr. Kurt Schneider<br />

Zweitprüfer: Prof. Dr. Rainer Parchmann<br />

Betreuer: M. Sc. Eric Knauss<br />

Hannover, 23. Oktober 2006


Abstract<br />

Steigende Komplexität <strong>und</strong> Termindruck erlauben bei der Planung <strong>und</strong> Umsetzung neuer<br />

Systeme keine Fehler. Entwickler müssen gleich zu Beginn, nämlich in der<br />

Anforderungserhebungsphase, das System gut <strong>und</strong> fehlerfrei planen. In der Softwaretechnik<br />

bedient man sich dazu der Technik der <strong>Use</strong> Cases, um das Verhalten des Systems <strong>und</strong> alle<br />

denkbaren Fehlermöglichkeiten aufzuzeigen. Für das Gelingen <strong>von</strong> Projekten sind<br />

letztendlich aber Erfahrungen nötig.<br />

Diese Arbeit befasst sich mit der Entwicklung einer Domainorientierten Entwurfsumgebung<br />

<strong>zur</strong> <strong>Erstellung</strong> <strong>von</strong> <strong>Use</strong> Cases. Ziel dieses Tools ist die Unterstützung des Benutzers bei der<br />

Aufstellung der funktionalen Anforderungen, um eine gute <strong>und</strong> hoffentlich fehlerfreie<br />

Planung zu erhalten. Dabei soll das Tool die Arbeit des Benutzers aktiv analysieren,<br />

Hilfestellungen geben <strong>und</strong> kritisieren. Erfahrungen müssen automatisch herausgesucht <strong>und</strong><br />

dem Benutzer leicht zugänglich gemacht werden. Idealerweise werden nur relevante<br />

Erfahrungen angezeigt. Die Arbeit darf dabei nicht behindert oder aufgehalten werden.<br />

3


4<br />

Danksagungen<br />

Ich danke allen, die mir bei dieser Arbeit mit Rat <strong>und</strong> Tat <strong>zur</strong> Seite standen <strong>und</strong> dabei<br />

geholfen haben, das Tool auf Tauglichkeit zu überprüfen. Ein besonderer Dank geht an<br />

meinen Betreuer M. Sc. Eric Knauss, der mich stets vorbildlich <strong>und</strong> mit großem Interesse<br />

betreut hat.


Inhaltsverzeichnis<br />

Inhaltsverzeichnis..................................................................................................................... 5<br />

1 Einleitung ............................................................................................................................... 7<br />

1.1 Problemstellung................................................................................................................ 7<br />

1.2 Ziel der Arbeit .................................................................................................................. 7<br />

1.3 Gliederung........................................................................................................................ 7<br />

2. Gr<strong>und</strong>lagen........................................................................................................................... 8<br />

2.1 <strong>Use</strong> Cases ......................................................................................................................... 8<br />

2.1.1 <strong>Use</strong> Case Diagramm.................................................................................................. 8<br />

2.1.2 <strong>Use</strong> Case Template.................................................................................................. 10<br />

2.2 Erfahrung........................................................................................................................ 13<br />

2.3 Wissen............................................................................................................................ 14<br />

2.4 Erfahrungsnutzung......................................................................................................... 14<br />

2.5 Weitergabe <strong>von</strong> Wissen <strong>und</strong> Erfahrung ......................................................................... 14<br />

2.6 Wissensbasierte Systeme................................................................................................ 15<br />

2.7 Benutzer-Unterstützungssysteme................................................................................... 16<br />

2.8 Kritik .............................................................................................................................. 16<br />

2.9 Domain-Oriented Design Environments (DODEs)........................................................ 16<br />

2.10 SER Prozessmodell ...................................................................................................... 19<br />

3. Anforderungen................................................................................................................... 20<br />

3.1 Zielbestimmung.............................................................................................................. 20<br />

3.2 Systemvorrausetzungen.................................................................................................. 20<br />

3.3 Benutzertypen................................................................................................................. 20<br />

3.4 Funktionale Anforderungen........................................................................................... 21<br />

3.5 Qualitätsanforderungen.................................................................................................. 24<br />

3.5.1 Benutzbarkeit (Usability) ........................................................................................ 24<br />

3.5.2 Funktionalität .......................................................................................................... 25<br />

3.5.3 Übertragbarkeit........................................................................................................ 26<br />

3.5.4 Wartbarkeit .............................................................................................................. 26<br />

4. <strong>Konzept</strong> ............................................................................................................................... 27<br />

4.1 Klassifizierung <strong>von</strong> Erfahrung....................................................................................... 27<br />

4.2 Bearbeitung eines <strong>Use</strong> Cases.......................................................................................... 27<br />

4.3 Anzeigen <strong>von</strong> Erfahrung, Kritik, Hinweisen, Tipps....................................................... 29<br />

4.3.1 Microsoft Word....................................................................................................... 29<br />

4.3.2 Eclipse ..................................................................................................................... 30<br />

4.3.3 PopUp-Fehlerfenster ............................................................................................... 31<br />

4.3.4 Tipp des Tages ........................................................................................................ 32<br />

4.3.5 Hilfe auf Anfrage .................................................................................................... 32<br />

4.3.6 Fazit......................................................................................................................... 32<br />

4.4 Architektur des Tools..................................................................................................... 33<br />

4.5 Modelle........................................................................................................................... 35<br />

4.5.1 Projekt <strong>und</strong> <strong>Use</strong> Case Modell.................................................................................. 35<br />

4.5.2 Template Modell ..................................................................................................... 37<br />

4.5.3 Erfahrungsmodell.................................................................................................... 38<br />

4.6 Erfahrungsmatcher ......................................................................................................... 40<br />

4.7 Erfahrungsschatz............................................................................................................ 41<br />

4.8 GUI Entwurf................................................................................................................... 42<br />

5. Erfahrungssammlung ........................................................................................................ 44<br />

5.1 Allgemeine Erfahrungen auf Projekt- <strong>und</strong> <strong>Use</strong> Case-Ebene .......................................... 44<br />

5


6<br />

Inhaltsverzeichnis<br />

5.2 Erfahrungen für <strong>Use</strong> Case Attribute............................................................................... 47<br />

6. Tool ...................................................................................................................................... 54<br />

6.1 Beschreibung <strong>von</strong> Schnittstellen <strong>und</strong> Erweiterungsstellen............................................ 54<br />

6.1.1 Das <strong>Use</strong> Case Template........................................................................................... 54<br />

6.1.2 Die Erfahrungsbasis ................................................................................................ 54<br />

6.1.3 CriticChecker .......................................................................................................... 57<br />

6.1.4 Der Assistent ........................................................................................................... 57<br />

6.1.5 Die Persistenzschicht............................................................................................... 57<br />

6.1.6 Mehrsprachigkeit..................................................................................................... 58<br />

6.1.7 Export-Filter............................................................................................................ 58<br />

6.2 Kurze Benutzereinführung............................................................................................. 58<br />

7. Ausblick............................................................................................................................... 62<br />

8. Fazit..................................................................................................................................... 63<br />

Abbildungsverzeichnis ........................................................................................................... 65<br />

Literaturverzeichnis............................................................................................................... 66<br />

Anhang .................................................................................................................................... 67<br />

A <strong>Use</strong> Cases ......................................................................................................................... 67<br />

B XML Schemata................................................................................................................. 82<br />

C Programm <strong>und</strong> Quellcode................................................................................................. 87<br />

D Umfrageergebnis .............................................................................................................. 88


1 Einleitung<br />

1.1 Problemstellung<br />

Bei immer weiter steigender Komplexität <strong>und</strong> Zeitdruck in der Softwareentwicklung ist es<br />

<strong>von</strong> sehr großer Bedeutung, ein neues System gleich in der Erhebungsphase korrekt <strong>und</strong><br />

vollständig zu entwerfen. Spätere Änderungen <strong>und</strong> Erweiterungen bedeuten oft erheblichen<br />

zusätzlichen Aufwand, der zu zeitlichen Verzögerungen führt <strong>und</strong> nicht selten zu Ärger mit<br />

dem Auftraggeber. In der Softwaretechnik bedient man sich verschiedene Techniken, wobei<br />

<strong>Use</strong> Cases sich großer Beliebtheit erfreuen. Sie dienen der Erhebung <strong>von</strong> Anforderungen <strong>und</strong><br />

können frühzeitig Fehler <strong>und</strong> Missverständnisse beseitigen. In einen so genannten<br />

Anwendungsfall stehen ein Akteur <strong>und</strong> sein Ziel im Vordergr<strong>und</strong>. Der Weg zu dem Ziel <strong>und</strong><br />

somit das Verhalten des (Teil-) Systems wird durch ein Szenario beschrieben. Die <strong>Erstellung</strong><br />

<strong>von</strong> guten <strong>Use</strong> Cases setzt jedoch Erfahrung voraus, z. B. die nötigen Stakeholder vollständig<br />

zu ermitteln, ein gutes Maß zwischen groben <strong>und</strong> feinen Schritten zu finden <strong>und</strong> mögliche<br />

Fehler zu erkennen <strong>und</strong> zu behandeln. Gerade deshalb sind <strong>Use</strong> Cases alles andere als trivial.<br />

1.2 Ziel der Arbeit<br />

Ziel dieser Arbeit ist es, die oben genannten Schwierigkeiten bei der Aufstellung <strong>von</strong> <strong>Use</strong><br />

Cases aufzuzeigen <strong>und</strong> eine Erfahrungssammlung zusammenzustellen, die bei der <strong>Erstellung</strong><br />

<strong>von</strong> <strong>Use</strong> Cases helfen soll. Erfahrungen werden heute zwar bereits gesammelt, sie werden<br />

jedoch nur selten auch genutzt, da eine Suche mit Zeit <strong>und</strong> Aufwand verb<strong>und</strong>en ist. Ein<br />

umgesetztes Tool soll bei der <strong>Erstellung</strong> <strong>von</strong> <strong>Use</strong> Cases aktiv helfen. Dabei gibt das Tool je<br />

nach Bedarf verschiedene Hilfestellung <strong>und</strong> zeigt Hinweise <strong>und</strong> Warnungen selbständig. Ein<br />

geeignetes <strong>Konzept</strong> soll Erfahrungen für den Benutzer leicht zugänglich machen, so dass sie<br />

auch tatsächlich genutzt werden. Die Erfahrungen werden unabhängig vom Programm<br />

gespeichert <strong>und</strong> sind durch den Benutzer jederzeit erweiterbar. Darüber hinaus generiert das<br />

Programm aus den Anwendungsfällen automatisch ein <strong>Use</strong> Case Diagramm als grafisches<br />

Inhaltsverzeichnis.<br />

1.3 Gliederung<br />

In Kapitel 2 wird zunächst eine kurze Einführung in das Thema <strong>Use</strong> Cases, Erfahrung <strong>und</strong><br />

andere Gr<strong>und</strong>lagen gegeben. Die Anforderungen des Tools werden in Kapitel 3 spezifiziert.<br />

Kapitel 4 stellt das <strong>Konzept</strong>, Modelle <strong>und</strong> die Architektur des Tools vor. In Kapitel 5 werden<br />

einige aus der Literatur gesammelte Erfahrungen wiedergegeben <strong>und</strong> beschrieben, wie ein<br />

Kritiksystem die Einhaltung überprüfen kann. Kapitel 6 soll eine kurze Anleitung des Tools<br />

geben, sowie eine Beschreibung <strong>von</strong> Schnittstellen <strong>und</strong> Erweiterungsmöglichkeiten. Die<br />

Arbeit endet mit einem Ausblick <strong>und</strong> einem Fazit.<br />

7


8<br />

2. Gr<strong>und</strong>lagen<br />

2.1 <strong>Use</strong> Cases<br />

Ein <strong>Use</strong> Case, zu Deutsch Anwendungsfall, ist nach Cockburn [Coc01] ein Vertrag zwischen<br />

den Stakeholdern eines Systems über sein Verhalten. Er beschreibt das Verhalten (bzw. die<br />

Funktion) des Systems (bzw. Teile des Systems) unter verschiedenen Bedingungen <strong>und</strong> wie<br />

das System auf Anfragen eines Stakeholders reagiert. Der Hauptakteur initiiert eine<br />

Interaktion mit dem System um sein Ziel zu erreichen. Das System durchläuft ein Szenario<br />

<strong>und</strong> schützt die Interessen aller Stakeholder. <strong>Use</strong> Cases beschreiben immer das äußere <strong>und</strong><br />

extern wahrnehmbare Systemverhalten, das innere Verhalten <strong>und</strong> die innere Struktur bleiben<br />

unbekannt. Somit beschreiben Anwendungsfälle was ein System leisten soll <strong>und</strong> nicht wie es<br />

etwas erreicht.<br />

<strong>Use</strong>s Cases dienen als Technik <strong>zur</strong> Erhebung funktionaler Anforderungen <strong>und</strong> sind daher in<br />

die Anforderungserhebungsphase einzuordnen. Sie sind somit kein Bestandteil des Entwurfs.<br />

Da <strong>Use</strong> Cases nichts über Performance, Schnittstellen, Datenformate <strong>und</strong> Architekturen<br />

sagen, sind bei einem Entwurf eines Systems weitere Techniken notwendig. <strong>Use</strong> Cases<br />

erfreuen sich großer Beliebtheit, weil sie schon frühzeitig, nämlich in der Anforderungsphase<br />

Gr<strong>und</strong>lage für Diskussionen sind <strong>und</strong> mögliche Widersprüche, Fehlerszenarios, weitere Ziele<br />

<strong>und</strong> neue Stakeholder aufdecken können.<br />

Anwendungsfälle können als freier Text verfasst werden, durch Templates formalisiert sein,<br />

aber auch grafische Notationen wie Flussdiagramme, Sequenzdiagramme <strong>und</strong> Petri Netze<br />

sind denkbar. Jede Form hat natürlich ihre Vor- <strong>und</strong> Nachteile. Freie Texte können alle<br />

Beteiligten ohne Zusatzwissen verstehen, benötigte Teilinformationen müssen jedoch<br />

extrahiert werden. In tabellarischer Form sind die Informationen schneller zu finden <strong>und</strong> bei<br />

einem festgelegten Template einheitlich strukturiert. Grafische Notationen, die u. a. in UML<br />

(Unified Modeling Language) standardisiert wurden, können komplizierte Sachverhalte<br />

übersichtlicher darstellen, setzen jedoch semantisches Wissen voraus <strong>und</strong> können daher<br />

anders oder sogar falsch verstanden werden. Grafische Notationen enthalten oft nur wenig<br />

Information <strong>und</strong> können das Verhalten des Systems nicht so gut beschreiben wie ein in<br />

Textform verfasstes Szenario. Außerdem müssen K<strong>und</strong>en die Anforderungen verstehen, um<br />

sie validieren zu können, jedoch UML in der Regel nicht beherrschen. Daher sind Textformen<br />

oft die bessere Wahl.<br />

2.1.1 <strong>Use</strong> Case Diagramm<br />

<strong>Use</strong> Case Diagramme sind in UML (Unified Modeling Language) <strong>von</strong> der Object<br />

Management Group [OMG06] standardisiert worden <strong>und</strong> zeigen die Funktionen des Systems<br />

<strong>und</strong> die beteiligten Stakeholder. Sie stellen einen Überblick <strong>und</strong> Abhängigkeiten gut dar.<br />

Abläufe können jedoch nicht dargestellt werden.<br />

Die Systemgrenzen werden durch einen Rechteck dargestellt. Die Akteure, die als<br />

Strichmännchen dargestellt werden, stehen außerhalb des Systems <strong>und</strong> greifen auf die<br />

Anwendungsfälle des Systems zu. Anwendungsfälle werden durch Ovale mit ihren Namen


2.1 <strong>Use</strong> Cases<br />

gekennzeichnet. Abbildung 1 zeigt das <strong>Use</strong> Case Diagramm „Bankautomat“ mit dem ein<br />

K<strong>und</strong>e „Geld abheben“ <strong>und</strong> „Geld einzahlen“ kann.<br />

Abbildung 1: <strong>Use</strong> Case Diagramm: Bankautomat<br />

Anwendungsfälle <strong>und</strong> Akteure können spezialisiert werden, man kennzeichnet dieses durch<br />

einen Pfeil mit nicht ausgefülltem Kopf, der auf den allgemeinen Fall zeigt. <strong>Use</strong> Cases<br />

können andere Anwendungsfälle einbinden. Man spricht <strong>von</strong> einem Importieren, wenn der<br />

eingeschlossene Anwendungsfall zwingend mit eingeschlossen wird <strong>und</strong> kennzeichnet dieses<br />

durch einen gestrichelten Pfeil mit „“, der auf den importierten Fall zeigt. Von<br />

Erweitern spricht man, wenn der Anwendungsfall optional eingeschlossen wird. Eine<br />

Erweiterung wird durch einen gestrichelten Pfeil mit dem Attribut „“<br />

gekennzeichnet, der vom erweiterten Fall wegzeigt.<br />

Abbildung 2 zeigt wieder das <strong>Use</strong> Case Diagramm Bankautomat. Die Funktion „Geld<br />

abheben“ importiert die Funktion „K<strong>und</strong>e authentifizieren“, also der K<strong>und</strong>e muss im Szenario<br />

„Geld abheben“ seine PIN eingeben. Die Funktion „Geld einzahlen“ wurde um eine optionale<br />

Funktion „Quittung drucken“ erweitert. Der K<strong>und</strong>e kann auf Wunsch einen Einzahlungsbeleg<br />

anfordern. Der Geschäftsk<strong>und</strong>e ist ein Spezialfall des K<strong>und</strong>en.<br />

Abbildung 2: <strong>Use</strong> Case Diagramm: Detaillierter Bankautomat<br />

UML sagt nichts darüber aus, zu welchem Zeitpunkt oder an welcher Stelle ein<br />

eingeschlossener <strong>Use</strong> Case ausgeführt wird. Deswegen sind <strong>zur</strong> Beschreibung <strong>von</strong> Verhalten<br />

zusätzliche Techniken, wie die <strong>Use</strong> Case Templates in Kapitel 2.1.2 notwendig.<br />

9


10<br />

2.1.2 <strong>Use</strong> Case Template<br />

2. Gr<strong>und</strong>lagen<br />

<strong>Use</strong> Case Templates können je nach Bedarf verschieden aufgebaut sein. Sie haben mal mehr,<br />

mal weniger Felder <strong>und</strong> können auf verschiedenen Abstraktionsniveaus geschrieben sein, je<br />

nachdem für welchen Bereich <strong>und</strong> für welchen Zweck <strong>Use</strong> Cases erstellt werden. Als obersten<br />

Leitsatz sollte man sich jedoch stets vor Augen halten, dass es viel wichtiger ist, ein <strong>Use</strong> Case<br />

korrekt aufzuschreiben als ihn detailliert aufzuschreiben. Details können nachträglich<br />

hinzugefügt werden. Ein unvollständiger bzw. fehlerhafter <strong>Use</strong> Case ist eine mögliche<br />

Fehlerquelle, da ein solcher <strong>Use</strong> Case zu Fehlinterpretationen beim Programmierer führen<br />

kann. Die Folge ist eine fehlerhafte Software oder, falls der Fehler vor Auslieferung entdeckt<br />

wird, eine zeitliche Verzögerung. In beiden Fällen ist das mit zusätzlichen Kosten verb<strong>und</strong>en.<br />

Lange <strong>und</strong> sehr detaillierte <strong>Use</strong> Cases sind zu dem oft reine Zeitverschwendung, da sie selten<br />

gelesen werden <strong>und</strong> die kreative Freiheit des Programmierers einschränken.<br />

Da das <strong>Use</strong> Case Template <strong>von</strong> Alistair Cockburn in der Literatur vielfach zitiert wird <strong>und</strong><br />

sich im Software Engineering als zweckmäßig erwiesen hat, soll hier auf dieses tabellarische<br />

Template näher eingegangen werden. Neben einer <strong>Use</strong> Case Nummer <strong>und</strong> einem Titel, der als<br />

kurzer, aktiver Satz formuliert wird, besteht das <strong>Use</strong> Case Template <strong>von</strong> Alistair Cockburn<br />

[Coc06] aus folgenden sechs Abschnitten:<br />

1. Charakteristische Informationen des <strong>Use</strong> Cases, wie Beschreibung, Ebene,<br />

Vorbedingungen <strong>und</strong> Zusicherungen bei Erfolg bzw. Misserfolg<br />

2. Haupt-Erfolgsszenario, in der das Szenario schrittweise im Erfolgsfall geschildert wird<br />

3. Erweiterungsmöglichkeiten <strong>und</strong> Fehlerbehandlung des Haupt-Erfolgsszenarios<br />

4. mögliche technische Variationen<br />

5. weitere Informationen zum <strong>Use</strong> Case wie Priorität, Verwendungshäufigkeit, Dauer,<br />

Referenz auf höhere bzw. eingeb<strong>und</strong>ene <strong>Use</strong> Cases<br />

6. offene Punkte, die noch zu erledigen sind.<br />

1. Charakteristische Informationen<br />

Erläuterung:<br />

Das Ziel des <strong>Use</strong> Cases wird ausführlicher als im Titel beschrieben.<br />

Systemgrenze (Scope):<br />

Das betrachtete (Teil-) System als Black Box, mit dem der Hauptakteur agiert.<br />

Das Umfeld ist dabei so groß wie möglich zu wählen, so dass der Hauptakteur<br />

gerade noch außerhalb des Systems steht. Ein betrachtetes Teilsystem kann<br />

auch eine Softwarekomponente sein. Der Begriff „Systemgrenze“ ist etwas<br />

irreführend, daher wird im Folgenden der englische Begriff „Scope“<br />

verwendet.<br />

Ebene:<br />

Abstraktionsebene, auf die der <strong>Use</strong> Case geschrieben ist, beispielsweise<br />

Zusammenfassung, Benutzerebene, Subfunktion<br />

Vorbedingung:<br />

Bedingungen die für den <strong>Use</strong> Case vorausgesetzt werden, z. B. „der Benutzer<br />

ist eingeloggt“


2.1 <strong>Use</strong> Cases<br />

Mindestgarantie:<br />

Zusicherungen, die mindestens erfüllt werden, also auch bei einem Scheitern,<br />

mit welchen Resultat kann man mindestens rechnen, zum Beispiel „System<br />

protokolliert die Interaktion“<br />

Erfolgsgarantie:<br />

Zusicherungen bei einem erfolgreichen Durchlauf des <strong>Use</strong> Cases, insbesondere<br />

Erfüllung des Ziels, aber auch weitergehende Aktionen wie „System veranlasst<br />

einen Mitarbeiter, die Bestellung zusammenzustellen <strong>und</strong> zu verschicken“<br />

Hauptakteur (Primary Actor):<br />

Der Hauptakteur der im <strong>Use</strong> Case in Erscheinung tritt <strong>und</strong> mit dem System<br />

agiert<br />

Stakeholder <strong>und</strong> ihre Interessen:<br />

Auflistung der beteiligten Stakeholder <strong>und</strong> ihre Interessen, zum Beispiel:<br />

K<strong>und</strong>e: Ware erwerben (Bestellung vornehmen)<br />

Warenhaus: Geld vom K<strong>und</strong>en einnehmen (Rechnung erstellen)<br />

Auslöser / auslösendes Ereignis:<br />

Der Auslöser des <strong>Use</strong> Cases, in der Regel der Hauptakteur, der ein Ziel hat, z.<br />

B. „K<strong>und</strong>e möchte eine Ware bestellen“, es kann aber auch ein Ereignis sein<br />

wie „eine Bestellung ist eingegangen“ oder „es ist 3 Uhr morgens“<br />

2. Haupt-Erfolgsszenario<br />

In diesem Abschnitt erfolgt eine Auflistung der Schritte vom auslösenden Event bis<br />

hin zum Erreichen des Ziels. Die Schritte sind in einfachen aktiven Sätzen zu<br />

schreiben. Es sollte vermieden werden <strong>von</strong> „er“, „sie“ oder „es“ zu sprechen. Es sollte<br />

klar sein, wer in einen Schritt etwas aktiv tut. Es sollten keine Beschreibung zu der<br />

grafischen Oberfläche aufgeführt werden. Aussagen wie „Der Benutzer drückt auf<br />

Enter“ sind tabu. Erweiterungen <strong>und</strong> Fehlerbehandlungen haben hier ebenfalls nichts<br />

zu suchen, sie werden unter Erweiterungen angegeben. Beispiel:<br />

Schritt Akteur Aktion<br />

1 K<strong>und</strong>e legt Waren in virtuellen Einkaufswagen.<br />

2 System zeigt Inhalt des Warenkorbs an.<br />

3 K<strong>und</strong>e bestätigt seine Bestellung.<br />

4 System reicht Bestellung an einen Bearbeiter weiter.<br />

… … …<br />

3. Erweiterungen<br />

Es werden alle Erweiterungs- <strong>und</strong> Fehlermöglichkeiten aufgelistet, die im Haupt-<br />

Erfolgsszenario auftreten können. Die Schrittnummer referenziert auf einen Schritt im<br />

Erfolgsszenario. Unterschiedliche Erweiterungen zu einem Schritt werden mit<br />

unterschiedlichen Buchstaben gekennzeichnet. Beispiel:<br />

Schritt Bedingung Aktion<br />

1a Ware ist nicht<br />

vorhanden<br />

1a1 System weist den K<strong>und</strong>en daraufhin, dass es<br />

zu Verzögerungen kommen wird.<br />

11


12<br />

2. Gr<strong>und</strong>lagen<br />

3a K<strong>und</strong>e ist nicht 3a1 System weist den K<strong>und</strong>en daraufhin, dass er<br />

eingeloggt<br />

sich einloggen muss.<br />

3a2 K<strong>und</strong>e loggt sich ein.<br />

3b K<strong>und</strong>e möchte 3b1 System listet alle Artikel im Warenkorb auf.<br />

einen Artikel aus 3b2 K<strong>und</strong>e entfernt nicht gewünschte Artikel.<br />

dem Warenkorb<br />

entfernen<br />

3b3 System löscht die Artikel.<br />

… … …<br />

4. Technische Variationen<br />

Technische Variationen sind z. B. Medien, die alternativ zu denen im Szenario<br />

verwendet werden können. Beispiel:<br />

Schritt Was Aktion<br />

5 Rechnung Rechnung wird per Mail, Fax oder Post versendet<br />

5. Weitere Informationen<br />

Weitere Informationen sind optional <strong>und</strong> werden je nach Bedarf benötigt oder können<br />

entfallen. Einige sind red<strong>und</strong>ant <strong>und</strong> dienen nur als zusammenfassende Übersicht.<br />

Priorität:<br />

Die Wichtigkeit des <strong>Use</strong> Cases, z. B. unverzichtbar, wichtig oder<br />

wünschenswert.<br />

Performance / Durchlaufsdauer:<br />

Wie schnell wird der <strong>Use</strong> Case durchlaufen, zum Beispiel 10 Minuten für<br />

Eingabe der Bestellung, 24 St<strong>und</strong>en bis zum Versand<br />

Verwendungshäufigkeit:<br />

Wie oft wird der <strong>Use</strong> Case aufgerufen, zum Beispiel mehrmals die St<strong>und</strong>e,<br />

einmal am Tag<br />

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

Der allgemeine <strong>Use</strong> Case auf höherer Ebene, der diesen aufgerufen hat<br />

Sub <strong>Use</strong> Cases:<br />

Auflistung der <strong>Use</strong> Cases, die dieser <strong>Use</strong> Case verwendet, also die verlinkte<br />

<strong>Use</strong> Cases auf niedriger Ebene, wie Subfunktionen<br />

Kommunikationsweg zum Hauptakteur<br />

Wie kann man mit dem Hauptakteur in Verbindung treten, zum Beispiel mit<br />

Hinweisen auf der Webseite während der Bestellung oder per E-Mail nach der<br />

Bestellung<br />

Weitere Akteure<br />

Auflistung weiterer Akteure, zum Beispiel der Kommissionierer, der die<br />

Bestellung zusammenstellt


2.2 Erfahrung<br />

Kommunikationsweg zu den weiteren Akteuren<br />

Wie können die weiteren Akteure benachrichtigt werden, zum Beispiel per<br />

Mail oder Ausdruck<br />

6. Offene Punkte<br />

Im letzten Abschnitt werden offenen Punkte aufgelistet, die noch diskutiert <strong>und</strong> gelöst<br />

werden müssen. Dies sind z. B. Einfälle, die während des Erstellens aufgetaucht sind<br />

<strong>und</strong> Probleme, die man nicht sofort lösen konnte. Dies könnten beispielsweise Fragen<br />

sein, wie „Was ist, wenn der Benutzer noch kein K<strong>und</strong>e ist?“ oder „Was wird bei<br />

einen Systemabsturz gemacht?“<br />

Gerne wird das Template <strong>von</strong> Cockburn nach Bedarf erweitert oder gekürzt, um ein auf das<br />

Projekt zugeschnittenes Template zu erhalten. Die Unterteilung in 6 Abschnitte ist nicht<br />

zwingend erforderlich, oft wird ein <strong>Use</strong> Case auch in einer einzigen Tabelle geschrieben.<br />

Dadurch wird der <strong>Use</strong> Case kompakter, wodurch allerdings die Übersichtlichkeit leiden<br />

könnte. Ein tabellarischer <strong>Use</strong> Case wirkt auch als eine Art Checkliste. Eine derartige<br />

Auflistung kann leicht auf Vollständigkeit geprüft werden.<br />

Beispiele für weitere Erweiterungen ist die Angabe eines Status, in der der Entwicklungsstand<br />

des <strong>Use</strong> Cases angegeben wird, da so ersichtlich ist ob der <strong>Use</strong> noch im Entwurf ist, bereits<br />

überprüft wurde oder abgeschlossen ist. Und da ein <strong>Use</strong> Case vermutlich mehrmals<br />

modifiziert wird, ist eine Unterscheidung durch eine Versionsnummer <strong>und</strong><br />

Aktualisierungsdatum ratsam. Sicherlich wird ein <strong>Use</strong> Case nicht nur <strong>von</strong> einer Person<br />

erstellt, so dass die Angabe des Erstellers <strong>und</strong> die Bearbeiter des <strong>Use</strong> Cases helfen würden,<br />

die Verantwortlichen für eventuelle Rückfragen zu finden.<br />

2.2 Erfahrung<br />

Erfahrung = Beobachtung + Gefühlswert + Hypothese <strong>und</strong> Schlussfolgerung<br />

Definition <strong>von</strong> Erfahrung [S H02]<br />

Erfahrungen sind in Anlehnung an [SH02] Kenntnisse <strong>und</strong> Fertigkeiten, die durch Erlebnisse,<br />

Beobachtungen, Messungen oder Experimenten erworben werden <strong>und</strong> zu einem höheren<br />

Wissensstand führen. Mit einem eigenen Gefühl stellt man heraus, was an der Beobachtung<br />

bemerkenswert ist. Man bewertet <strong>und</strong> klassifiziert sie beispielsweise in positive <strong>und</strong> negative<br />

(Lebens-) Erfahrung. Mit der Aufstellung einer Hypothese <strong>und</strong> der Schlussfolgerung zieht<br />

man eine Konsequenz für die Zukunft. Gesammelte Erfahrungen helfen bei der Abschätzung<br />

der Vor- <strong>und</strong> Nachteile <strong>von</strong> Lösungsmöglichkeiten <strong>und</strong> steuern erheblich <strong>zur</strong><br />

Entscheidungsfindung bei. Erfahrungen helfen Erfolge zu wiederholen <strong>und</strong> Fehler zu<br />

vermeiden <strong>und</strong> haben für das Software Engineering den Vorteil, schneller, kostengünstiger<br />

<strong>und</strong> qualitativ bessere Software herstellen zu können.<br />

13


14<br />

2.3 Wissen<br />

2. Gr<strong>und</strong>lagen<br />

Während Erfahrung nur auf praktisch erworbene Kenntnisse beruht, ist Wissen „die<br />

Gesamtheit der Kenntnisse <strong>und</strong> Fähigkeiten, die Individuen <strong>zur</strong> Lösung <strong>von</strong> Problemen<br />

einsetzen“ ([TK98]), also auch die, die beispielsweise durch Lehrbücher erworben werden.<br />

Wissen schließt also neben eigene Erfahrungen auch übernommene Erfahrung anderer ein,<br />

aber auch erlernte Informationen, Fakten <strong>und</strong> Regeln. Wissen sind sicherere Informationen<br />

<strong>und</strong> somit das Gegenteil <strong>von</strong> Vermutungen oder Glauben ([Wik06]).<br />

2.4 Erfahrungsnutzung<br />

Um Erfahrungen nutzen zu können, muss sie zunächst erfasst werden. Erfahrungen werden<br />

gesammelt, analysiert <strong>und</strong> aufbereitet. Man versucht die Erfahrungen zu abstrahieren <strong>und</strong> zu<br />

generalisieren, so dass die Erfahrungen auf möglichst viele Probleme angewendet werden<br />

können. Die Erfahrungen müssen in geeigneter Weise aufbewahrt werden. Dies geschieht in<br />

einer so genannten Experience Base [BCR94], eine Ansammlung der Erfahrung, die in der<br />

einfachsten Form ein Forum oder eine FAQ sein kann. Die dort abgelegten Erfahrungen<br />

können nun für neue Projekte genutzt werden. Dazu müssen verschiedene Mechanismen, wie<br />

zum Beispiel eine Suche, <strong>zur</strong> Verfügung gestellt werden. Neu gewonnene Erfahrungen<br />

müssen wieder <strong>zur</strong>ück in die Experience Base fließen. Dies sind zum einen völlig neue<br />

Erfahrungen, zum anderen aber auch die Erfahrung über die Nutzung dieser Erfahrung, also<br />

eine Art Feedback. Durch diesen Zyklus, der auch Erfahrungskreislauf genannt wird<br />

(Abbildung 3), ergibt sich eine stetige Verbesserung der Erfahrung. Mit dem Sammeln,<br />

Aufbereiten, Formalisieren, Generalisieren, Analysieren, Speichern, Suchen <strong>und</strong> Kombinieren<br />

der Erfahrungen befasst sich das Modell des Experience Factorys ([BCR94]). Sie hat als Ziel,<br />

Projekte in der Planung <strong>und</strong> der Ausführung durch gesammelte Erfahrungen aus anderen<br />

Projekten zu unterstützen.<br />

Abbildung 3: Er fahrungskreislauf, vgl. [Sch00] <strong>und</strong> [Lir04]<br />

2.5 Weitergabe <strong>von</strong> Wissen <strong>und</strong> Erfahrung<br />

Wissen <strong>und</strong> Erfahrungen können weitergegeben werden. [NT95] unterscheidet, wie in<br />

Abbildung 4 verdeutlicht, zwei Zustände <strong>von</strong> Wissen. Das implizite Wissen ist das Wissen,<br />

das im Gedächtnis verankert ist, das explizite Wissen ist das aufgeschriebene Wissen. Wird<br />

implizites Wissen mündlich weitergegeben, so spricht man <strong>von</strong> Sozialisation. Das


2.6 Wissensbasierte Systeme<br />

Aufschreiben <strong>und</strong> digitale Erfassen <strong>von</strong> implizitem Wissen wird als Externalisierung<br />

bezeichnet. Explizites Wissen kann zu neuen explizitem Wissen kombiniert werden. Wenn<br />

eine Person explizites Wissen aufnimmt, so spricht man <strong>von</strong> Internalisierung. Er wandelt<br />

explizites Wissen wieder in implizites Wissen um. Die Aufnahme <strong>von</strong> Wissen durch<br />

Sozialisation <strong>und</strong> Internalisierung kann als Lernen bezeichnet werden.<br />

In dieser Arbeit wird ein <strong>Konzept</strong> erstellt, um den Schritt der Internalisierung zu unterstützen,<br />

also wie ein Entwickler explizites Wissen aufnehmen <strong>und</strong> nutzen kann um bessere <strong>Use</strong> Cases<br />

zu erstellen. Ein Entwickler kann nicht immer an alles denken <strong>und</strong> an dieser Stelle soll ein<br />

Tool ihn bei der Arbeit unterstützen. Dabei soll natürlich auch ein Lernprozess beim<br />

Entwickler ausgelöst werden. Der Entwickler soll seine Fähigkeiten <strong>und</strong> Kompetenzen<br />

erweitern. Um den Erfahrungskreislauf zu schließen, soll auch der Schritt der<br />

Externalisierung unterstützt werden, so dass die Erfahrungen des Entwicklers nicht verloren<br />

gehen <strong>und</strong> auch für andere archiviert werden.<br />

2.6 Wissensbasierte Systeme<br />

Abbildung 4: Erfahrungsweitergabe, vgl. [Buc05]<br />

Wissensbasierte Systeme sind intelligente Systeme. Sie bestehen aus einer Wissensbasis, in<br />

der Fakten <strong>und</strong> Regeln abgelegt sind, <strong>und</strong> einem Inferenzmechanismus, welche Anfragen <strong>und</strong><br />

Fakten mit Hilfe der Regeln versucht zu kombinieren, um zu einer Aussage zu kommen.<br />

Wissensbasierte Systeme können selbständig Probleme lösen <strong>und</strong> Entscheidungen treffen. Sie<br />

finden u. a. bei der automatischen Auswertung <strong>von</strong> Bildern oder in der Medizin <strong>zur</strong><br />

Unterstützung bei Diagnosen Anwendung.<br />

15


16<br />

2.7 Benutzer-Unterstützungssysteme<br />

2. Gr<strong>und</strong>lagen<br />

Benutzer-Unterstützungssysteme sollen den Benutzer im Umgang mit einem Programm<br />

unterstützen. Balzer unterscheidet dabei in [Bal01] vier Gruppen <strong>von</strong> Systemen:<br />

• Hilfesysteme, die den Benutzer bei Problemen helfen<br />

• Tutorsysteme, die den Benutzer interaktiv in ein System einarbeiten<br />

• Beratungssysteme, die den Benutzer bei der Lösungsfindung mit Ratschlägen<br />

unterstützen <strong>und</strong><br />

• Assistenzsysteme, die schwerfällige Teilaufgaben selbst übernehmen.<br />

Bauer <strong>und</strong> Schwab haben in [BS88] Hilfesysteme klassifiziert. So kann eine Hilfe statisch<br />

bzw. dynamisch sein. Dynamische Hilfe berücksichtigt den aktuellen Kontext, statische nicht.<br />

Hilfesysteme können uniforme oder individuelle Hilfe geben. Uniforme Hilfssysteme geben<br />

für jeden Benutzer dieselbe Hilfe, wo hingegen bei einer individuellen Hilfe der Kenntnis-<br />

<strong>und</strong> Erfahrungsstand des Benutzers im Umgang mit dem Programm berücksichtigt werden.<br />

Schließlich kann eine Hilfe passiv oder aktiv erfolgen. Passive Hilfe muss vom Benutzer<br />

explizit angefordert werden. Dies kann er aber nur tun, wenn er selbst ein Problem erkannt hat<br />

bzw. Hilfe benötigt. Das hat zu Folge, dass nur etwa 40 Prozent des Funktionsumfangs eines<br />

Systems tatsächlich genutzt wird [FLS85]. Ein aktives Hilfesystem erkennt selbständig<br />

Probleme <strong>und</strong> gibt automatisch Hilfestellungen. Erkennt das System eine Arbeitserleichterung<br />

für den Benutzer, so schlägt das System dem Benutzer die Erleichterung vor. Diese<br />

Klassifizierung kann leicht auf Tutor-, Beratungs- <strong>und</strong> Assistenzsysteme angewandt werden.<br />

2.8 Kritik<br />

Kritik ist eine prüfende Beurteilung, die durch begründete Wertschätzungen untermauert<br />

wird. Man unterscheidet zwischen positiver Kritik, also ein Lob, <strong>und</strong> negativer Kritik, ein<br />

Tadel. Kritik kann konstruktiv sein, wenn eine Hinterfragung mit Änderungs- bzw.<br />

Verbesserungsvorschlägen stattfindet oder destruktiv, wenn sie weder begründet noch zu<br />

einer Verbesserung beisteuert. Eine destruktive Kritik ist oft abwertend <strong>und</strong> beleidigend<br />

gemeint, wo hingegen eine konstruktive Kritik <strong>zur</strong> Verbesserung beitragen soll, jedoch als<br />

negativ bzw. destruktiv verstanden werden kann. Eine Kritik dient der Erkennung <strong>von</strong><br />

Schwächen <strong>und</strong> soll sie minimieren bzw. beseitigen. Schwächen könnten beispielsweise die<br />

Missachtung <strong>von</strong> Standards <strong>und</strong> Normen sein oder der Verstoß gegen gesetzliche<br />

Bestimmungen oder Naturgesetzen. Eine Kritik kann auch durch eine Erfahrung begründet<br />

werden, wenn zum Beispiel eine aktuelle Konfiguration nach gemachten Erfahrungen zu<br />

Problemen führt. Idealerweise wird eine Kritik auch geäußert, wenn eine bessere oder<br />

mögliche bessere Alternative bekannt ist. Kritiken sollten stets begründet werden, da sie sonst<br />

nicht verstanden <strong>und</strong> missachtet werden könnten.<br />

2.9 Domain-Oriented Design Environments (DODEs)<br />

Eine besondere Form <strong>von</strong> wissensbasierten Systemen stellen Domänenorientierte<br />

Entwurfsumgebungen dar. Sie sind wissensbasierte Kritik-, Hilfs-, Tutor-, Beratungs- <strong>und</strong><br />

Assistenzsystem zugleich <strong>und</strong> geben dynamische, individuelle <strong>und</strong> aktive Hilfe. Domain-


2.9 Domain-Oriented Design Environments (DODEs)<br />

Oriented Design Environments reduzieren den konzeptionellen Abstand zwischen der<br />

Domäne <strong>und</strong> das Computersystem <strong>und</strong> unterstützen den Designer, der sich nicht mit<br />

verschiedenen Tools <strong>zur</strong> Lösung eines Problems beschäftigen muss, sondern sich voll <strong>und</strong><br />

ganz auf seine Domäne <strong>und</strong> das Problem selbst konzentrieren <strong>und</strong> eine optimale Lösung<br />

finden kann. Seine Arbeit wird mit zum Zeitpunkt relevanten Informationen an geeigneten<br />

Stellen unterstützt. Das System kritisiert die Arbeit des Entwicklers durch Hinweise bzw.<br />

Fehlermeldungen <strong>und</strong> steuert <strong>zur</strong> Findung einer optimalen Lösung bei, indem es alternative<br />

Lösungen vorschlägt. Eventuelle Fehler, die u. a. durch Wissenslücken, Unachtsamkeit oder<br />

Neuerungen entstehen, können so frühzeitig beseitigt werden. Die Kritik kann auf Wunsch<br />

des Domaindesigners angefordert werden oder durch das System automatisch nachdem ein<br />

mögliches Problem erkannt wurde. Die Schwierigkeit besteht darin, dass im ersten Fall eine<br />

Kritik zu spät oder sogar gar nicht angezeigt wird, <strong>und</strong> im zweiten Fall, dass sich<br />

überhebliche <strong>und</strong> vermeintliche Fehlermeldungen störend auswirken könnten.<br />

Ein Beispiel für DODEs ist Framer [LF90], ein Designer für Dialogfenster. Ein GUI-Designer<br />

soll sich auf seine Aufgabe konzentrieren, nämlich Benutzeroberflächen zu entwerfen <strong>und</strong><br />

muss sich nicht damit auseinandersetzen, wie beispielsweise ein Menu in Quellcode<br />

programmiert werden muss. Dazu werden zum einen fertige Bauteile <strong>zur</strong> Verfügung gestellt,<br />

zum anderem wird der Entwurf wissensbasiert unterstützt, indem das Programm Elemente<br />

vorschlägt <strong>und</strong> Kritiken äußert, wobei natürlich der Kontext berücksichtigt wird.<br />

Ein weiteres Beispiel ist ein Küchenplaner wie JANUS [FMM89], der neben<br />

Allgemeinwissen auch Sicherheitsstandards <strong>und</strong> Ergonomität berücksichtigt. Wenn zum<br />

Beispiel ein Küchendesigner den Kühlschrank neben den Ofen stellt oder die Laufweite<br />

zwischen Kühlschrank, Herd <strong>und</strong> Waschbecken zu groß wählt, wird der Planer darauf<br />

aufmerksam gemacht <strong>und</strong> das System schlägt Verbesserungen vor. JANUS hilft durch Fragen<br />

bei der Erhebung der Anforderungen <strong>und</strong> vergleicht diese mit dem aktuellen Entwurfsstand.<br />

Domänenorientierte Entwurfsumgebungen stellen eine Erweiterung <strong>von</strong> wissensbasierten<br />

Systemen dar. Fischer betont in [Fis94], dass der Computer nie den Menschen ersetzen kann,<br />

da der Mensch gerne Dinge selbst macht <strong>und</strong> vor allem lieber selbst die Entscheidungen trifft.<br />

Daher sind Domänenorientierte Entwurfsumgebungen Systeme, die den Menschen nicht<br />

ersetzen, sondern in seiner Arbeit als Designer unterstützen, in dem sie den Benutzer mit<br />

kontextsensitiver Hilfe dient, als Tutor in die Arbeit mit dem System <strong>zur</strong> Seite steht <strong>und</strong><br />

fehlende Kenntnisse vermittelt, als Berater Kritik <strong>und</strong> Ratschläge äußert <strong>und</strong> als Assistent<br />

Aufgaben übernimmt, die er ungern macht (wie Programme in Assembler zu verfassen).<br />

Während wissensbasierte Systeme <strong>von</strong> Programmierern erweitert werden, soll in<br />

Domänenorientierten Entwurfsumgebungen der Designer selbst neues Wissen einfügen <strong>und</strong><br />

anderen zu Verfügung stellen. Ein wesentlicher Unterschied ist der unterschiedliche<br />

Lösungsansatz. Während in wissensbasierten Systemen ein Top-Down-Entwurf verfolgt wird,<br />

verfolgt man bei Domänenorientierten Entwurfsumgebungen einen Bottom-Up-Entwurf, ein<br />

so genannter „Design by Composition“. Dabei werden fertige Entwürfe, die aus einer<br />

ähnlichen Spezifikation hervorgingen den aktuellen Bedürfnissen angepasst. Designer haben<br />

schon Erfahrungen mit alten Entwürfen gesammelt <strong>und</strong> verwenden lieber diese noch mal als<br />

die Entscheidungen eines wissensbasierten Systems zu übernehmen.<br />

Fischer schlägt in [Fis94] eine domainunabhängige Architektur vor, die aus folgenden<br />

Komponenten bestehen:<br />

17


18<br />

2. Gr<strong>und</strong>lagen<br />

• Konstruktionsumgebung, in der die Artefakte entwickelt <strong>und</strong> entworfen werden,<br />

• Argumentationssystem, in der Streitpunkte angesprochen werden, Antworten geliefert<br />

werden <strong>und</strong> die Argumentation stattfindet<br />

• Katalog, das fertige Vorlagen <strong>zur</strong> Widerverwendung anbietet<br />

• Spezifikationskomponente, in der die Anforderungen des K<strong>und</strong>en abgelegt sind<br />

• Simulationskomponente, die den Designer ermöglicht, verschiedene Varianten zu<br />

testen <strong>und</strong> zu simulieren<br />

Abbildung 5: Domainunabhängige Architektur, vgl. [Fis94]<br />

Ein Katalog Explorer soll Benutzern die Suche im Katalog vereinfachen. Dazu müssen<br />

verschiedene Mechanismen angeboten werden, die einfache Anfragen, zum Beispiel durch<br />

vorbereitete Datenbankanfragen, ermöglichen. Ein Argumentationserläuteter soll Kritiken<br />

begründen <strong>und</strong> Verbesserungsvorschläge erläutern <strong>und</strong> durch Beispiele aus dem Katalog<br />

untermauern. Dies ist besonders wichtig, da ein Designer in der Regel keine unerläuterte<br />

Kritik vertraut. Oft gibt es keine klare Antwort, so müssen zum Beispiel durch eine<br />

Auflistung <strong>von</strong> Pro <strong>und</strong> Contra <strong>zur</strong> Entscheidungsfindung geholfen werden. Der<br />

Konstruktionsanalyser <strong>und</strong> Spezifikationsüberprüfer ist das Kritiksystem, das laufend die<br />

aktuelle Arbeit des Designers untersucht <strong>und</strong> kritisiert <strong>und</strong> dabei sicherstellt, dass der<br />

Benutzer seine Arbeit nicht nur richtig, sondern auch gut macht. Dabei soll er den Zugriff auf<br />

die Argumentations- bzw. Spezifikationskomponente bereitstellen.<br />

Fischers Arbeit wird jedoch u. a. <strong>von</strong> Ning [Nin94] kritisiert. So sei seine Arbeit nichts<br />

Neues. Fischer fordere lediglich die Entwicklung <strong>von</strong> Domänenorientierten<br />

Entwurfsumgebungen, sage jedoch nur wenig darüber aus, wie diese zu konstruieren sind.<br />

Bisher seien DODE nur für generische Domänen auf niedrigen Level entwickelt wurden.<br />

Ning vermutet, dass es noch nicht mal Sinn mache, DODE auf kompliziertere Domäne<br />

anzuwenden, da sie teuer seien <strong>und</strong> nicht zum Erfolg führten.<br />

Sutcliffe meint in [Sut94], dass noch einiges an Arbeit zu leisten sei. Fischers Arbeit hätte<br />

viele offene Fragen unbeantwortet gelassen. Eine wichtige Frage ist, ob ein in einer<br />

Domainorientierten Umgebung entwickeltes Artefakt wirklich besser ist <strong>und</strong> ob das Ergebnis<br />

zuverlässig funktioniert <strong>und</strong> wartbar ist. Außerdem vermutet Sutcliffe, dass es keine generelle<br />

Architektur gäbe, sondern dass DODE für jede Domäne angepasst oder neu gebaut werden<br />

müsse.


2.10 SER Prozessmodell<br />

Trotz der Warnung, dass eine Domänorientierte Entwurfsumgebung schwer zu realisieren sei<br />

<strong>und</strong> eventuell sogar nicht zum Erfolg führe, soll in dieser Arbeit eine solche Umgebung<br />

entworfen <strong>und</strong> umgesetzt werden, um die vielen Gesichtspunke, einer solchen<br />

Entwurfsumgebung zu demonstrieren.<br />

2.10 SER Prozessmodell<br />

Das SER Prozessmodell <strong>von</strong> Gerhard Fischer ([Fis94]) beschreibt die soziale <strong>und</strong> technische<br />

Interaktion bei der Nutzung <strong>von</strong> Domänenorientierten Entwurfsumgebungen. Im ersten<br />

Schritt muss eine Saat ausgelegt werden (Seeding). In diesen Schritt tauschen Entwickler <strong>und</strong><br />

Domaindesigner Ideen <strong>und</strong> Erfahrungen aus <strong>und</strong> halten sie in der Experience Base fest. Es<br />

folgt die Phase der „Evolutionary Growth“, in der die Samen bildlich betrachtet keimen <strong>und</strong><br />

anfangen zu wachsen. Die Erfahrungen werden genutzt, erweisen sich als nützlich oder<br />

weniger hilfreich <strong>und</strong> es werden durch die Nutzung der Erfahrungen neue Erfahrungen<br />

gemacht <strong>und</strong> gesammelt. Diese neuen Erfahrungen müssen nun in der Reflexionsphase<br />

aufbereitet werden, mit den bestehenden Erfahrungen in der Experience Base kombiniert<br />

werden <strong>und</strong> dort sortiert wieder abgelegt werden. Diese Phase wird bildlich betrachtet als neu<br />

aussähen (Reseeding) bezeichnet. Es folgt die weitere Nutzung dieser erweiterten Erfahrungen<br />

in der Experience Base, wo erneut weitere Erfahrungen gemacht werden. Ein so genannter<br />

Umgebungsentwickler ist für das Verwalten der Erfahrungen zuständig. Er muss <strong>von</strong> Zeit zu<br />

Zeit die neuen Erfahrungen aufbereiten <strong>und</strong> neu organisieren.<br />

Abbildung 6: SER Prozessmodell, [Fis94]<br />

19


20<br />

3. Anforderungen<br />

Anforderungen sind Aussagen über die zu erfüllenden Eigenschaften <strong>und</strong> zu erbringende<br />

Leistung eines Produktes. Sie definieren die Erwartungen <strong>und</strong> Wünsche eines K<strong>und</strong>en an das<br />

zu entwickelnde System. Im Folgenden sollen diese Erwartungen beschrieben werden.<br />

3.1 Zielbestimmung<br />

Es ist ein Tool zu entwickeln, mit dem ein Benutzer qualitativ hochwertige <strong>Use</strong> Cases<br />

erstellen kann. Dazu soll das Tool den Benutzer durch Hinweise <strong>und</strong> Warnungen unterstützen.<br />

Erfahrungen sollen leicht zugänglich gemacht werden, dürfen den Benutzer bei seiner Arbeit<br />

jedoch nicht stören oder behindern. Es sollten stets nur relevante Erfahrungen angezeigt<br />

werden, die nach ihrer Wichtigkeit sortiert werden. Die Erfahrungen müssen auf den<br />

individuellen Benutzer anpassbar sein <strong>und</strong> müssen erweitert werden können. Die<br />

Dateneingabe soll über ein anpassbares Template erfolgen.<br />

Das Tool soll zunächst aus Zeitgründen als Standalone-Applikation konzipiert werden, so<br />

dass der Benutzer auch unterwegs ohne Netzzugang arbeiten kann. In einer späteren<br />

Entwicklung könnte das Tool um eine Server-Komponente erweitert werden, die eine<br />

Projektverwaltung <strong>und</strong> Versionisierung übernimmt, so dass mehrere Benutzer gleichzeitig an<br />

einem Projekt arbeiten können. Es ist daher darauf zu achten, dass diese Erweiterung ohne<br />

großen Aufwand erfolgen kann. Der Benutzer soll bestehende Erfahrungen in seiner<br />

Erfahrungsbasis erweitern können <strong>und</strong> neue hinzufügen können. Der Austausch mit anderen<br />

Benutzern soll zunächst manuell erfolgen, könnte aber in einer späteren Entwicklung<br />

ebenfalls <strong>von</strong> einer Serverkomponente übernommen werden.<br />

Die grafische Benutzeroberfläche ist auf einen deutschsprachigen Personenkreis auszulegen.<br />

Es sollte jedoch bei der Planung darauf geachtet werden, dass die Applikation <strong>und</strong> der<br />

Erfahrungsschatz leicht um weitere Sprachen erweitert werden kann. Dies kann z. B. dadurch<br />

erreicht werden, dass eine externe Sprachdatei angelegt wird. Des Weiteren soll ein <strong>Use</strong> Case<br />

Diagramm als grafische Übersicht automatisch generiert werden (siehe Kapitel 4.8).<br />

3.2 Systemvorrausetzungen<br />

Das Tool soll Plattform unabhängig sein. Auf den Rechnern wird lediglich Java 1.5<br />

vorausgesetzt. Alle benötigen Komponenten müssen mitgelieft werden.<br />

3.3 Benutzertypen<br />

Das Tool wird <strong>von</strong> Benutzern mit unterschiedlichen Kenntnissen verwendet. Daher soll der<br />

Benutzer durch aktive Hilfe geführt werden. Den Benutzern soll ein gewohntes tabellarisches<br />

<strong>Use</strong> Case Formular angeboten werden. Der Umstieg <strong>von</strong> bisher verwendeten Standard-<br />

Textverarbeitungsprogrammen soll leicht fallen. Der Benutzer soll Projekte <strong>und</strong> <strong>Use</strong> Cases<br />

anlegen, bearbeiten <strong>und</strong> löschen können, sowie bestimmte Erfahrungen deaktivieren können,


3.4 Funktionale Anforderungen<br />

so dass sie in seiner Umgebung nicht mehr angezeigt werden. Der Benutzer muss auch die<br />

Möglichkeit haben, seine Erfahrungen in das System einzugeben.<br />

3.4 Funktionale Anforderungen<br />

Für die Anforderungsanalyse dieser Masterarbeit wird das <strong>Use</strong> Case Template <strong>von</strong> Cockburn<br />

gekürzt verwendet <strong>und</strong> in einer einzelnen Tabelle komprimiert (siehe Anhang A). Auf eine<br />

längere Erläuterung wird verzichtet, da die Titel der <strong>Use</strong> Cases klar sein sollten. Technische<br />

Variationen sind keine bekannt <strong>und</strong> daher wird auf die explizite Auflistung verzichtet. Ebenso<br />

soll auf eine Auflistung der Super- bzw. Sub <strong>Use</strong> Cases verzichtet werden, da diese<br />

Informationen red<strong>und</strong>ant sind <strong>und</strong> lediglich der Übersicht dient. Da die Akteure<br />

ausschließlich mit dem System kommunizieren sollte der direkte Kommunikationsweg<br />

ebenfalls klar sein.<br />

Im Szenario wird der Akteur durch eine gesonderte Spalte hervorgehoben. So wird zum einen<br />

erzwungen, stets einen Akteur anzugeben, wodurch klar gestellt werden kann, wer etwas tut,<br />

zum anderen legt es den Satzaufbau fest. Da der Akteur am Anfang des Satzes steht, ist es<br />

wesentlich schwieriger einen Passivsatz zu konstruieren.<br />

Der Scope sollte wie in Kapitel 2.1.2 beschrieben so gewählt werden, dass der Hauptakteur<br />

gerade noch außerhalb dieses Teilsystems steht. Es wurde hier als Scope die Komponenten<br />

des DODE Systems gewählt. Diese Unterteilung stellt sich als zweckmäßig heraus, da der<br />

Benutzer mit diesen Komponenten kommuniziert.<br />

Die Projektverwaltung ist für die Verwaltung des Projekts <strong>und</strong> die dazugehörigen <strong>Use</strong> Cases<br />

zuständig. Der Benutzer kann über ihn neue Projekte anlegen, sie speichern <strong>und</strong> auch wieder<br />

laden. Es können <strong>Use</strong> Cases hinzugefügt werden <strong>und</strong> falls ein <strong>Use</strong> Case nicht mehr benötigt<br />

wird, soll dieser auch wieder gelöscht werden können. Da <strong>Use</strong> Cases in der Regel weiter<br />

verarbeitet werden, sollten sie auch in andere Dateiformate exportiert werden können. So soll<br />

es dem Benutzer möglicht werden, erstellte <strong>Use</strong> Cases in seine Projektplanung zu<br />

übernehmen. Des Weiteren soll auch ein Kopieren der <strong>Use</strong> Cases in die Zwischenablage<br />

möglich sein, so dass der Benutzer die Daten direkt übernehmen kann.<br />

21


22<br />

Abbildung 7: <strong>Use</strong> Case Diagramm: Projektverwaltung<br />

3. Anforderungen<br />

Die Konstruktionskomponente ist für die eigentliche Bearbeitung der <strong>Use</strong> Cases zuständig.<br />

Der Benutzer kann die angelegten <strong>Use</strong> Cases bearbeiten. Dazu gehört die Eingabe <strong>von</strong><br />

Texten, aber auch das Einfügen neuer Schritte, die Verlinkung <strong>von</strong> <strong>Use</strong> Cases, das Erweitern<br />

<strong>von</strong> Schritten, uvm. Die Anzeigemöglichkeit der letzten Änderungen könnte sich als sehr<br />

nützlich erweisen.<br />

Abbildung 8: <strong>Use</strong> Case Diagramm: Konstruktion<br />

Die Argumentationskomponente stellt neben der <strong>Erstellung</strong> der <strong>Use</strong> Cases eine Kernfunktion<br />

des Editors dar. Dabei stellt ein Assistent laufend den Kontext fest <strong>und</strong> zeigt entsprechend<br />

relevante Hilfestellungen an. Die aktuelle Planung wird ebenfalls laufend analysiert <strong>und</strong> sollte<br />

der Assistent mögliche Fehler finden, zeigt er diese dem Benutzer an geeignete Stellen an.


3.4 Funktionale Anforderungen<br />

Der Benutzer kann diese Erfahrungen dann lesen. Sollte er mehr Informationen benötigen,<br />

kann er diese anfragen. Er kann eine bestehende Erfahrung erweitern, wenn er bspw.<br />

Erfahrung bei der Nutzung der Erfahrung gemacht, oder sie kommentieren, wenn er anderer<br />

Ansicht ist oder er Ausnahmen kennt. Das Anlegen neuer Erfahrungen <strong>und</strong> das Ignorieren der<br />

Erfahrungen, die ihm nicht weiter helfen, sind ebenfalls möglich.<br />

Abbildung 9: <strong>Use</strong> Case Diagramm: Argumentation<br />

In der Spezifikationskomponente erfolgt die Bearbeitung des Templates. Dazu gehört das<br />

hinzufügen neuer Attribute, aber auch das Löschen nicht benötigter Attribute.<br />

Bestandsattribute sollen nur deaktiviert bzw. wieder aktiviert werden können.<br />

Abbildung 10: <strong>Use</strong> Case Diagramm: Spezifikation<br />

23


24<br />

3. Anforderungen<br />

Die Wiederverwendung <strong>von</strong> fertigen <strong>Use</strong> Cases aus früheren Projekten soll nicht unterstützt<br />

werden. Zwar stellt dieses eine nützliche Arbeitserleichterung dar, es wird jedoch bezweifelt,<br />

gute <strong>Use</strong> Cases durch diese Art zu schreiben. Übernommene <strong>Use</strong> Cases müssten kontrolliert<br />

<strong>und</strong> angepasst werden, der Benutzer wird diese Kontrolle vermutlich unterlassen, da er seine<br />

Arbeit in der Regel vertraut. So können sich Fehler einschleichen <strong>und</strong> eine gute Planung ist<br />

nicht mehr gegeben.<br />

3.5 Qualitätsanforderungen<br />

Qualitätsanforderungen sind ein nicht zu vernachlässigender Bestandteil <strong>von</strong> Anforderungen.<br />

Es muss definiert werden, welche Qualitätsaspekte berücksichtigt werden müssen, welche<br />

besonders wichtig sind <strong>und</strong> wie sie erreicht werden können. Im Folgenden soll näher auf diese<br />

Anforderungen eingegangen werden.<br />

Merkmal sehr gut gut normal nicht relevant<br />

Benutzbarkeit<br />

Bedienbarkeit x<br />

Erlernbarkeit x<br />

Verständlichkeit x<br />

Funktionalität<br />

Effizienz x<br />

Fehlertoleranz x<br />

Korrektheit x<br />

Sicherheit x<br />

Zuverlässigkeit x<br />

Übertragbarkeit<br />

Installierbarkeit x<br />

Portabilität x<br />

Wartbarkeit<br />

Änderbarkeit x<br />

Erweiterbarkeit x<br />

Modifizierbarkeit x<br />

Wiederverwendbarkeit x<br />

3.5.1 Benutzbarkeit (Usability)<br />

Die Benutzbarkeit (engl. Usability), stellt die größte <strong>und</strong> wichtigste Herausforderung dar. Das<br />

Tool sollte unbedingt selbsterklärend sein. Ein neuer Benutzer sollte das Tool auf Anhieb<br />

ohne große Einführung benutzen können. Es ist daher sinnvoll, das Tool auf bekannte<br />

Anwendungen auszulegen, so dass die Umgebung nicht fremd erscheint. Es wird<br />

angenommen, dass die Softwareingenieure die das Tool nutzen sollen, auch mit Eclipse<br />

[Ecl06] arbeiten <strong>und</strong> Kenntnisse in Word [Msw02] besitzen. Ferner kann die Selbsterklärung


3.5 Qualitätsanforderungen<br />

dadurch erreicht werden, dass das <strong>Use</strong> Case Template eine Formularstruktur aufweist. Die<br />

Verwendung des Tools muss für den Benutzer einen Vorteil bringen. Ein Vorteil ist natürlich<br />

die Erfahrung, aber die Verwendung des Tools darf nicht zusätzliche Arbeit hervorrufen.<br />

Vielmehr muss der Benutzer mit dem Tool effektiv arbeiten können <strong>und</strong> Zeit einsparen. Ein<br />

Tool, das zusätzlichen Aufwand verursacht oder <strong>zur</strong> Lösung des Problems mehr Zeit benötigt,<br />

wird ungern oder gar nicht eingesetzt.<br />

Hinweise <strong>und</strong> Tipps müssen leicht zugänglich sein, damit sie auch tatsächlich verwendet<br />

werden. Allerdings dürfen sie auch nicht die Arbeit stören. Dies kann zum einem dadurch<br />

erreicht werden, dass auch tatsächlich relevante Informationen angezeigt werden, zum<br />

anderen dadurch, dass die Hilfe deaktiviert werden kann, wenn sie nicht benötigt wird oder<br />

stört. Die Anzeige <strong>von</strong> Erfahrung sollte die Arbeit nicht behindern, daher ist <strong>von</strong> Fenstern die<br />

das Formular überdecken abzusehen. Vorschläge <strong>und</strong> Warnungen müssen nachvollziehbar<br />

sein <strong>und</strong> auf Wunsch näher erklärt werden. Des Weiteren sollte der Benutzer nach benötigten<br />

Funktionen nicht lange suchen müssen, sondern sie intuitiv finden können. Die Usability soll<br />

dadurch gewährleistet werden, dass mehrere Benutzer das Tool probeweise verwenden sollen,<br />

um <strong>Use</strong> Cases zu erstellen. Dabei soll auch nach der subjektiven Empfindung gefragt werden,<br />

ob man mit dem Tool tatsächlich weniger Zeit <strong>zur</strong> <strong>Erstellung</strong> der <strong>Use</strong> Cases benötigt als mit<br />

Word. Interessant wäre auch, ob der Eindruck entsteht, bessere <strong>Use</strong> Cases erstellt zu haben.<br />

Das Ergebnis dazu ist im Anhang D zu finden.<br />

3.5.2 Funktionalität<br />

Das Tool darf nicht unnötig Ressourcen verbrauchen. Daher ist es sinnvoll darauf zu achten,<br />

dass beispielsweise Berechnungen <strong>und</strong> Überprüfungen nur dann ausgeführt werden, wenn<br />

sich eine Änderung ergeben hat <strong>und</strong> nach Möglichkeit soll die Berechnung nur für die<br />

Änderung <strong>und</strong> seine Folgen erfolgen. Antwortzeiten können durch optimierten Code <strong>und</strong><br />

Vorhalten der Daten im Arbeitsspeicher möglichst kurz gehalten werden, da Plattenzugriffe<br />

vermieden werden. Da Dateianhänge nur unnötig Arbeitsspeicher belegen, sollten diese stets<br />

auf der Festplatte ausgelagert bleiben.<br />

Zwar sollen abgespeicherte Daten nicht manuell geändert werden, dennoch wird dieses <strong>von</strong><br />

erfahrenen Benutzern immer wieder gewünscht. Es sollte daher darauf geachtet werden, dass<br />

die Dateien fehlerhaft sein könnten. Die Laderoutine sollte nach Möglichkeit Fehler<br />

übergehen oder selbst korrigieren können.<br />

Eine Verschlüsselung der Daten ist nicht geplant. Der Benutzer kann bei Bedarf geheime<br />

Geschäftsdaten durch externe Programme wie GnuPGP (siehe [Gnu06]) vor ungewünschten<br />

Zugriffen schützen.<br />

Benutzer sollten sich auf das System verlassen können. Operationen sollten korrekt <strong>und</strong><br />

vollständig ausgeführt werden, da das System sonst wenig oder keine Akzeptanz erfahren<br />

wird. Das System sollte stets auf Konsistenz der Daten achten, insbesondere dürfen keine<br />

fehlerhaften Referenzen oder unschlüssige Daten vorkommen. Gespeicherte Projekte müssen<br />

korrekt <strong>und</strong> vollständig wieder geladen werden können, Informationen dürfen nicht verloren<br />

gehen. Die Zuverlässigkeit kann unter anderem durch Schreiben <strong>von</strong> Tests <strong>und</strong> die<br />

gr<strong>und</strong>sätzliche Instanzierung <strong>von</strong> Variablen <strong>zur</strong> Vermeidung <strong>von</strong> Nullpointern erhöht werden.<br />

25


26<br />

3.5.3 Übertragbarkeit<br />

3. Anforderungen<br />

Es muss möglich sein, dass Tool auf unterschiedlichen Systemen einzusetzen. Da das System<br />

in Java geschrieben wird, dürfte die Plattformunabhängigkeit kein Problem darstellen. Die<br />

Hardware spielt auf Gr<strong>und</strong> der Java Runtime Environment eine untergeordnete Rolle. Sofern<br />

der Rechner über ausreichend Festplattenplatz, Arbeitsspeicher <strong>und</strong> Rechenleistung verfügt,<br />

dürfen keine Probleme auftreten. Die Portabilität soll durch ein Testen auf unterschiedlichen<br />

Windows <strong>und</strong> Linux Rechnern erfolgen. Das Tool muss sich ohne manuelle Konfiguration<br />

selbständig installieren können.<br />

3.5.4 Wartbarkeit<br />

Da eine Software oft erweitert oder abgeändert wird, ist es ebenfalls sehr wichtig, dass das<br />

System leicht wartbar ist. Dieses kann man zum einen durch einfachen, einheitlichen,<br />

dokumentierten <strong>und</strong> testbaren Code erreichen, zum anderen durch einen modulartigen<br />

Aufbau. Durch einen modularen Aufbau können Teile komplett ausgetauscht werden, ohne<br />

Änderungen in anderen Komponenten durchführen zu müssen. Die Einfachheit des Codes soll<br />

u. a. durch ein Eclipse Plugin [Met06] garantiert werden, das die zyklische Komplexität nach<br />

McCabe berechnet. Nicht verwendete Quellcode-Passagen sollen nach Möglichkeit noch vor<br />

Auslieferung entfernt werden.<br />

Besonders wichtig ist die Erweiterbarkeit des Erfahrungsschatzes. So muss der Benutzer<br />

laufend <strong>und</strong> problemlos neue Erfahrungen einfügen <strong>und</strong> bestehende Erfahrung ergänzen<br />

können.<br />

Das <strong>Use</strong> Case Template muss an die Bedürfnisse angepasst werden können. Es ist<br />

erforderlich, dass das Template geändert werden kann, also dass nicht benötigte<br />

Formularelemente deaktiviert <strong>und</strong> zusätzlich benötigte Formularelemente hinzugefügt werden<br />

können. Dies soll über die grafische Oberfläche erfolgen.


4. <strong>Konzept</strong><br />

4.1 Klassifizierung <strong>von</strong> Erfahrung<br />

Erfahrungen in Bezug auf <strong>Use</strong> Case <strong>Erstellung</strong>en sind Hilfestellungen, die den Benutzer dabei<br />

unterstützen sollen, gute <strong>Use</strong> Cases zu erstellen. Diese Erfahrungen wurden <strong>von</strong> Personen<br />

gesammelt <strong>und</strong> aufgeschrieben (Externalisierung, s. Kapitel 2.5) <strong>und</strong> stellen die<br />

Erfahrungsbasis des Tools dar. Dieses explizite Wissen kann man unterteilen in Hilfe <strong>und</strong><br />

Kritik.<br />

Hilfe sind Hinweise <strong>und</strong> Tipps, die den Benutzer vor seiner Eingabe sagen, was an einer<br />

aktuellen Stelle eingegeben werden muss <strong>und</strong> was dabei zu beachten ist. Im Falle des<br />

Szenarios könnte der Hinweis lauten, dass ein Szenario aus drei bis neun Schritten bestehen<br />

sollte.<br />

Kritiken können erst geäußert werden, nachdem eine Eingabe erfolgt ist. Das Kritiksystem<br />

gibt Warnungen, wenn etwas nicht optimal ist, z. B. wenn ein Szenario weniger als drei<br />

Schritte hat, <strong>und</strong> zeigt einen Fehler an, wenn ein gravierender Mangel vorliegt. Ein Fehler<br />

könnte beispielsweise ein Szenario ohne Schritte sein, ein <strong>Use</strong> Case ohne Titel oder eine<br />

Verlinkung auf ein nicht existierenden <strong>Use</strong> Case. Diese Kritiken müssen auch verdeutlichen,<br />

was weniger gut ist <strong>und</strong> wie es erfahrungsgemäß besser wäre. Kritiken werden weiter<br />

unterteilt, da eine Warnung nicht ein Fehler darstellen muss.<br />

Erfahrung<br />

Hilfe Kritik<br />

Abbildung 11: Klassifizierung <strong>von</strong> Erfahrung<br />

4.2 Bearbeitung eines <strong>Use</strong> Cases<br />

Warnung Fehler<br />

Die Bearbeitung eines <strong>Use</strong> Cases erfolgt in einen Kreislauf <strong>und</strong> einer ständigen Interaktion<br />

mit dem System. Sobald der Benutzer ein Attribut auswählt, ermittelt das Tool den Kontext<br />

<strong>und</strong> sucht daraufhin die relevanten Erfahrungen aus seiner Erfahrungsbasis heraus.<br />

Im Falle einer Hilfe kann sie allgemein für ein Projekt gelten, für die Bearbeitung eines <strong>Use</strong><br />

Cases oder für die Bearbeitung eines Attributes. Wird also ein Projekt angelegt, sind nur<br />

27


28<br />

4. <strong>Konzept</strong><br />

Erfahrungen relevant, die allgemein bei einen Projekt gelten. Sobald der Benutzer einen <strong>Use</strong><br />

Case öffnet, sind die Hilfen interessant, die bei der Bearbeitung eines <strong>Use</strong> Case relevant sind.<br />

Wenn der Benutzer ein Attribut bearbeitet, möchte er Hilfe zu diesem Attribut haben. Im<br />

Falle einer Hilfe ist der Kontext also die Ebene (Projekt, <strong>Use</strong> Case, Attribut), auf der sich der<br />

Benutzer befindet.<br />

Diese ermittelten Erfahrungen sortiert das System nach der Relevanz <strong>und</strong> zeigt sie dem<br />

Benutzer an. Der Benutzer liest die Erfahrung(en) <strong>und</strong> macht daraufhin seine Eingabe. Wenn<br />

der Benutzer das nächste Attribut <strong>zur</strong> Bearbeitung auswählt, wird der neue Kontext ermittelt<br />

<strong>und</strong> so schließt sich der Kreislauf. Der Benutzer <strong>und</strong> das System interagieren laufend<br />

miteinander. Das System beliefert den Benutzer ständig mit aktuellen <strong>und</strong> relevanten<br />

Hilfestellungen <strong>und</strong> der Benutzer macht nach Aufnahme dieser Hilfe seine Eingabe.<br />

Abbildung 12: <strong>Use</strong> Case Bearbeitung<br />

Sollte das System etwas an der Arbeit des Benutzers zu kritisieren haben, z. B. weil er mehr<br />

als 9 Schritte in einen Szenario hat, so kann das System dem Benutzer auf diesem Wege auch<br />

warnen. Eine Kritik kann für das Projekt gelten, einen <strong>Use</strong> Case, einen <strong>Use</strong> Case Attribut oder<br />

einen Teil des Attributs, z. B. einen Schritt. Während bei einer Hilfe nur die Ebene zählt, zählt<br />

bei einer Kritik auch die Objekte selbst auf der jeweiligen Ebene. Eine Hilfe bezieht sich<br />

allgemein auf eine Objektgruppe, z. B. alle Attribute mit den Namen Szenario, da sie<br />

gleichermaßen für alle Fälle interessant sind. Eine Kritik bezieht sich auf ein einzelnes<br />

Objekt, das kritisiert wird, z. B. ein Szenario eines <strong>Use</strong> Cases. Die Kritik ist für ein Szenario<br />

in einen anderen <strong>Use</strong> Case nicht gültig <strong>und</strong> somit nicht relevant.<br />

Dieser Unterschied hat zu Folge, dass die Bestimmung der Relevanz einer Hilfe <strong>und</strong> der einer<br />

Kritik auf unterschiedliche Weise erfolgt. Wie dies genau geschieht, ist im Abschnitt 6 dieses<br />

Kapitels beschrieben.<br />

Eine Kritik sollte natürlich im Assistenten nur dann erscheinen, wenn der Benutzer das<br />

fehlerhafte Attribut ausgewählt hat bzw. bearbeitet, da es sonst nicht relevant ist. Der<br />

Benutzer kann dann durch Befolgen eines der vorgeschlagenen Lösungsmöglichkeiten den<br />

Fehler beheben.


4.3 Anzeigen <strong>von</strong> Erfahrung, Kritik, Hinweisen, Tipps<br />

4.3 Anzeigen <strong>von</strong> Erfahrung, Kritik, Hinweisen, Tipps<br />

Die Frage ist nun, wie Erfahrungen angezeigt werden können, ohne den Benutzer zu stören.<br />

Sie soll aber auch genutzt <strong>und</strong> nicht ignoriert werden. Es werden zunächst Verfahren aus<br />

bekannten Programmen untersucht <strong>und</strong> daraus eigene Lösungen entwickelt.<br />

4.3.1 Microsoft Word<br />

Microsoft Word [Msw02] hat einen Office-Assistenten, den man jederzeit einblenden <strong>und</strong><br />

wieder deaktivieren kann. Der Assistent beobachtet laufend die Schritte des Benutzers <strong>und</strong><br />

gibt Hinweise <strong>und</strong> Tipps. Der Assistent schlägt auch Arbeitserleichterungen vor. Ein<br />

unerfahrener Benutzer geht vielleicht noch mit den Cursortasten jedes Zeichen einzeln durch.<br />

Word erkennt dieses <strong>und</strong> schlägt vor, „STRG <strong>und</strong> die rechte oder linke Pfeiltaste“ zu drücken,<br />

„um sich Wort für Wort durch den Text zu bewegen“. Word gibt also aktiv Hilfe. Der<br />

Benutzer kann auch Hilfe anfordern. Dazu kann er direkt Fragen formulieren <strong>und</strong> der<br />

Assistent versucht die Schlagwörter zu extrahieren <strong>und</strong> mögliche Antworten zu geben. Gibt<br />

man zum Beispiel ein, dass man eine Tabelle erstellen möchte, stellt er mehrere<br />

Möglichkeiten <strong>zur</strong> Auswahl (siehe Abbildung 13a), in diesem Fall an erster Stelle die<br />

gewünschte Hilfe.<br />

Abbildung 13: Office-Assistent, (a) Tabelle erstellen, (b) Brief schreiben, (c) Umschlag erstellen<br />

Wenn der Benutzer anfängt einen Brief zu schreiben, erkennt Word dieses <strong>und</strong> der Assistent<br />

meldet sich mit Hilfe <strong>zur</strong> <strong>Erstellung</strong> eines Briefes (s. Abbildung 13b). Wählt der Benutzer<br />

29


30<br />

4. <strong>Konzept</strong><br />

„Hilfe <strong>zur</strong> <strong>Erstellung</strong> des Briefes anfordern“ aus, öffnet sich der Brief-Assistent, in dem man<br />

verschiedene Vorlagen auswählen <strong>und</strong> diverse Briefinformationen angeben kann. Der<br />

Assistent erstellt dann automatisch einen Briefrumpf mit allen eingegeben Informationen. Die<br />

Unterstützung geht sogar weiter, denn im nächsten Schritt fragt er den Benutzer, ob er einen<br />

passenden Briefumschlag oder Adressetiketten erstellen möchte (s. Abbildung 13c). Möchte<br />

der Benutzer einen Brief ohne Hilfe erstellen, kann er dieses auswählen oder diesen Tipp<br />

deaktivieren.<br />

Das Schöne an dem Assistent ist, dass er nicht im Wege ist <strong>und</strong> in gewisser Weise<br />

menschliche Züge annimmt. Durch die Darstellung mit Augen <strong>und</strong> der gelegentlichen<br />

Animation, aber auch weil man Fragen frei formulieren kann, wird der Eindruck erweckt,<br />

dass man mit einen menschlichen Assistenten kommuniziert <strong>und</strong> nicht mit dem Computer.<br />

Erfahrenen Benutzern, die nicht ständig „beobachtet“ werden wollen, mag der Assistent auf<br />

Dauer stören, da er vielleicht auch Tipps anzeigt, die man schon lange kennt oder gar nichts<br />

mit der aktuellen Arbeit zu tun hat. Vermutlich ist der Word-Assistent eher für Benutzer<br />

nützlich, die wenig Umgang mit Computer bzw. Word haben oder sich gerade in Word<br />

einarbeiten.<br />

4.3.2 Eclipse<br />

Eclipse [Ecl06] unterscheidet Fehler <strong>und</strong> Warnungen. Fehler werden mit rot, Warnungen, also<br />

mögliche Probleme, nicht verwendete Variablen, usw., mit gelb hervorgehoben.<br />

Warnmeldungen <strong>und</strong> Fehler werden wie in Abbildung 14 gekennzeichnet auf mehrere Weisen<br />

an den Benutzer weitergegeben. Zum einem kann man im Package Explorer (1) fehlerhafte<br />

Pakete ausfindig machen <strong>und</strong> durch die Baumstruktur <strong>zur</strong> Klasse <strong>und</strong> Methode springen. In<br />

den Tabs (2) werden Klassen, die Warnungen bzw. Fehler enthalten mit einem<br />

entsprechenden Icon versehen. Bei der Bearbeitung einer Klasse werden zum einen an der<br />

linken Seite (3) Fehler hervorgehoben, aber auch im Quelltext (4) selbst, wobei die Fehler<br />

bzw. Warnungen in der entsprechenden Farbe unterstrichen werden.<br />

Textverarbeitungsprogramme wie Word verwenden bei der Rechtschreibüberprüfung auch<br />

dieses Verfahren. Unbekannte Wörter werden mit rot unterstrichen, vermutete Fehler mit<br />

grün. Da eine Klasse in der Regel nicht auf eine Bildschirmseite passt, werden neben dem<br />

Scrollbalken (5) die Fehler <strong>und</strong> Warnungen der ganzen Klasse skaliert zum verfügbaren Platz<br />

angedeutet. Schließlich gibt es noch eine ProblemView (6), in der die Fehler <strong>und</strong> Warnungen<br />

des gesamten Projekts angezeigt werden <strong>und</strong> nach wählbaren Kriterien gefiltert bzw. sortiert<br />

werden können. Die Fehler <strong>und</strong> Warnungen werden durch Tooltipps näher erläutert <strong>und</strong> in<br />

einigen Fällen werden so genannte Quickfixes angeboten, zum Beispiel hier das Umändern in<br />

einer Methode ohne Rückgabewert oder das Einfügen eines Rückgabewertes.


4.3 Anzeigen <strong>von</strong> Erfahrung, Kritik, Hinweisen, Tipps<br />

Abbildung 14: Entwicklungsumgebung <strong>von</strong> Eclipse, [Ecl06]<br />

Ferner unterstützt Eclipse den Benutzer durch automatische Vervollständigung <strong>und</strong><br />

erleichtertes Navigieren durch das Projekt. Mühselige Aufgaben wie der Vergleich <strong>von</strong> zwei<br />

Klassen, die Extrahierung zu einem Interface <strong>und</strong> die Generierung der getter- <strong>und</strong> setter-<br />

Methoden können vom Programm ausgeführt werden. Auch die automatische Generierung<br />

<strong>von</strong> Schleifen-Rümpfe aus Vorlagen ist möglich.<br />

4.3.3 PopUp-Fehlerfenster<br />

Beim Programmieren in Eclipse wäre es sehr störend, wenn bei jedem Fehler sofort ein<br />

PopUp-Fenster aufgehen würde. Denn wenn man beispielsweise gerade eine Methode<br />

schreibt, hat man vielleicht den Rückgabewert noch nicht aufgeschrieben. Daher ist es<br />

sinnvoll, die Fehler nur durch Markierungen hervorzuheben, der Programmierer kann weiter<br />

arbeiten <strong>und</strong> den Fehler später beheben, wenn er soweit ist.<br />

Mit schwerwiegenden Fehlern sieht es jedoch anders aus. Kann eine Operation wie die<br />

Umbenennung einer Datei nicht ausgeführt werden, sollte der Benutzer darauf explizit<br />

aufmerksam gemacht werden. Da die Erwartung des Benutzers nicht erfüllt wird, wird er sich<br />

w<strong>und</strong>ern, warum nichts geschehen ist. Die Fehlermeldung sollte der Benutzer nicht übersehen<br />

können. Da macht es dann durchaus Sinn, ein PopUp-Fenster zu öffnen, dass die<br />

Arbeitsfläche überdeckt, so dass der Fehler nicht übersehen werden kann.<br />

31


32<br />

4.3.4 Tipp des Tages<br />

Abbildung 15: Fehlerfenster<br />

4. <strong>Konzept</strong><br />

Bei einigen Programmen wird beim Start ein Tipp angezeigt. Meist kann man sich auch<br />

weitere Tipps anzeigen lassen. Die Auswahl der Tipps erfolgt in zufälliger Reihenfolge <strong>und</strong><br />

berücksichtigt dabei nicht den Erfahrungsstand des Benutzers. Für einen neuen Benutzer<br />

können diese Tipps helfen, das Programm näher kennen zulernen <strong>und</strong> sich in unbekannte<br />

Funktionalitäten <strong>und</strong> so genannten Shortcuts einzuarbeiten. Benutzer die schon länger mit<br />

dem Programm arbeitet <strong>und</strong> denen die Tipps nicht weiterhelfen, da sie das Programm schon<br />

ausführlicher kennen, stören die Tipps vermutlich. Daher können sie in der Regel diese Tipps<br />

deaktivieren.<br />

4.3.5 Hilfe auf Anfrage<br />

Viele Programme bieten passive Hilfe über die Menubar an. Diese Hilfe erfolgt nur auf<br />

expliziten Wunsch des Benutzers. Dazu muss der Benutzer ein Problem selbst erkannt haben.<br />

In der Regel ist dies nur der Fall, wenn der Benutzer nicht weiß, wo er eine Funktion findet<br />

oder nicht weiß, wie er eine Funktion ausführt. Eine Antwort muss er durch Suchen im<br />

Inhaltsverzeichnis bzw. im Index selbst finden. Oft wird eine Suche angeboten, die jedoch nur<br />

Schlagwörter durchsucht, aber keinen Volltext. Für die Anzeige <strong>von</strong> Erfahrung ist diese Art<br />

<strong>von</strong> Hilfe ungeeignet, da sie passiv erfolgt. Ein Benutzer kann nicht wissen, dass zu einem<br />

Problem eine Erfahrung existiert. Er wird seine Arbeit gewissenhaft machen <strong>und</strong> nicht<br />

vermuten, dass es eine bessere Lösung gibt. Daher ist eine aktive Hilfe für das zu<br />

entwickelnde Tool unerlässlich.<br />

4.3.6 Fazit<br />

Es soll eine Kombination aus diesen vorgestellten Verfahren verwendet werden. Ein Assistent<br />

ist gut geeignet, um Hinweise bei der Bearbeitung anzuzeigen. Die Anzeige stört nicht, wenn<br />

sie in einen getrennten Bereich erfolgt. Einzelne Hinweise sollten deaktiviert werden können,<br />

wenn der Benutzer meint, den Hinweis schon zu kennen. Der Assistent kann auch dazu<br />

genutzt werden, Warnungen <strong>und</strong> Fehler anzuzeigen <strong>und</strong> Verbesserungsvorschläge zu geben.<br />

Er kann aktiv dynamische Hilfestellung geben. Die freie Formulierung <strong>von</strong> Fragen ist<br />

allerdings schwierig <strong>und</strong> soll zunächst nicht implementiert werden. Allerdings ist eine<br />

nachträgliche Erweiterung denkbar.


4.4 Architektur des Tools<br />

Die Anzeige <strong>von</strong> Fehlern <strong>und</strong> möglichen Problemen kann ähnlich wie in Eclipse erfolgen.<br />

Fehler bzw. Warnungen können durch entsprechende Icons neben ein Formularelement<br />

angezeigt werden. So ist es dem Benutzer möglich, auf einen Blick zu erkennen wo es noch<br />

Probleme gibt. Durch Auswahl des Feldes zeigt der Assistent dann die Fehlermeldung an.<br />

Ebenfalls ist ein Tooltipp ähnlich wie in Eclipse wünschenswert, da der Benutzer den<br />

Assistenten ausgeblendet haben könnte. Entsprechende Icons können auch in einem Baum an<br />

der Seite angezeigt werden, welches ihm eine Navigation zu den Fehlern erleichtert. So ist<br />

sichergestellt, dass Fehler <strong>und</strong> Hinweise angezeigt werden, auch wenn der Assistent<br />

ausgeblendet wurden ist.<br />

Die Idee eines ProblemViews ermöglicht den Benutzer alle Fehler übersichtlich darstellen zu<br />

lassen <strong>und</strong> sollte ihm ebenfalls <strong>zur</strong> Verfügung gestellt werden. Falls der Benutzer den<br />

Assistenten ausblendet, stellt diese Übersicht eine weitere Möglichkeit dar, den Benutzer zu<br />

erreichen.<br />

PopUps sollten vermieden werden, da sie bei der Arbeit stören. Lediglich bei<br />

schwerwiegenden Fehlern bei der eine Operation nicht ausgeführt werden kann, soll sich ein<br />

Fenster öffnen. Dies sind zum Beispiel Fehler beim Laden bzw. Speichern des Projekts. Es ist<br />

auch denkbar den Benutzer durch PopUps zu erreichen, falls er den Assistenten ausgeblendet<br />

hat. Allerdings wird er den Assistenten nicht ohne Gr<strong>und</strong> ausgeschalten haben <strong>und</strong> diese Art<br />

<strong>von</strong> „Unterstützung“ ist weitaus störender als ein Assistent an der Seite. Daher sollen weder<br />

Kritiken noch Hinweise über PopUps erfolgen.<br />

Ein Tipp des Tages ist hilfreich für neue Benutzer, soll aber in dem Assistenten integriert<br />

werden. Beim Starten des Programms kann der Assistent als erstes immer einen Tipp<br />

anzeigen, es sei denn der Benutzer hat die Anzeige des Tipps deaktiviert bzw. den Assistenten<br />

ausgeblendet.<br />

Durch ein aktives System, das die relevanten Erfahrungen selbständig heraussucht, soll die<br />

Diskrepanz <strong>zur</strong> Nutzung vorhandener Erfahrungen erheblich minimiert werden, so dass sie<br />

auch tatsächlich genutzt werden. Ein Assistent <strong>und</strong> eine dezente Markierung <strong>von</strong> Fehlern <strong>und</strong><br />

Problemen sollen den Benutzer in seiner Arbeit unterstützen <strong>und</strong> dabei nicht hinderlich sein.<br />

So soll er ruhig die Warnungen erst mal ignorieren können <strong>und</strong> später dann beheben, so dass<br />

seine gegenwärtige Arbeit <strong>und</strong> sein Gedankenfluss nicht gestört werden.<br />

4.4 Architektur des Tools<br />

Die Architektur ist an das MVC Pattern angelehnt. Im MVC Pattern werden das Modell, die<br />

View <strong>und</strong> der Controller <strong>von</strong>einander getrennt. Das Modell hält die Daten vor <strong>und</strong> wird <strong>von</strong><br />

der View beobachtet. Das Modell weiß nichts über die innere Struktur der View <strong>und</strong><br />

benachrichtigt lediglich die View bei Änderungen. Die View stellt die Daten, also das Modell,<br />

grafisch dar. Sie aktualisiert sich automatisch, wenn sich das Modell geändert hat. Bei einer<br />

Eingabe durch den Benutzer werden Ereignisse ausgelöst. Der Controller interpretiert die<br />

Ereignisse <strong>und</strong> verändert das Modell. Der Vorteil dieses Patterns ist die Austauschbarkeit <strong>und</strong><br />

die beliebige Erweiterbarkeit um weitere Views. Die Trennung <strong>von</strong> Modell, View <strong>und</strong><br />

Controller macht Sinn, da man auf diese Weise eine übersichtliche Struktur erhält, die zudem<br />

auch noch leicht wartbar ist. Da mit dem Observer-Pattern gearbeitet wird, können<br />

Änderungen auch Berechnungen anstoßen.<br />

33


34<br />

Abbildung 16: Architektur des Tools<br />

4. <strong>Konzept</strong><br />

Der <strong>Use</strong> Case Editor hat drei Modelle, das Template Modell, das Projekt <strong>und</strong> <strong>Use</strong> Case<br />

Modell <strong>und</strong> das Erfahrungsmodell. Das Template Modell ermöglicht die individuelle<br />

Anpassung des Template durch Hinzufügen bzw. Entfernen <strong>von</strong> Attributen. Das Projekt <strong>und</strong><br />

<strong>Use</strong> Case Modell hält die Projektdaten <strong>und</strong> die <strong>Use</strong> Cases bereit <strong>und</strong> das Erfahrungsmodell<br />

die aktuell relevanten Erfahrungen.<br />

Alle drei Modelle werden <strong>von</strong> der View, also der grafischen Benutzeroberfläche, beobachtet.<br />

Bei einer Änderung der Modelle aktualisiert sie die dargestellten Informationen. Der Benutzer<br />

modifiziert über die Grafische Benutzeroberfläche die Daten <strong>und</strong> löst dabei verschiedene<br />

Events aus, die vom Controller aufgenommen <strong>und</strong> interpretiert werden. Der Controller ändert<br />

dann die Modelle um.<br />

Weiterhin hat der Controller Zugriff auf die Projektverwaltung, über die er Projekte laden<br />

<strong>und</strong> speichern kann, <strong>und</strong> die Persönliche Sicht auf die Erfahrungsbasis. So können bestimmte<br />

Erfahrungen deaktiviert werden, es können aber auch neue hinzugefügt oder bestehende<br />

erweitert werden. Die Persönliche Sicht greift auf die Erfahrungsbasis zu <strong>und</strong> filtert nicht<br />

gewünschte Erfahrungen heraus. Wo die Erfahrungsbasis für jeden Benutzer die gleiche ist,<br />

kann der Benutzer in dieser Sicht, individuell Erfahrungen ausblenden, die ihn stören oder die<br />

er nicht mehr für informativ hält.<br />

Der Erfahrungsmatcher beobachtet das Projekt <strong>und</strong> <strong>Use</strong> Case Modell, greift auf diese<br />

persönliche Erfahrungssammlung zu <strong>und</strong> sucht die relevanten Erfahrungen aus, die er im<br />

Erfahrungsmodell setzt. Die GUI zeigt diese Erfahrungen schließlich an. Es wäre auch<br />

möglich, den Erfahrungsmatcher als Teil des Controllers zu implementieren. Dadurch wäre<br />

dieser jedoch komplexer <strong>und</strong> unübersichtlicher geworden. Durch die Trennung ist eine<br />

Erweiterung (siehe Kapitel 3.5.4) einfacher. Wenn man das Tool beispielsweise durch eine<br />

Webkomponente erweitern möchte, hätte man den Erfahrungsmatcher erneut implementieren<br />

müssen. Da dieser jedoch ausgelagert ist, muss lediglich nur der Controller selbst neu


4.5 Modelle<br />

geschrieben werden. Auch ein Austausch der Komponenten stellt keine größeren Probleme<br />

dar, weil die Komponenten kleiner <strong>und</strong> überschaubarer sind.<br />

Die Komponenten einer Domänorientierten Entwurfsumgebung sind in dieser Architektur<br />

wieder zu finden. Die GUI stellt zweifelsfrei die Konstruktionskomponente dar, in der die<br />

<strong>Use</strong> Cases „konstruiert“ werden. Der Matcher analysiert die Konstruktion <strong>und</strong> gehört<br />

zusammen mit der Erfahrungsbasis <strong>und</strong> den Assistenten <strong>zur</strong> Argumentationskomponente. Die<br />

Projektverwaltung ist zwar für die Speicherung der Projekte zuständig, stellt zugleich aber<br />

auch den Katalog dar, in der in einer späteren Entwicklung nach ähnlichen <strong>Use</strong> Cases gesucht<br />

werden könnte. Die Spezifikationskomponente ist in Teilen der GUI <strong>und</strong> dem Template<br />

Modell wieder zu finden. Im Template Modell wird spezifiziert, wie ein <strong>Use</strong> Case aussehen<br />

soll, also welche Attribute aktiviert bzw. deaktiviert sind. Die Simulationskomponente könnte<br />

später integriert werden. So ist die Ableitung eines grafischen Prozessmodells aus den <strong>Use</strong><br />

Cases denkbar, welches dann simuliert werden könnte (siehe Kapitel 7).<br />

4.5 Modelle<br />

4.5.1 Projekt <strong>und</strong> <strong>Use</strong> Case Modell<br />

Abbildung 17: Klassendiagramm des Projekt <strong>und</strong> <strong>Use</strong> Case Modells<br />

Ein Projekt soll die Attribute Titel, Beschreibung, <strong>Erstellung</strong>sdatum <strong>und</strong> Letzte Änderung<br />

besitzen. Der Benutzer soll einem Projekt einen kurzen Titel geben können, um es schnell<br />

wieder identifizieren zu können. Unter Beschreibung hat er die Möglichkeit eine<br />

ausführlichere Kennzeichnung <strong>und</strong> Erläuterung anzugeben. Weitere Metadaten sind das<br />

35


36<br />

4. <strong>Konzept</strong><br />

Erstelldatum sowie der Zeitpunkt der letzten Änderung, wodurch es denn Benutzer ermöglicht<br />

wird, verschiedene Versionen zu unterscheiden. Ein Projekt bündelt beliebig viele <strong>Use</strong> Cases.<br />

Ein <strong>Use</strong> Case weist ebenfalls ein Erstell- <strong>und</strong> Änderungsdatum auf <strong>und</strong> umfasst beliebige <strong>und</strong><br />

beliebig viele Attribute, die aus einen eindeutigen Schlüssel <strong>und</strong> einen beliebigen Objekt<br />

bestehen. Ein Attribut hat ebenfalls ein Änderungsdatum, so dass der Benutzer die<br />

Möglichkeit hat, sich die letzten Änderungen anzeigen zu lassen. Die abgelegten Objekte sind<br />

in der Regel einfache Zeichenketten wie Titel, Beschreibung oder Vorbedingung, aber auch<br />

komplexere Datenstrukturen sind möglich. So kann ein Attribut auch das<br />

Haupterfolgsszenario sein.<br />

Ein Szenario besteht aus Schritten, wobei ein Schritt aus einem Akteur <strong>und</strong> seiner Aktion<br />

besteht. Da in einem Szenario auch ein <strong>Use</strong> Case verlinkt werden kann (Include), wurde das<br />

Interface IStep eingeführt, das Step <strong>und</strong> Linked<strong>Use</strong>Case implementieren. Die Klasse<br />

Linked<strong>Use</strong>Case beinhaltet einen Verweis auf den <strong>Use</strong> Case <strong>und</strong> einen frei definierbaren<br />

Aktionsnamen. Gibt der Benutzer keinen eigenen Namen ein, so wird der Titel des <strong>Use</strong> Cases<br />

verwendet, welcher allerdings nicht unbedingt zu einen satzfre<strong>und</strong>lichen Aufbau führt. Ist der<br />

verlinkte <strong>Use</strong> Case null, so liegt eine fehlerhafte Verlinkung vor. Das Kritiksystem muss<br />

diesen Fehler anzeigen.<br />

Schritte können erweitert werden. Daher müssten Schritte eigentlich ein Attribut<br />

„Erweiterungen“ besitzen. Da aber auch mehrere Schritte durch die gleiche Erweiterung<br />

erweitert werden könnten, werden Erweiterungen als <strong>Use</strong> Case Attribut abgelegt. Diese<br />

Trennung hat auch einen Verwaltungsvorteil, da Erweiterungen in der grafischen Oberfläche<br />

als ein Datenfeld für sich dargestellt werden (vgl. <strong>Use</strong> Case Template <strong>von</strong> Cockburn,<br />

[Coc06]). Der Nachteil ist allerdings, dass die Konsistenz nicht automatisch gegeben ist. Der<br />

Benutzer bzw. das Kritiksystem muss überprüfen, dass keine fehlerhaften Referenzen<br />

vorkommen. Eine Erweiterung hat ein Attribut, dass die erweiterten Schritte referenziert, eine<br />

Bedingung <strong>und</strong> ein Szenario, das durchlaufen werden soll, wenn die Bedingung erfüllt ist.<br />

Ein weiteres <strong>Use</strong> Case Attribut können die Technischen Variationen (Klassenname<br />

Variation) sein. Sie verfügen ähnlich wie die Erweiterungen über ein Attribut, das die<br />

Schritte referenziert, die variiert werden <strong>und</strong> ein Attribut, das die Variation angibt. Technische<br />

Variationen listen Alternativen auf. Sie haben kein Szenario, da nur die Variationsart<br />

interessant ist. Sollte ein alternativer Weg vorliegen, sollte dieser besser in Erweiterungen<br />

aufgeführt werden. Auch bei den Variationen muss die Konsistenz der Schritte durch das<br />

Kritiksystem geprüft werden.


4.5 Modelle<br />

4.5.2 Template Modell<br />

Abbildung 18: Klassendiagramm des Template Modells<br />

Ein Template bündelt aktuelle sowie deaktivierte Attribute. Dazu wurde die bereits bekannte<br />

Klasse <strong>Use</strong>CaseAttribute um Variablen erweitert, die besagen, ob das Attribut aktiviert<br />

ist, ob es unerlässlich ist <strong>und</strong> ob sie eine Auswahlbeschränkung unterliegt. Ein Beispiel für ein<br />

unerlässliches Attribut ist das Erfolgsszenario. Ein <strong>Use</strong> Case ohne Szenario verliert den<br />

eigentlichen Sinn eines <strong>Use</strong> Cases. Auf das Attribut Performance könnte hingegen durchaus<br />

verzichtet werden. Mit der optionalen Angabe einer Auswahlbeschränkung, können in der<br />

GUI nur die vordefinierten Möglichkeiten ausgewählt werden. Dies findet zum Beispiel bei<br />

der Angabe des Levels eine Verwendung. Hier kann der Benutzer nur zwischen den 3 Levels<br />

Überblick, Funktion <strong>und</strong> Subfunktion wählen <strong>und</strong> keine eigene angeben.<br />

Ob ein Attribut aktiviert bzw. deaktiviert ist, kann über die bereitgestellten Methoden<br />

abgefragt <strong>und</strong> modifiziert werden. Der Benutzer kann auch beliebige eigene Attribute<br />

hinzufügen (siehe <strong>Use</strong> Case 14: Benutzer bearbeitet das <strong>Use</strong> Case Template).<br />

37


38<br />

4.5.3 Erfahrungsmodell<br />

Abbildung 19: Klassendiagramm des Erfahrungmodells<br />

4. <strong>Konzept</strong><br />

Erfahrungen bestehen hier aus einem Teaser <strong>und</strong> einer Erläuterung. Mit einem kurzen Text<br />

wird die Erfahrung in einem Satz geschildert. Wenn dem Benutzer die oberflächliche<br />

Information nicht ausreicht, muss er eine Erklärung bzw. eine ausführlichere Beschreibung<br />

des Problems mit möglichen Lösungsvorschlägen abrufen können. Da es vermutlich mehrere<br />

relevante Erfahrungen gibt, sollten sie nach ihrer Wichtigkeit sortiert angezeigt werden (siehe<br />

Anforderung in 3.1). Daher ist eine Priorität nötig. Darüber hinaus hat eine Erfahrung <strong>zur</strong><br />

eindeutigen Identifizierung eine ID, die auch <strong>zur</strong> Speicherung der deaktivierten Erfahrungen<br />

verwendet wird <strong>und</strong> ein Änderungsdatum, um Aktualisierungen zu erkennen.<br />

Die Erweiterbarkeit <strong>von</strong> Erfahrung wurde durch die Klasse ExperienceExtension<br />

gelöst. Der Benutzer kann eine Art Feedback über bestehende Erfahrungen abgeben, wenn er<br />

beispielsweise anderer Ansicht ist oder Erfahrungen über die Nutzung dieser Erfahrungen<br />

besitzt. Dabei sind lediglich die Attribute Teaser <strong>und</strong> Erläuterung relevant. Der Kontext <strong>und</strong><br />

die Gewichtung gehen aus der bestehenden Erfahrung hervor. Selbstverständlich kann eine<br />

Erweiterung abermals erweitert werden <strong>und</strong> kann beliebig viele Erweiterungen besitzen. Um<br />

unnötige instanceof-Abfragen zu ersparen, wurde das Interface Extandable<br />

eingeführt, dass die Klasse Experience <strong>und</strong> ExperienceExtension implementieren.<br />

Sie setzt Methoden zum Abfragen <strong>und</strong> Setzen des Teasers <strong>und</strong> der Erläuterung, sowie das<br />

Hinzufügen, Löschen <strong>und</strong> Abragen der Erweiterungen voraus.<br />

Die Klasse Help ist <strong>von</strong> der abstrakten Klasse Experience abgeleitet <strong>und</strong> verfügt über<br />

zwei Attribute, nämlich forEditing<strong>Use</strong>Case <strong>und</strong> forAttribute. Das erste Attribut<br />

besagt, ob die Hilfe für das Editieren eines <strong>Use</strong> Cases dient <strong>und</strong> das zweite Attribut für<br />

welches <strong>Use</strong> Case Attribut sie relevant ist. Ist das <strong>Use</strong> Case Attribut null, so handelt es sich<br />

um eine allgemeine Hilfe für die Bearbeitung eines <strong>Use</strong> Cases, ist das erste Attribut unwahr,<br />

so ist die Hilfe allgemein <strong>und</strong> dient der Bearbeitung des Projekts. Des Weiteren hat die Klasse<br />

Help eine Methode checkContext, die überprüft, ob die Hilfe für die übergebenen


4.5 Modelle<br />

Parameter relevant ist. Dies ist notwendig, da bei der Bearbeitung stets nur relevante<br />

Erfahrungen angezeigt werden sollen.<br />

Die Klasse Critic erweitert ebenfalls die abstrakte Klasse Experience. Sie verfügt über<br />

eine Methode, die wahr <strong>zur</strong>ückgibt, wenn die Kritik mindestens einmal im Projekt zutrifft.<br />

Dieser Wahrheitswert wird dadurch berechnet, dass eine Klasse instanziiert wird, die die<br />

Überprüfung vornimmt <strong>und</strong> mit wahr antwortet, wenn sie eine weniger gute Lösung oder gar<br />

einen Fehler entdeckt hat. Die Klasse, die diese Überprüfung durchführt, wird als Klassenpfad<br />

angegeben <strong>und</strong> muss das Interface CriticChecker implementieren. CriticChecker<br />

hat eine Methode checkForProject, das bei der Überprüfung ContextObjecte<br />

erzeugt, die die Kritikstellen im Projekt speichern. Es wäre auch möglich, dass die Klasse<br />

Critic dieses direkt überprüft. Man hätte dann die Klasse erweitern müssen <strong>und</strong> das für<br />

jede Kritikmöglichkeit, obwohl sich jedoch nur die Prüfmethode ändert. Daher wurde durch<br />

Wahl einer externen Klasse das Strategy Pattern verwendet, so dass eine klare Trennung des<br />

eigentlichen Modells <strong>von</strong> den erweiterbaren Erfahrungen erfolgt. Die Klasse Critic bleibt<br />

also unverändert. Da Erfahrungen austauschbar sein sollen, könnte es unter Umständen<br />

vorkommen, dass für die gleiche Kritik unterschiedliche Implementierungen nötig sind, zum<br />

Beispiel wenn mal neun <strong>und</strong> in einen anderen Fall zwölf Schritte als maximale Szenariolänge<br />

gesehen werden. Auch die Mehrsprachigkeit wird dadurch besser unterstützt. Ferner kann<br />

wegen der Einheitlichkeit die Eingabe <strong>von</strong> Teaser, Erläuterung, Kontext <strong>und</strong> Klassenpfad<br />

über eine grafische Benutzeroberfläche erfolgen. Ferner wurde für die Änderbarkeit <strong>und</strong><br />

Erweiterbarkeit ein optionaler Parameter vorgesehen, über das z. B. sprachabhängige Wörter<br />

gesetzt werden können.<br />

Abbildung 20: Klassendiagramm CriticChecker<br />

Ob eine Kritik dem aktuellen Kontext entspricht, kann über die Methode matches abgefragt<br />

werden. Ihr werden als Parameter das Projekt, der <strong>Use</strong> Case, das Attribut <strong>und</strong> der Teil des<br />

Attributs übergeben. Die Methode liefert wahr, sofern ein Teil des Pfades übereinstimmt. Auf<br />

diese Weise ist es möglich, dass eine Kritik für ein ganzes Projekt, ein <strong>Use</strong> Case, ein <strong>Use</strong><br />

Case Attribut bzw. für einen Teil des Attributes, z. B. einen Schritt, gelten kann. Die Methode<br />

matches dient den Knoten aus den Projektbaum bzw. den Formularelementen dazu,<br />

39


40<br />

4. <strong>Konzept</strong><br />

festzustellen, ob es einen Icon anzeigen muss oder nicht. Sie übergeben dabei die bekannten<br />

Parameter <strong>und</strong> wenn die Kritik für diesen Kontext zutrifft, liefert die Methode wahr.<br />

Die Klasse Critic wird entsprechend Kapitel 4.1 weiter unterteilt in Error <strong>und</strong><br />

Warning, da eine Warnung nicht gleich ein Fehler bedeuten muss.<br />

Die Klasse ExperienceModell speichert die aktuellen Erfahrungen. Dabei wird zwischen<br />

Hilfe <strong>und</strong> Kritik unterschieden. Hilfe wird, wie oben erwähnt, angezeigt, bevor der Benutzer<br />

eine Eingabe macht, also dann wenn er ein Datenfeld ausgewählt hat. Eine Hilfe bezieht sich<br />

daher immer auf den aktuellen Kontext. Eine Kritik hingegen, die immer erst nach der<br />

Eingabe erfolgen kann, muss sich nicht auf den aktuellen Kontext beziehen. Dieser<br />

Unterschied bedeutet auch, dass die Ermittlung der relevanten Hilfe <strong>und</strong> Kritiken auf<br />

unterschiedliche Weise erfolgt. Die Trennung kann bei vielen Erfahrungen auch zu einer<br />

besseren Performance führen. Aus diesen Gründen wird eine Trennung vorgenommen.<br />

4.6 Erfahrungsmatcher<br />

Abbildung 21: Sequenzdiagramm <strong>zur</strong> Anzeige <strong>von</strong> Hilfe<br />

Wenn der Benutzer ein <strong>Use</strong> Case bearbeitet, löst er bei beim Selektieren eines Formularfeldes<br />

ein Event aus. Es wird ein Update an den Erfahrungsmatcher geschickt. Der Matcher holt sich<br />

daraufhin die aktivierten Hilfestellungen aus der Erfahrungsbasis, die er über die persönliche<br />

Sicht erhält. Die Hilfestellungen werden durchlaufen <strong>und</strong> die, die mit dem aktuellen Kontext<br />

(Ebene der Bearbeitung, also Projekt-, <strong>Use</strong> Case- oder Attributebene) übereinstimmen,<br />

werden in dem Erfahrungsmodell gesetzt. Der Assistent, der das Erfahrungsmodell<br />

beobachtet, erhält daraufhin eine Benachrichtigung über die Änderung <strong>und</strong> aktualisiert seine<br />

Anzeige.


4.7 Erfahrungsschatz<br />

Abbildung 22: Sequenzdiagramm <strong>zur</strong> Anzeige <strong>von</strong> Kritik<br />

Wenn der Benutzer mit der Bearbeitung eines Formularfeldes fertig ist, wird dabei der <strong>Use</strong><br />

Case aktualisiert <strong>und</strong> ein Event ausgelöst. Es wird ein Update an den Erfahrungsmatcher<br />

geschickt <strong>und</strong> ähnlich wie bei der Hilfe holt sich der Matcher die aktivierten Kritiken aus der<br />

Erfahrungsbasis. Die Kritiken werden durchlaufen <strong>und</strong> für jede Kritik wird überprüft, ob sie<br />

für einen der <strong>Use</strong> Cases zutrifft. Dazu wird die im Klassenpfad referenzierte Klasse<br />

instanziiert. Sie implementiert das Interface ContextChecker <strong>und</strong> verfügt daher über eine<br />

Methode checkProject. Die Methode gibt wahr <strong>zur</strong>ück, sofern die Kritik mindestens<br />

einmal im Projekt zutrifft. Bei der Überprüfung werden ContextObjecte erzeugt, die sich<br />

die Kritikstellen im Projekt merken. Die ermittelten Kritiken werden dann dem<br />

Erfahrungsmodell übergeben, wodurch der Assistent, der Projektbaum, die ProblemView <strong>und</strong><br />

das Formular, die alle das Erfahrungsmodell beobachtet, benachrichtigt werden <strong>und</strong> diese ihre<br />

Anzeige aktualisieren.<br />

Die Hilfe ändert sich nur, wenn ein anderes Attribut ausgewählt wurde. Der Assistent ist der<br />

einzige der sich für eine solche Änderung interessiert. Die Kritiken werden aktualisiert, wenn<br />

sich das Projektmodell ändert, also wenn der Benutzer eine Eingabe gemacht <strong>und</strong> diese<br />

übernommen wurde. Für eine solche Änderung interessieren sich alle, die Warnungen <strong>und</strong><br />

Fehler visualisieren, also der Assistent, der einen Fehler anzeigt, wenn das dazugehörige<br />

Attribut ausgewählt ist, sowie der Projektbaum <strong>und</strong> das Formular, die die Stellen markieren<br />

<strong>und</strong> die ProblemView, die alle Kritiken in einer Ansicht zusammenfasst.<br />

4.7 Erfahrungsschatz<br />

Der Erfahrungsschatz könnte auf verschiedene Art <strong>und</strong> Weisen realisiert werden. Da der<br />

Benutzer auch unterwegs ohne Netzanschluss arbeiten können muss, fällt die Wahl eines<br />

41


42<br />

4. <strong>Konzept</strong><br />

Servers, der die Erfahrungen heraussucht, weg. Die Auswahl der aktuellen Erfahrung kann<br />

daher nur clientseitig erfolgen. Es ist aber durchaus denkbar, ein Update des<br />

Erfahrungsschatzes über einen Server durchzuführen, ähnlich wie die gängigen<br />

Virenprogramme ihre Virendefinitionen aktualisieren. So kann ein Client bei vorhandenem<br />

Netzzugang seine neuen Erfahrungen auf dem Server veröffentlichen <strong>und</strong> anderen Benutzern<br />

<strong>zur</strong> Verfügung stellen <strong>und</strong> neue Erfahrungen der anderen Benutzer herunterladen. Dieses<br />

könnte in einer späteren Entwicklung realisiert werden, in der ersten Version soll dieses<br />

manuell durch den Benutzer erfolgen.<br />

Die Speicherung der Erfahrung könnte in einer Datenbank erfolgen. Das Matching könnte<br />

durch eine Abfrage in SQL erfolgen, die dann die relevanten Erfahrungen <strong>zur</strong>ückgibt. Dies<br />

hätte den Nachteil, dass eine Datenbank zusätzlich installiert werden müsste, d.h. man könnte<br />

nicht auf einem fremden Notebook arbeiten. Darüber hinaus bedeutet die Verwaltung der<br />

Datenbank zusätzlichen Arbeitsaufwand, insbesondere wenn weitere Tabellen bzw. Spalten<br />

benötigt werden.<br />

Daher soll die Erfahrungsbasis immer lokal <strong>und</strong> in einer Datei bereitgestellt werden. Da das<br />

XML-Format eine gute Art ist, Daten zu strukturieren, <strong>und</strong> zudem auch gut erweiterbar ist,<br />

sollen hier XML-Dateien eingesetzt werden. Dies gilt auch für die Projekt- <strong>und</strong><br />

Konfigurationsdateien, da auch <strong>Use</strong> Cases beliebige <strong>und</strong> beliebig viele Attribute annehmen<br />

können. Eine Aktualisierung der Erfahrung soll wie schon erwähnt zunächst manuell erfolgen<br />

<strong>und</strong> in einer späteren Entwicklung über einen Server erfolgen.<br />

4.8 GUI Entwurf<br />

Abbildung 23: GUI Entwurf


4.8 GUI Entwurf<br />

Abbildung 23 zeigt den Entwurf der grafischen Benutzeroberfläche. Die Oberfläche ist an<br />

anderen Anwendungen, insbesondere Eclipse [Ecl06], angelehnt, so dass sie auf den Benutzer<br />

vertraut wirkt. Auf diese Weise kann der Benutzer viele Funktionen intuitiv auf Anhieb<br />

finden.<br />

Auf der linken Seite befindet sich der Projektbaum, der dazu dient, die im Projekt vorhanden<br />

<strong>Use</strong> Cases als Liste anzuzeigen. Mit einem Klick auf einen <strong>Use</strong> Case kann dieser geöffnet<br />

werden. Des Weiteren ist es möglich, über die linke Maustaste <strong>Use</strong> Cases hinzufügen <strong>und</strong> zu<br />

löschen. Ein <strong>Use</strong> Case kann aufgeklappt werden, so dass die einzelnen Attribute des <strong>Use</strong><br />

Cases sichtbar sind. Mit der Auswahl eines Attributes ist es möglich, direkt zu einen Attribut<br />

zu springen. Fehler <strong>und</strong> Warnungen sollen durch ein kleines Icon neben dem Element<br />

angedeutet werden, so dass der Benutzer eine nützliche Übersicht erhält, wo noch<br />

Verbesserungsbedarf besteht.<br />

In der Mitte der grafischen Oberfläche <strong>und</strong> somit im Zentrum findet die Bearbeitung eines<br />

<strong>Use</strong> Cases statt. Sollte es zu einem Attribut eine Warnung oder einen Fehler geben, erscheint<br />

neben dem Attributnamen ein entsprechendes Icon. Im Szenario wird der Akteur <strong>von</strong> der<br />

Aktion getrennt. So ist es zum einen wesentlicher schwieriger, Passivsätze zu bilden, da der<br />

Satz immer mit einem Akteur beginnen muss, zum anderen ist so klarer, wer etwas tut.<br />

Cockburn hält es in [Coc01] für äußerst wichtig, immer klarzustellen, wer in einen Schritt<br />

aktiv ist, um Missverständnisse gleich zu Beginn aus dem Weg zu räumen. Der Benutzer wird<br />

also angeregt, sich zu überlegen, wer etwas tut. Durch die Trennung ist es auch leichter<br />

feststellbar, in welchen <strong>Use</strong> Cases ein Akteur tätig ist. Leider hat die Trennung auch einen<br />

Nachteil. Der Benutzer ist in seinen Satzbau nicht mehr frei, so dass sich ein Schritt eventuell<br />

etwas holprig anhören könnte. Da aber ein gewünschter Satzaufbau in der Form „Subjekt<br />

Prädikat Objekt“ erzielt wird, überwiegt dieser Nachteil nicht all zu sehr. Auf dieser Weise<br />

werden außerdem eventuelle Nebensätze ans Ende gestellt, so dass der Hauptsatz <strong>und</strong> somit<br />

der eigentliche Schritt im Vordergr<strong>und</strong> steht. Nebensätze sind zweitrangig <strong>und</strong> gehören daher<br />

ans Ende.<br />

Unter dem Bearbeitungsbereich befindet sich die ProblemView, die tabellarisch Warnungen<br />

<strong>und</strong> Fehler im gesamten Projekt darstellt. Durch einen Doppelklick ist es möglich, zum<br />

Problem zu springen.<br />

Im rechten unteren Bereich befindet sich ein Assistent, der aktuelle Hinweise, Warnungen<br />

<strong>und</strong> Fehler bei der Bearbeitung eines <strong>Use</strong> Cases anzeigt. Der Assistent liefert auf Anfrage<br />

weitere Erklärungen <strong>und</strong> gibt Verbesserungsvorschläge. Insgesamt soll der Assistent den<br />

Benutzer während seiner Arbeit unterstützen <strong>und</strong> dabei nicht stören. Aus diesem Gr<strong>und</strong> wurde<br />

ein Bereich am Rande des Fensters gewählt. Ferner ist es überaus wichtig, dass er stets nur die<br />

relevanten Erfahrungen anzeigt. Falls es mehrere Erfahrungen gibt, kann sich der Benutzer<br />

diese durch entsprechende Buttons anzeigen lassen.<br />

Schließlich soll eine grafische Darstellung des aktuellen <strong>Use</strong> Cases als Überblick dienen, um<br />

die Funktion <strong>und</strong> verlinkte <strong>Use</strong> Cases zu erkennen.<br />

43


44<br />

5. Erfahrungssammlung<br />

Ohne eine erste Sammlung einiger Erfahrungen, würde die Akzeptanz des Tools äußerst<br />

gering ausfallen. Um den Erfahrungskreislauf zu starten, sollen wichtige Erfahrungen gesät<br />

werden (Seeding, vgl. 2.10). Diese Erfahrungen stellen die Gr<strong>und</strong>lage der Erfahrungsbasis<br />

dar. Da Benutzer ihre eigenen Erfahrungen hinzufügen <strong>und</strong> bestehende kommentieren<br />

können, wächst die Erfahrungsbasis mit der Zeit (Evolutionary Growth). Die Benutzer sollen<br />

dazu angeregt werden, ihr eigenes Wissen einzubringen <strong>und</strong> zu guten Projektplanungen<br />

beizutragen. In regelmäßigen Abständen muss die Erfahrungsbasis durch einen<br />

Erfahrungsingenieur aufbereitet werden, da sie unkontrolliert wächst. Neue Erfahrungen<br />

werden zwar eingefügt, eventuell aber nicht an der richtigen Stelle. Erfahrungen könnten sich<br />

auch widersprechen bzw. red<strong>und</strong>ant vorkommen. Daher muss ein Erfahrungsingenieur die<br />

Erfahrungsbasis so zu sagen aufräumen <strong>und</strong> erneut sähen (Reseeding). Mit der Zeit wird sich<br />

dann auch die Qualität des Erfahrungsschatzes erhöhen.<br />

Die folgenden Erfahrungen stammen aus [Coc01] <strong>und</strong> [ABC03]. Alistair Cockburn, den man<br />

als Spezialisten auf dem Gebiet der <strong>Use</strong> Cases bezeichnen kann, hat in seinen Buch „Writing<br />

Effective <strong>Use</strong> Cases“ ([Coc01]) viele Hinweise aus der Praxis gebracht, die bei der <strong>Use</strong> Case<br />

<strong>Erstellung</strong> nützlich sind. Zum Buch <strong>von</strong> Steve Adolph <strong>und</strong> Paul Bramble, „Patterns for<br />

Effective <strong>Use</strong> Cases“ ([ABC03]), lieferte er viele wertvolle Beiträge. Daher wurden diese<br />

beiden Bücher für die folgenden Erfahrungen herangezogen. Zunächst sollen einige<br />

allgemeine Erfahrungen über das Team, das Projekt <strong>und</strong> ganze <strong>Use</strong> Cases gegeben werden,<br />

sowie eine Vorgehensweise vorgeschlagen werden. Im nächsten Abschnitt folgen dann<br />

Erfahrungen zu den einzelnen Attributen sortiert nach den Auftreten im <strong>Use</strong> Case Template<br />

<strong>von</strong> Cockburn (s. [Coc06]).<br />

Die Erfahrungen sind positiv formuliert, also wie man <strong>Use</strong> Cases gut erstellt. Die im<br />

Folgenden aufgelisteten Erfahrungen können daher direkt als Hilfe übernommen werden.<br />

Durch Negation lassen sich die Kritiken ableiten. Leider lassen sich nicht alle Kritiken<br />

problemlos implementieren. Ein ideales Kritiksystem müsste die Bedeutung des Geschrieben<br />

verstehen. Es müsste z. B. erkennen, dass ein Titel unklar formuliert ist oder eine Bedingung<br />

nicht überprüfbar ist. Leider kann man sich dabei nur an anderen Metriken bedienen, wie zum<br />

Beispiel der Länge einer Eingabe oder ob ein bestimmtes Schlüsselwort vorkommt. Man kann<br />

nur Vermutung äußern, dass beispielsweise ein GUI Element beschrieben wird oder eine<br />

Erläuterung nicht ausführlich genug ist. Sofern solche Methoden existieren, werden sie mit<br />

angegeben.<br />

Etwas unproblematischer sind Überprüfungen, die die Syntax betreffen. Fehlen bspw.<br />

benötigte Angaben wie Titel oder Szenario oder existiert ein verlinkter <strong>Use</strong> Case nicht mehr,<br />

dann kann dies zweifelsfrei festgestellt werden. Diese Beispiele wären dann Fehler, weil man<br />

mit Sicherheit sagen kann, dass etwas nicht gut ist.<br />

5.1 Allgemeine Erfahrungen auf Projekt- <strong>und</strong> <strong>Use</strong> Case-Ebene<br />

1. Das Team<br />

<strong>Use</strong> Cases sollten in kleinen Teams geschrieben werden. Je größer das Team wird, desto<br />

schwieriger wird es, einen gemeinsamen Termin für einen Meeting zu organisieren, desto


5.1 Allgemeine Erfahrungen auf Projekt- <strong>und</strong> <strong>Use</strong> Case-Ebene<br />

größer <strong>und</strong> schwieriger wird der Kommunikationsaufwand <strong>und</strong> desto uneinheitlicher werden<br />

die <strong>Use</strong> Cases, da sie <strong>von</strong> verschiedenen Personen geschrieben werden. Es bringt jedoch auch<br />

nichts, wenn nur eine Person alles alleine schreibt. Ein Team aus unterschiedlichen<br />

Charakteren haben unterschiedliche Ansichtspunkte <strong>und</strong> Hintergr<strong>und</strong>wissen. Sie ergänzen<br />

sich gegenseitig, so dass ein besseres Ergebnis erreicht werden kann. Ein Team besteht<br />

idealerweise aus Experten auf unterschiedlichen Gebieten, so dass eine gemeinsame<br />

domainunspezifische Sprache verwendet werden muss.<br />

2. Der K<strong>und</strong>e sollte bei der <strong>Use</strong> Case <strong>Erstellung</strong> eingeb<strong>und</strong>en werden.<br />

Es ist überaus wichtig, den K<strong>und</strong>en bei der <strong>Use</strong> Case <strong>Erstellung</strong> einzubinden, denn ohne sein<br />

Feedback können z. B. die Interessen der Stakeholder nicht vollständig abgedeckt werden. Oft<br />

beschreibt ein K<strong>und</strong>e die Anforderungen nicht klar genug, so dass Missverständnisse<br />

entstehen können. Diese führen dann zu Unzufriedenheit beim K<strong>und</strong>en, teuren<br />

Nachbesserungen <strong>und</strong> vielleicht sogar dazu, dass der K<strong>und</strong>e ein neues System nicht kauft.<br />

Unzufriedenheit kann auch bei den Benutzern des Systems entstehen, wenn z. B. die<br />

Interessen eines Stakeholders nicht berücksichtigt werden, die der Auftraggeber vergessen<br />

hat. Daher sollte auch ein Gespräch mit den Benutzern eines zu entwickelnden Systems<br />

geführt werden.<br />

3. Man sollte sich vor dem Schreiben <strong>von</strong> <strong>Use</strong> Cases Klarheit verschaffen.<br />

Die Beteiligten Entwickler wissen oft nicht, was der Sinn des zu entwickelnden Systems ist.<br />

Unklare Definitionen <strong>und</strong> Zeitdruck können dazu führen, dass die Entwickler das System<br />

fehlerhaft implementieren. Darüber hinaus neigen Entwickler dazu, die Systemgrenzen zu<br />

erweitern oder Funktionen einzubauen, die sie für nützlich halten, die aber nicht benötigt<br />

werden. Da das eigentliche Ziel nie diskutiert wurde, kreieren sich die Beteiligten ein eigenes<br />

Bild, das zwischen den Benutzern teilweise stark variieren kann. Hinzu kommt, dass die<br />

Mitarbeiter nur un<strong>zur</strong>eichend kommunizieren.<br />

Daher sollte gleich zu Beginn, ein gemeinsames <strong>und</strong> klares Ziel des Systems verfasst werden.<br />

Alle Beteiligten sollten sich im Klaren sein, welche Probleme das System lösen soll <strong>und</strong><br />

welche nicht. Es sollte eine sehr deutliche Grenze zwischen System <strong>und</strong> Umgebung gezogen<br />

werden, so dass unnötige Features vermieden werden. Auf diese gemeinsame Sicht können<br />

dann <strong>Use</strong> Cases geschrieben werden, die klarer definiert sind <strong>und</strong> nicht den eigentlichen Sinn<br />

des Systems verfehlen.<br />

Nicht nur die Stakeholder müssen bekannt sein, sondern auch ihre Rollen <strong>und</strong> ihre<br />

Bedürfnisse. Ohne die Berücksichtigung ihrer Rollen, bleiben wichtige Systemverhalten<br />

eventuell unentdeckt. Sind nicht alle Bedürfnisse bekannt, bleiben diese unabgedeckt <strong>und</strong><br />

können später zu teuren Änderungen führen. Daher ist es erforderlich, dass die Rollen <strong>und</strong><br />

Belange eines jeden Benutzers genau beschrieben werden. Eventuell hilft es auch<br />

aufzuschreiben, was ein Benutzer nicht darf, um die Rechte eines Benutzers klar abzugrenzen.<br />

Gegebenfalls lassen sich Rollen zusammenfassen, so dass Red<strong>und</strong>anz vermieden werden<br />

kann.<br />

45


46<br />

4. Allgemeiner Hinweis zu <strong>Use</strong> Cases<br />

5. Erfahrungssammlung<br />

Ein <strong>Use</strong> Case spiegelt ein Vertrag zwischen Stakeholdern über das Verhalten des Systems<br />

unter verschiedenen Bedingungen. Ein Hauptakteur löst eine Interaktion aus <strong>und</strong> möchte ein<br />

Ziel erreichen. Der Ablauf dieser Interaktion wird im Hauptszenario festgehalten. Gut<br />

geschriebene <strong>Use</strong> Cases sind simple, leicht zu lesen <strong>und</strong> gut zu verstehen. <strong>Use</strong> Cases können<br />

frühzeitig als Diskussionsgr<strong>und</strong>lage dienen, um Missverständnisse oder Fehler aufzudecken.<br />

Je größer ein Projekt ist, desto länger <strong>und</strong> ausführlicher sollten <strong>Use</strong> Cases geschrieben sein.<br />

Hat man hingegen nur ein kleines Projekt mit wenigen Systemfunktionen, lohnt sich der<br />

Aufwand eher nicht <strong>und</strong> man kann sich die Zeit <strong>und</strong> die Arbeit sparen.<br />

5. Ein <strong>Use</strong> Case sollte leicht zu lesen sein.<br />

<strong>Use</strong> Cases werden <strong>von</strong> verschiedenen Personen gelesen, unter anderem auch vom K<strong>und</strong>en,<br />

der nicht immer über Fachkenntnisse verfügt. Daher dürfen keine fachspezifischen Begriffe<br />

oder Quellcode-Elemente vorkommen. <strong>Use</strong> Cases sollten kurz, prägnant <strong>und</strong> einfach<br />

geschrieben sein, da lange <strong>Use</strong> Cases nur ungern gelesen werden. Es sollten vollständige<br />

Sätze gebildet werden, die gr<strong>und</strong>sätzlich in der Gegenwart <strong>und</strong> in aktiv formuliert sind. Es<br />

muss klar hervorgehen, was das Ziel des Akteurs in einen Schritt ist <strong>und</strong> wer aktiv ist. Dies<br />

geschieht in der Regel nicht mit einen in passiv formulierten Satz oder durch Beschreibung<br />

<strong>von</strong> GUI Elementen. <strong>Use</strong>s Cases können leichter gelesen werden, wenn sie einen konsistenten<br />

Stil aufweisen. Stilvorgaben machen zwar Sinn, es ist aber sehr kostspielig, jeden <strong>Use</strong> Case in<br />

ein festes Muster zu pressen.<br />

Strategie für das Kritiksystem: Diese Erfahrung kann das Kritiksystem überprüfen, indem<br />

es zum einen nach Schlüsselwörtern wie „if“, „else“, „for“, „Button“, „Menu“ oder „Enter“<br />

sucht, zum anderen die Sätze nach allen Formen <strong>von</strong> „werden“ untersucht. Dabei ist es<br />

überaus wichtig, dass nach den Wörtern <strong>und</strong> nicht nach Teilzeichenketten gesucht wird. Sonst<br />

würde das Kritiksystem bei der Aktion „K<strong>und</strong>e authentifiziert sich“ eine Warnung anzeigen,<br />

weil „authentifiziert“ das Schlüsselwort „if“ enthält. Bei Falschmeldungen würde die<br />

Akzeptanz des Tools fallen.<br />

6. Vorgehensweise<br />

Idealerweise fängt man mit einem <strong>Use</strong> Case auf höchster Ebene an, der das Gesamt-Ziel des<br />

Benutzers beschreibt. Um dieses Ziel zu erreichen, müssen kleinere (Zwischen-) Ziele erreicht<br />

werden. Diese können wieder in <strong>Use</strong> Cases beschrieben werden. Dieses Verfahren bezeichnet<br />

Cockburn in [Coc01] als „Ever-Unfolding Story“. Dabei sollte stets zuerst in die Breite<br />

gegangen werden <strong>und</strong> nur ebenenweise in die Tiefe. Denn je tiefer man geht, desto<br />

detaillierter werden die <strong>Use</strong> Cases. Richtigkeit <strong>und</strong> Vollständigkeit sind jedoch wichtiger als<br />

Details. <strong>Use</strong> Cases können bei Bedarf jederzeit weiter verfeinert werden, aber wenn ein <strong>Use</strong><br />

Case erst mal fehlerhaft ist, verursacht er möglicherweise Folgefehler <strong>und</strong> letztendlich hohe<br />

Kosten. <strong>Use</strong> Cases auf unterster Ebene werden nur ungern gelesen, weil sie wenig aussagen<br />

<strong>und</strong> lange aufhalten. Dadurch werden aber mögliche Fehler nicht entdeckt. Außerdem sind<br />

genaue Details oft nicht notwendig. <strong>Use</strong> Cases brauchen nur so detailliert zu sein, dass ein<br />

Programmierer weiß, was er tun soll.<br />

Strategie für das Kritiksystem: Auch diese Erfahrung kann durch das Kritiksystem<br />

überprüft werden. Wenn ein <strong>Use</strong> Case nicht durch einen auf höherer Ebene motiviert ist, hat<br />

der Benutzer diese Vorgehensweise verletzt. Der Benutzer hat sie auch verletzt, wenn er mit


5.2 Erfahrungen für <strong>Use</strong> Case Attribute<br />

einen <strong>Use</strong> Case auf einer unteren Ebene beginnt. Der erste <strong>Use</strong> Case sollte idealerweise ein<br />

<strong>Use</strong> Case auf dem höchsten Level sein.<br />

7. <strong>Use</strong> Cases sind nicht die ganzen Anforderungen.<br />

<strong>Use</strong> Cases decken nur die funktionalen Anforderungen ab, sie sind nur eine Beschreibung für<br />

die Anforderungen des Verhaltens. Daher müssen <strong>zur</strong> Abdeckung aller Anforderungen stets<br />

zusätzliche Techniken verwendet werden.<br />

8. Das Schreiben <strong>von</strong> <strong>Use</strong> Cases kann auch <strong>zur</strong> Aufdeckung <strong>von</strong><br />

Anforderungen dienen.<br />

Wird ein neues System entworfen, kennt man eventuell nur ein oberstes Ziel. Um dieses Ziel<br />

zu erreichen, müssen zunächst Unterziele erreicht werden, die neue Anforderungen darstellen.<br />

Man kann sich während der Erhebungsphase fragen, warum man etwas will oder wie man das<br />

Ziel erreicht, oder was ist, wenn eine Aktion fehlschlägt. So kommt man zu neuen<br />

Anforderungen, Fehlerbehandlungen <strong>und</strong> Variationen.<br />

5.2 Erfahrungen für <strong>Use</strong> Case Attribute<br />

9. Als Titel sollte ein kurzer aktiver Satz stehen, der das Ziel des <strong>Use</strong> Cases<br />

ankündigt.<br />

Der Titel sollte den <strong>Use</strong> Case kurz <strong>und</strong> prägnant in einem Satz umschreiben, so dass schon<br />

beim Lesen des Titels klar ist, was in einem <strong>Use</strong> Case geschieht. Wenn das Ziel des Akteurs<br />

bereits im Titel genannt wird, muss der gesamte <strong>Use</strong> Case nur gelesen werden, wenn die<br />

genauen Details <strong>von</strong> Interesse sind.<br />

Strategie für das Kritiksystem: Hier soll auf einen in aktiv formulierten Satz geprüft<br />

werden. Eine Titellänge <strong>von</strong> 100 Zeichen sollte ausreichen, um ein Ziel zu beschreiben. Bei<br />

einem längeren Titel wird vermutet, dass er nicht kurz <strong>und</strong> prägnant genug ist. Fehlt der Titel,<br />

so muss <strong>von</strong> einem Fehler ausgegangen werden. Es sollte auch kein zweiter <strong>Use</strong> Case mit<br />

ähnlichem Titel existieren, da entweder Red<strong>und</strong>anz vorliegt oder die Titel nicht klar genug<br />

formuliert wurden. Die Ähnlichkeit zweier Zeichenketten lässt sich mit der Levenshtein-<br />

Distanz [Lev66] bestimmen, bei der die eingefügten <strong>und</strong> gelöschten Zeichen gezählt werden,<br />

um auf die andere Zeichenketten zu kommen. Bei einer Distanz <strong>von</strong> mehr als 10 auf 100<br />

Zeichen soll eine Warnung ausgesprochen werden. Fehlt der Titel, ist <strong>von</strong> einem Fehler<br />

auszugehen. <strong>Use</strong> Case ohne Titel sind schlecht, da sie nicht das Ziel des <strong>Use</strong> Cases<br />

wiedergeben.<br />

10. Eine Erläuterung beschreibt den <strong>Use</strong> Case ausführlicher als der Titel.<br />

Während der Titel einen ganz groben Überblick geben soll, kann in der Erläuterung ein etwas<br />

genauerer Überblick gegeben werden. Allerdings bringt es wenig, das Szenario<br />

nachzuerzählen. Eventuell ist eine Erläuterung nicht erforderlich, wenn der Titel<br />

aussagekräftig genug ist <strong>und</strong> der <strong>Use</strong> Case leicht zu überblicken ist.<br />

47


48<br />

5. Erfahrungssammlung<br />

Strategie für das Kritiksystem: Sollte die Erläuterung kürzer als der Titel sein, ist er<br />

offensichtlich nicht ausführlicher. Je mehr Schritte <strong>und</strong> Erweiterungen ein <strong>Use</strong> Case hat, desto<br />

länger sollte die Erläuterung sein. Das Kritiksystem sollte daher eine Warnung anzeigen,<br />

wenn die Erläuterung entsprechend der Längen des Titels <strong>und</strong> der Anzahl der Schritte <strong>und</strong><br />

Erweiterungen nicht lang genug ist.<br />

11. Mit der Angabe eines Scopes grenzt man das System ab.<br />

Der Scope (Umfang / Systemgrenzen) sollte so klein gewählt werden, dass der Hauptakteur<br />

gerade noch außerhalb des betrachteten Systems steht. Mit der Angabe des Scopes versucht<br />

man abzugrenzen, was zum zu implementierenden System gehört. Missverstände können<br />

später zu hohen Kosten führen, daher sollte der Scope schon in der Erhebungsphase klar<br />

definiert sein. Generell sollten <strong>Use</strong> Cases Black Boxes beschreiben. Die innere Struktur, also<br />

wie ein Verhalten erreicht wird, ist in der Erhebungsphase irrelevant.<br />

12. Die Ebene gibt die Tiefe des Detaillierungsgrades an.<br />

Je tiefer man geht, desto detaillierter ist ein <strong>Use</strong> Case. [Coc01] benutzt dabei folgende<br />

Metapher: Dort wo Himmel <strong>und</strong> Meer sich treffen, ist die Funktionsebene <strong>und</strong> die Ebene, die<br />

die interessanten <strong>Use</strong> Cases enthält. Man kann auf beliebig vielen Ebenen nach oben zu den<br />

Wolken gehen, <strong>und</strong> trifft dabei auf die <strong>Use</strong> Cases auf Überblickebene. Man kann auch<br />

beliebig nach unten gehen <strong>und</strong> trifft auf die Subfunktionen <strong>und</strong> irgendwann auf den<br />

Meeresgr<strong>und</strong>. Es macht wenig Sinn, sehr detaillierte <strong>Use</strong> Cases zu schreiben. Sie weisen zu<br />

viele Informationen auf, die oft niemanden interessieren <strong>und</strong> sind daher vergeudete Zeit <strong>und</strong><br />

Arbeit. [Coc01] empfiehlt 3 Ebenen, also die eigentlich wichtigen <strong>Use</strong> Cases auf<br />

Funktionsebene, die durch einen oder einige wenige <strong>Use</strong> Cases auf Überblickebene motiviert<br />

werden <strong>und</strong> einige <strong>Use</strong> Cases als Subfunktionen verwenden. Subfunktionen sollten nur aus<br />

Übersichtsgründen verwendet werden bzw. wenn mehrere <strong>Use</strong> Cases diese Subfunktion<br />

verwenden.<br />

Strategie für das Kritiksystem: Das Kritiksystem sollte den Benutzer warnen, wenn er viele<br />

<strong>Use</strong> Cases auf niedrigsten Level geschrieben hat. Die meisten <strong>Use</strong> Cases sollten sich auf einer<br />

mittleren Abstraktionsebene befinden. Konkret soll das System warnen, wenn mehr als 25%<br />

der <strong>Use</strong> Cases auf den unteren Ebenen geschrieben wurden.<br />

13. Vorbedingungen müssen wahr sein <strong>und</strong> werden im <strong>Use</strong> Case nicht mehr<br />

überprüft.<br />

Vorbedingungen werden <strong>von</strong> aufrufenden <strong>Use</strong> Cases auf höherer Ebene sichergestellt, so dass<br />

eine weitere Überprüfung nicht erforderlich ist. Es sollten jedoch nur Vorbedingungen<br />

aufgelistet werden, die auch tatsächlich nötig sind. Vorbedingungen brauchen <strong>und</strong> sollten im<br />

Szenario nicht noch mal geprüft werden.


5.2 Erfahrungen für <strong>Use</strong> Case Attribute<br />

14. Mindestgarantien werden auf jeden Fall, also auch bei einem Fehlschlag,<br />

eingehalten.<br />

Mindestgarantien sind zugesicherte Versprechen, die im Erfolgsfall aber auch bei einem<br />

Fehlschlag auf jeden Fall eingehalten werden. Der Hauptakteur oder ein aufrufendes <strong>Use</strong> Case<br />

wird sich darauf verlassen. Die Interessen der Stakeholder sollten berücksichtigt werden.<br />

15. Erfolgsgarantien sind Zusicherungen, die nur im Erfolgsfall erfüllt werden.<br />

Erfolgsgarantien enthalten das Ziel des Hauptakteurs <strong>und</strong> implizit die Mindestgarantien. Sie<br />

werden erfüllt, wenn das Hauptszenario bzw. eine Erweiterung erfolgreich zum Ende des<br />

Szenarios führen. Die Interessen aller Stakeholder müssen erfüllt sein.<br />

16. Stakeholder haben Verhalten <strong>und</strong> Interessen<br />

Ein Stakeholder ist Jemand bzw. Etwas mit Verhalten <strong>und</strong> Interessen. Als Stakeholder müssen<br />

Hauptakteur <strong>und</strong> Akteure aufgelistet werden. Stakeholder können aber auch Akteure sein, die<br />

in einem <strong>Use</strong> Case nicht auftreten, aber trotzdem Interessen an einen <strong>Use</strong> Case haben.<br />

17. Der Hauptakteur ist der Akteur, der in einem Szenario im Vordergr<strong>und</strong> steht.<br />

In der Regel ist es eine Person, die das Ziel des <strong>Use</strong> Cases verfolgt <strong>und</strong> das Verhalten des<br />

Systems nutzt. Der Hauptakteur kann aber genauso gut das System oder ein Teil des Systems<br />

sein, der eine Unterfunktion aufruft.<br />

Strategie für das Kritiksystem: Der Hauptakteur ist ein Stakeholder. Sollte er daher nicht<br />

mit seinen Interessen unter Stakeholder aufgelistet sein, ist vom Kritiksystem eine Warnung<br />

auszusprechen. Sollte er im Szenario gar nicht in Erscheinung treten, ist offensichtlich etwas<br />

nicht in Ordnung.<br />

18. Der Auslöser des <strong>Use</strong> Cases ist ein Ereignis.<br />

In der Regel ist das auslösende Ereignis der Hauptakteur, der eine Funktion des Systems<br />

nutzen möchte. Dies ist aber nicht immer der Fall. So kann auch ein zeitliches Ereignis zum<br />

Beispiel eine Backup-Funktion auslösen. Es ist ebenfalls denkbar, dass der Hauptakteur auf<br />

Anlass eines Dritten handelt, zum Beispiel wenn ein K<strong>und</strong>e über das Telefon bei einem<br />

Mitarbeiter eine Bestellung aufgibt. In diesem Beispiel ist das auslösende Ereignis der K<strong>und</strong>e,<br />

der etwas bestellen möchte.<br />

19. Im Hauptszenario wird der Verlauf bis zum Erreichen des Ziels im<br />

Erfolgsfall beschrieben.<br />

Der Ablauf vom auslösenden Event bis hin zum Ziel wird schrittweise aufgezeigt. Ein<br />

Szenario sollte aus 3-9 Schritten bestehen. Zu viele Schritte lassen den <strong>Use</strong> Case<br />

unübersichtlich <strong>und</strong> langwierig wirken, wo hingegen ein Szenario mit wenigen Schritten<br />

unverhältnismäßig viel Aufwand verursacht. Lange Szenarios sind oft zu detailliert <strong>und</strong><br />

werden ungern gelesen. Man kann dieses Problem lösen, indem man sich fragt, wieso ein<br />

Akteur dieses tut <strong>und</strong> kommt dadurch auf einen höheren abstrakten Level. Oft lassen sich<br />

49


50<br />

5. Erfahrungssammlung<br />

Aufzählungen wie „Name, Anschrift, Telefon, …“ zu einem allgemeinen Begriff, wie<br />

„persönliche Daten“, zusammenfassen. Es sollten keine GUI Elemente erwähnt werden.<br />

Wichtig ist die Absicht des Akteurs, nicht seine Bewegung oder welche Schaltflächen er<br />

drücken muss. <strong>Use</strong> Cases stellen keine Benutzeranleitung dar. Zu kurze <strong>Use</strong> Cases können zu<br />

einem <strong>Use</strong> Case auf höherer Ebene zusammengefasst werden. Des Weiteren machen<br />

Erweiterungen <strong>und</strong> Fehlerbehandlungen das Szenario unübersichtlich <strong>und</strong> komplizierter. Sie<br />

haben daher im Hauptszenario nichts zu suchen <strong>und</strong> werden unter Erweiterungen aufgeführt.<br />

Strategie für das Kritiksystem: Das System kann hier einiges prüfen. Sollten keine Schritte<br />

vorhanden sein, so ist dieses ein Fehler. Ein <strong>Use</strong> Case ohne Schritte macht keinen Sinn.<br />

Szenarios mit weniger als 3 bzw. mehr als 9 Schritten sind verbesserungsfähig <strong>und</strong> es sollte<br />

eine Warnung angezeigt werden. Das Kritiksystem sollte auch bei zu langen Schritten<br />

warnen. Es wird da<strong>von</strong> ausgegangen, dass eine Aktion mit mehr als 100 Zeichen zu lang ist.<br />

Eine Warnung ist auch auszusprechen, wenn ein Schritt zu viele Aufzählungen besitzt. Dies<br />

kann leicht festgestellt werden, indem die Kommata gezählt werden. Konkret soll das System<br />

bei mehr als drei Kommata warnen. Punkte sollen nicht gezählt werden. Es ist zwar nicht<br />

erlaubt, mehrere Sätze an<strong>zur</strong>eihen, jeder Schritt sollte nur eine Aktion sein, aber da dies mit<br />

Punkten bei Abkürzungen kollidiert, ist die sichere Erkennung nicht gegeben. Allerdings<br />

sollten auch Abkürzungen vermieden werden, da diese eventuell nicht auf Anhieb verstanden<br />

werden.<br />

20. Die Schritte eines Szenarios sollten in einer einfachen Sprache gehalten<br />

werden.<br />

Die Sätze sollten möglichst einfach <strong>und</strong> für jeden verständlich geschrieben sein. Dabei ist ein<br />

Satzaufbau in der Form „Subjekt … Prädikat … Objekt“ zu empfehlen, wobei ein Schritt in<br />

der Gegenwart <strong>und</strong> in aktiv formuliert sein sollte. Es sollte stets klar sein, wer etwas tut, daher<br />

ist es keine schlechte Idee, den Akteur durch eine entsprechende Spalte hervorzuheben. Es ist<br />

auch wichtig, was er genau tut. Ungenaue Formulierungen sind daher zu vermeiden. Es sollte<br />

nicht aus Sicht der Akteure beschrieben werden, was sie tun, sondern vielmehr aus der<br />

Vogelperspektive, so dass eine unabhängige Sicht <strong>von</strong> Außen gewährleistet ist. Die Absicht<br />

der Akteure ist wichtig, nicht seine Bewegungen. GUI Beschreibungen <strong>und</strong> Technologien<br />

haben in einen <strong>Use</strong> Case nichts zu suchen, da sie nicht Bestandteil der<br />

Anforderungserhebungsphase sind. Die Verwendung <strong>von</strong> Programmierkonstrukten wie „if“,<br />

„end if“, „loop“, „while“ sind zu vermeiden, da sie Fachwissen voraussetzen <strong>und</strong> vom<br />

K<strong>und</strong>en, der die Anforderungsdokumente verstehen muss, nicht immer verstanden werden.<br />

Zusätzlich leidet die Lesbarkeit, wenn if-Anweisungen geschachtelt werden.<br />

Strategie für das Kritiksystem: Die GUI <strong>und</strong> Technologie-Neutralität könnte dadurch<br />

gewährleistet werden, dass nach Schlüsselwörtern wie „if“, „while“, „Button“, „Menu“,<br />

„Return“, „Java“ <strong>und</strong> „C++“ gesucht wird. Der Satzaufbau wird durch die Trennung <strong>von</strong><br />

Akteur <strong>und</strong> Aktion bereits sichergestellt. Es ist zwar schwer, einen Passivsatz zu formulieren,<br />

dennoch möglich. Daher soll auf alle Formen <strong>von</strong> „werden“ geprüft werden. Ein Beispiel für<br />

eine ungenaue Formulierung ist, „Der Benutzer gibt etwas ein.“ Die Frage ist, was er eingibt,<br />

z. B. seinen Namen. Daher könnte das Kritiksysteme nach Wörtern wie „etwas“ oder<br />

„jemand“ suchen.


5.2 Erfahrungen für <strong>Use</strong> Case Attribute<br />

21. „Validieren“ ist besser als „Prüfen ob“.<br />

Eine der wichtigsten Fragen ist stets, was das eigentliche Ziel ist. Zum Beispiel ist ein Ziel bei<br />

einer Benutzereingabe, dass die Daten korrekt sind. Es muss also validiert werden ob bspw.<br />

eine E-Mail Adresse gültig ist. Bei Aktionen die etwas prüfen, bleibt das eigentliche Ziel<br />

verborgen. Was ist bspw. wenn eine E-Mail Adresse geprüft wurden ist? Läuft das Szenario<br />

weiter, auch wenn die Adresse fehlerhaft ist? Das Haupterfolgszenario beschreibt<br />

ausschließlich den Weg im Erfolgsfall, also den Fall, wenn etwas positiv validiert wird. Sollte<br />

die Validierung fehlschlagen, so ist dieses unter den Erweiterungen aufzuführen.<br />

Strategie für das Kritiksystem: Das Kritiksystem kann hier nach dem Schlüsselwort<br />

„prüfen“ in allen Formen suchen.<br />

22. Schritte in der Form „wenn … dann …“ sind Erweiterungen.<br />

Wenn Bedingungen erfüllt sein müssen, so dass ein Schritt ausgeführt wird, hat man in der<br />

Regel eine optionale Erweiterungen vorliegen. Erweiterungen haben im Hauptszenario nichts<br />

zu suchen, da sie den eigentlichen Ablauf im Erfolgsfall stören. Die Behandlung <strong>von</strong><br />

Ausnahmebehandlungen stört ebenfalls den Fluss des Hauptszenarios <strong>und</strong> gehört daher auch<br />

zu den Erweiterungen.<br />

Strategie für das Kritiksystem: Es soll eine Kritik angezeigt werden, wenn Wörter wie<br />

„wenn“ oder „falls“ in der Aktion zu finden sind.<br />

23. Wiederholung <strong>von</strong> Schritten sollten am Ende dieser Schritte angeführt<br />

werden.<br />

Ein Szenario ist leichter zu lesen, wenn die wiederholbaren Schritte zunächst geschrieben<br />

werden <strong>und</strong> mit einen weiteren Schritt in der Art „Benutzer wiederholt Schritte 3-5 solange,<br />

bis …“ abgeschlossen werden. Wird nur ein einziger Schritt wiederholt, kann die Angabe im<br />

Schritt selbst erfolgen.<br />

Strategie für das Kritiksystem: Das Kritiksystem könnte versuchen dieses sicherzustellen,<br />

indem es nach dem Wort „wiederholen“ in Kombination mit einer Schrittnummer sucht. Das<br />

sichere Finden solcher Fälle ist aber schwierig <strong>und</strong> kann gegebenenfalls sogar gar nicht zu<br />

treffen. Daher wurde diese Überprüfung nicht umgesetzt.<br />

24. In einem Szenario können <strong>Use</strong> Cases eingeb<strong>und</strong>en werden.<br />

Im Szenario können auch komplette <strong>Use</strong> Cases als einen Schritt stehen. Das Szenario springt<br />

dann zeitweise in den verlinkten <strong>Use</strong> Case <strong>und</strong> nach dessen Durchlauf wieder <strong>zur</strong>ück. Das<br />

Einbinden <strong>von</strong> <strong>Use</strong> Cases hat den Vorteil, dass Szenarios übersichtlicher werden. Wenn der<br />

eingeb<strong>und</strong>ene <strong>Use</strong> Case eine Unterfunktion ist, die <strong>von</strong> mehreren <strong>Use</strong> Cases aufgerufen<br />

werden, hat dies zu dem den Vorteil, dass das Szenario nur einmal aufgeschrieben wird <strong>und</strong><br />

somit auch weniger Verwaltungsaufwand verursacht.<br />

Strategie für das Kritiksystem: Das Kritiksystem sollte hier überprüfen, ob die Ebene des<br />

eingeb<strong>und</strong>enen <strong>Use</strong> Cases niedriger ist als die des aufrufenden <strong>Use</strong> Cases. Ein <strong>Use</strong> Case auf<br />

gleicher Ebene ist eigentlich nicht erlaubt. Da aber keine Zwischenebenen ausgewählt werden<br />

51


52<br />

5. Erfahrungssammlung<br />

können, soll dieses hier erlaubt werden. Man stelle sich in so einen Fall einfach vor, dass<br />

dieser Sub <strong>Use</strong> Case geringfügig unter dem Super <strong>Use</strong> Case liegt.<br />

25. Erweiterungen sind mögliche Fehler <strong>und</strong> optionale Pfade.<br />

Zunächst sollte das Hauptszenario komplett aufgeschrieben werden. Mit einem Brainstorming<br />

kann man überlegen, was alles schief laufen kann. Hat man alle möglichen Fälle, können<br />

eventuell einige zusammengefasst werden <strong>und</strong> schließlich können die dazugehörigen<br />

Szenarios aufgeschrieben werden. Es muss klar gestellt sein, mit welchen Schritt im<br />

Hauptszenario angeknüpft wird oder ob der <strong>Use</strong> Case komplett fehlschlägt. Eine Abdeckung<br />

aller möglichen Fehler trägt zum Bau eines robusten Systems bei. Daher ist es sehr wichtig,<br />

dass alle Erweiterungen aufgedeckt werden. Diese sind zum Beispiel alternative Pfade,<br />

falsches Verhalten, falsche Eingaben, Time-outs, fehlende Ressourcen oder Systemabstürze.<br />

Spätere Änderungen in der Implementierungsphase sind teuer. Erweiterungen können<br />

ebenfalls erweitert werden, das allerdings schnell unübersichtlich wird. Daher sollte man<br />

diese in einen weiteren <strong>Use</strong> Case auslagern. Wenn man zu viele Erweiterungen hat, sollte man<br />

sich überlegen, ob man nicht einige zusammenfassen kann oder eine Auslagerung in einem<br />

Unter <strong>Use</strong> Case vornehmen kann.<br />

Strategie für das Kritiksystem: Das Kritiksystem kann eine Warnung geben, wenn es zu<br />

viele Erweiterungen gibt <strong>und</strong> empfehlen, einen Unter <strong>Use</strong> Case anzulegen oder Erweiterungen<br />

zusammenzufassen. Ein <strong>Use</strong> Case kann in der Regel immer irgendwo schief laufen, daher soll<br />

auch eine Warnung ausgesprochen werden, wenn ein <strong>Use</strong> Case keine Erweiterung besitzt.<br />

26. Eventuell sind die Details für einen Fehlschlag uninteressant.<br />

Möglicherweise blähen Detailbeschreibungen die Erweiterungen nur unnötig auf.<br />

Beispielsweise kann es irrelevant sein, ob der Benutzer keine Schreibrechte oder nicht genug<br />

Speicher hat, wichtig ist eventuell nur, dass das Schreiben einer Datei fehlgeschlagen ist.<br />

Strategie für das Kritiksystem: Wenn ein Schritt sehr oft erweitert wird, soll das<br />

Kritiksystem warnen <strong>und</strong> vorschlagen, die Erweiterungen zusammenzufassen.<br />

27. Ein System muss die Bedingungen prüfen können.<br />

Das System muss die Erweiterungsbedingungen überprüfen können. Beispielsweise ist eine<br />

Bedingung wie „Der Benutzer hat seine PIN vergessen“ nicht prüfbar. Richtiger wäre da der<br />

Ablauf eines Timers: „Der Benutzer hat nach 60 Sek<strong>und</strong>en keine Eingabe getätigt.“<br />

28. Ein gemeinsames Subverhalten mehrerer <strong>Use</strong> Cases gehört in einen<br />

einzelnen <strong>Use</strong> Case.<br />

Es bringt wenig, gleiche Erweiterungen <strong>und</strong> Subverhalten in jeden <strong>Use</strong> Case red<strong>und</strong>ant<br />

aufzuführen. Dies erhöht den Verwaltungsaufwand unnötig <strong>und</strong> birgt das Risiko der<br />

Inkonsistenz. Daher sollte in solchen Fällen ein <strong>Use</strong> Case geschrieben werden, dass als<br />

Funktion aufgerufen werden kann. So lässt sich ein gemeinsames Subverhalten erkennen <strong>und</strong><br />

spart bei der Implementierung Zeit. Sollte sich eine Änderung ergeben, muss sie nur an einer<br />

Stelle durchgeführt werden.


5.2 Erfahrungen für <strong>Use</strong> Case Attribute<br />

29. Variationen haben das gleiche Ziel, verwenden aber unterschiedliche Mittel.<br />

Ein Ziel, zum Beispiel „Ware bezahlen“ kann auf unterschiedlichen Wegen erreicht werden.<br />

Idealerweise wird das Ziel nur auf einer abstrakten Ebene beschrieben. Unter Variationen<br />

werden die unterschiedlichen Mittel dann explizit aufgelistet, also zum Beispiel „Bar,<br />

Einzugsermächtigung oder Kreditkarte“. Variationen haben kein Szenario, da lediglich die<br />

Art <strong>und</strong> nicht der Weg der Variation interessant ist.<br />

30. Die Priorität zeigt die Wichtigkeit des <strong>Use</strong> Cases.<br />

Mit der Angabe einer Priorität kann festgehalten werden, wie wichtig ein <strong>Use</strong> Case für das<br />

Projekt ist, bzw. wie wichtig eine Funktionalität für den K<strong>und</strong>en ist. Je höher die Priorität ist,<br />

desto eher sollte sie implementiert werden. <strong>Use</strong> Cases mit sehr niedriger Priorität könnten bei<br />

Zeitnot entfallen.<br />

Strategie für das Kritiksystem: Wenn ein <strong>Use</strong> Case im Hauptszenario als Funktion<br />

eingeb<strong>und</strong>en wird, läuft ein Szenario ohne die Implementierung dieser Funktion nicht.<br />

Folglich muss die Priorität mindestens so hoch sein wie eines der aufrufenden <strong>Use</strong> Cases.<br />

Wird hingegen ein <strong>Use</strong> Case als Erweiterung eingeb<strong>und</strong>en, so ist sie möglicherweise optional<br />

<strong>und</strong> darf somit nicht wichtiger als der aufrufende <strong>Use</strong> Case sein.<br />

31. Die Performance gibt die Durchlaufsdauer eines <strong>Use</strong> Cases an.<br />

Die Durchlaufsdauer eines <strong>Use</strong> Cases kann unter einer Sek<strong>und</strong>e liegen, oder sogar mehrere<br />

Monate in Anspruch nehmen. Daher kann es nützlich sein, sich darüber im Klaren sein. Denn<br />

wenn ein <strong>Use</strong> Case mehrere Tage dauert, ist vielleicht eine Session notwendig.<br />

32. Die Verwendungshäufigkeit spiegelt die Wichtigkeit des <strong>Use</strong> Case wieder.<br />

Wird ein <strong>Use</strong> Case laufend verwendet, ist diese Funktion vermutlich wichtiger als ein <strong>Use</strong><br />

Case, der nur einmalig verwendet wird. Wer Klarheit über die Verwendungshäufigkeit hat,<br />

kann die Wichtigkeit eines <strong>Use</strong> Case besser bestimmen.<br />

Strategie für das Kritiksystem: Sollte ein <strong>Use</strong> Case sehr oft verwendet werden, aber nur<br />

eine geringe Priorität besitzen, ist etwas eventuell nicht korrekt. Ähnlich verhält es sich, wenn<br />

ein wichtiger <strong>Use</strong> Case zu selten genutzt wird. In diesen Fällen muss das Kritiksystem dieses<br />

durch eine Warnung hervorheben.<br />

53


54<br />

6. Tool<br />

6.1 Beschreibung <strong>von</strong> Schnittstellen <strong>und</strong> Erweiterungsstellen<br />

Bei der Planung <strong>und</strong> Implementierung des Tools wurde auf Erweiterbarkeit geachtet, so dass<br />

Weiterentwicklungen ohne bzw. nur mit wenigen Änderungen des bestehenden Systems<br />

erfolgen können. Teilweise wurde die Erweiterbarkeit bereits soweit vorbereitet, dass dies<br />

über die grafische Oberfläche erfolgen kann.<br />

6.1.1 Das <strong>Use</strong> Case Template<br />

Es ist ohne großen Aufwand möglich, beliebige weitere <strong>Use</strong> Case Attribute über die Grafische<br />

Benutzeroberfläche anzulegen. Sofern keine Auswahlbeschränkung angegeben wird, erscheint<br />

im Formular ein Textfeld, über das ein beliebiger Text eingegeben werden kann. Wird eine<br />

Auswahlbeschränkung vorgenommen, so erscheint ein Drop-Down-Menu, über das die durch<br />

Komma getrennten Elemente ausgewählt werden können. Auf dieser Weise kann bereits eine<br />

Vielzahl <strong>von</strong> zusätzlichen Attributen verwendet werden. Das <strong>Use</strong> Case Modell lässt dabei<br />

jedoch auch beliebige Objekte zu. Sollte ein komplexeres Objekt als eine Zeichenkette mit<br />

oder ohne Auswahlbeschränkung abgespeichert werden, muss der Quellcode erweitert<br />

werden. Bei einem Attribut mit tabellarischem Charakter kann die Klasse<br />

<strong>Use</strong>CaseTablePanel erweitert werden. Sie verfügt über Buttons, um neue Zeilen<br />

hinzuzufügen, Zeilen zu löschen <strong>und</strong> Zeilen zu verschieben. Bei Bedarf können weitere<br />

Buttons eingefügt werden. Die Methoden setData <strong>und</strong> getData müssen erweitert werden,<br />

um einen neuen Datentyp in der Tabelle darzustellen bzw. eingegebene Daten wieder ins<br />

Modell zu übernehmen.<br />

6.1.2 Die Erfahrungsbasis<br />

Wie bereits in Kapitel 4.5.3 beschrieben, ist auch das Erfahrungsmodell auf eine beliebige<br />

<strong>und</strong> ständige Erweiterung ausgelegt. Es können nicht nur neue Erfahrungen eingefügt werden,<br />

sondern auch bestehende können kommentiert werden. Dies kann in beiden Fällen über die<br />

grafische Oberfläche erfolgen, wobei der Benutzer bei einer neuen Hilfe den Kontext<br />

angegeben muss <strong>und</strong> bei bestehenden Hilfen <strong>und</strong> Kritiken der Bezug <strong>zur</strong> erweiterten<br />

Erfahrung erhalten bleibt. Auf dieser Weise bleibt auch während der Evolutionary Growth (s.<br />

Kapitel 2.10) die Erfahrungsbasis einigermaßen ordentlich. Dies ist unbedingt notwenig, da<br />

bei einer ungeordneten Erfahrungsbasis die Relevanz <strong>und</strong> Wichtigkeit deutlich schwerer<br />

sicherzustellen ist. Darüber hinaus wird dem Erfahrungsingenieur bei einem Reseeding viel<br />

Arbeit abgenommen.<br />

Der Austausch <strong>von</strong> Erfahrungen soll zunächst manuell erfolgen. Dazu kann der Benutzer über<br />

die grafische Benutzeroberfläche mehrere Erfahrungsbasen laden <strong>und</strong> das System übernimmt<br />

dabei neue Erfahrungen <strong>und</strong> ergänzt noch nicht vorhandene Erweiterungen selbständig.


6.1 Beschreibung <strong>von</strong> Schnittstellen <strong>und</strong> Erweiterungsstellen<br />

Neue Kritiken können ebenfalls hinzugefügt werden, wobei das bestehende Modell in keiner<br />

Weise geändert werden muss. Der Erfahrungsingenieur muss eine Klasse schreiben, die das<br />

Interface CriticChecker implementiert. Die Klasse muss über einen parameterlosen<br />

Konstruktor <strong>und</strong> die Methoden setParamString(String) <strong>und</strong><br />

checkForProject(Project) verfügen.<br />

Die erste Methode ist für optionale Parameter gedacht <strong>und</strong> kann beispielsweise für eine<br />

individuelle Konfiguration des Kritiküberprüfers verwendet werden. Auf diese Weise kann<br />

die Klasse dynamisch geändert werden, ohne dass sie umgeschrieben werden muss. Dies ist<br />

zum Beispiel nützlich, wenn in einem Fall neun Schritte im Szenario als Maximum angesehen<br />

werden, in einem anderen Projekt aber zwölf. Eine Schlüsselwortsuche ist in der Regel<br />

sprachabhängig. Wo im Deutschen nach „klicken“ gesucht werden muss, muss im Englischen<br />

nach „click“ gesucht werden. Wäre diese Methode nicht vorhanden, müsste für<br />

unterschiedliche Projekte <strong>und</strong> unterschiedliche Sprachen eine eigene Klasse geschrieben<br />

werden, obwohl sie sich im Verhalten nicht unterscheiden. Die Eingabe <strong>von</strong> Parameter erfolgt<br />

über die Grafische Benutzeroberfläche.<br />

Die zweite Methode, checkForProject(Project), übernimmt schließlich die<br />

Überprüfung für das übergebene Projekt. Dabei sollte sie für jede gef<strong>und</strong>ene Stelle ein<br />

ContextObject erzeugen <strong>und</strong> alle gef<strong>und</strong>enen Stellen am Ende <strong>zur</strong>ückgeben. Zur<br />

Verdeutlichung soll im Folgenden eine Beispielimplementierung gezeigt <strong>und</strong> besprochen<br />

werden. Es soll überprüft werden, ob das Szenario mehr als neun Schritte hat.<br />

Listing 1: Beispielimplementierung des CriticCheckers<br />

55


56<br />

6. Tool<br />

Die Zeilen 1-11 zeigen die Methode setParameter. Wie der Parameter-String aufgebaut<br />

wird, ist letztendlich Sache des Implementierers. Es wird jedoch empfohlen, eine leserliche<br />

Strukturierung vorzunehmen, woraus hervorgeht, welche Bedeutung einzelne Werte haben,<br />

zum Beispiel in der Form<br />

stepcount=9;parameter2=wertxy;<br />

Über die statische Hilfsmethode Utilities.getParameterFromString, die auch für<br />

zukünftige Implementierungen genutzt werden kann, wird der gewünschte Parameter<br />

extrahiert. Schließlich wird versucht, den Pater in eine Zahl umzuwandeln. Sollte die<br />

Umwandlung schief gehen, wird nur eine Ausgabe in die Konsole geschrieben. Es wäre<br />

überaus ärgerlich, wenn der Benutzer dazu eine Fehlermeldung zu Gesicht bekommt, da er<br />

damit nichts anfangen kann bzw. die Implementierung nur schwer ändern kann. Es ist auch<br />

ärgerlich, wenn er wiederholt eine solche Meldung erhält <strong>und</strong> bei der Arbeit gestört wird.<br />

Lediglich der geschulte Benutzer oder der Erfahrungsingenieur interessiert sich für so eine<br />

Meldung. Es sollte daher darauf geachtet werden, dass der Wert in der Implementierung einen<br />

Standardwert hat.<br />

Die eigentlich interessante Methode ist die nächste in den Zeilen 13-35. Da mehrere Stellen<br />

während der Überprüfung gef<strong>und</strong>en werden können, wird ein Vector angelegt, der die<br />

Zwischenspeicherung übernimmt. In Zeile 16 werden alle <strong>Use</strong> Cases genommen <strong>und</strong> jeweils<br />

einzeln überprüft. Zeile 18-19 holt sich das gewünschte Attribut, also das<br />

Haupterfolgsszenario. Es muss auf null überprüft werden, da das Attribut eventuell<br />

deaktiviert sein könnte. Weiterhin muss der Value-Wert kontrolliert werden <strong>und</strong> ob er Instanz<br />

der erwarteten Klasse ist. In diesem Fall ist das Hauptszenario ein Attribut, dass auf jeden Fall<br />

existiert <strong>und</strong> auch eine erwartete Instanz ist. Für Implementierungen die andere Attribute<br />

betreffen, ist es aber durchaus möglich, dass dieser nicht vorkommt. Sollte diese Überprüfung<br />

fehlschlagen, also hat man das Attribut nicht gef<strong>und</strong>en, könnte man ggfs. den <strong>Use</strong> Case<br />

kritisieren, der nicht über ein benötigtes Attribut verfügt.<br />

In Zeile 23 erfolgt schließlich die Überprüfung, ob das Szenario mehr als die gewünschten<br />

Schritte, zum Beispiel neun, hat. In so einen Fall wird ein ContextObject erzeugt. Dabei<br />

wird der Pfad <strong>zur</strong> Stelle übergeben, nämlich das Projekt, der <strong>Use</strong> Case <strong>und</strong> das fehlerhafte<br />

Szenario selbst. Bei einer Kritik, die zum Beispiel ein gesamtes Projekt betrifft, wird lediglich<br />

das Projekt übergeben, die anderen Werte werden auf null gesetzt. Sollte eine Kritik einen<br />

Teil eines Attributes betreffen, also zum Beispiel einen Schritt, kann dieser über den vierten<br />

Parameter angegeben werden. In diesem Fall ist dieser jedoch null, da das Szenario<br />

fehlerhaft ist.<br />

Dieses erzeugte ContextObject wird dem am Anfang initialisierten Vector <strong>zur</strong><br />

Zwischenspeicherung übergeben. Es folgt die Überprüfung der weiteren <strong>Use</strong> Cases <strong>und</strong> für<br />

jedes gef<strong>und</strong>ene Szenario, dass mehr als die erlaubten Schritte hat, wird ein neues Objekt<br />

angelegt <strong>und</strong> zwischengespeichert. Am Ende werden die gef<strong>und</strong>enen Stellen <strong>zur</strong>ückgegeben.<br />

Es wurde bei der Implementierung auf Robustheit geachtet. So kann <strong>von</strong> ausgegangen<br />

werden, dass die übergebenen Parameter für beide Methoden nicht null sein kann, eine<br />

Überprüfung ist daher nicht erforderlich. Als Rückgabewert bei der Methode<br />

checkForProject wird ein ContextObject-Array erwartet. Wenn kein Kritikpunkt<br />

gef<strong>und</strong>en wurde, hat das Array idealerweise die Länge 0. Es ist aber auch ein null-Wert<br />

möglich, dieser wird <strong>von</strong> der aufrufenden Methode abgefangen.


6.1 Beschreibung <strong>von</strong> Schnittstellen <strong>und</strong> Erweiterungsstellen<br />

6.1.3 CriticChecker<br />

Das Schreiben einer eigenen Klasse, die das Interface CriticChecker implementiert, ist<br />

gegebenenfalls gar nicht notwendig. Möchte man beispielsweise eine Kritik anlegen, die nach<br />

Schlüsselwörtern in den Hauptszenario sucht, kann dazu die bestehende allgemeine Klasse<br />

WordMatcherForScenario verwendet werden. Sie nimmt einen Parameter entgegen die<br />

die Wörter, getrennt durch einen Komma, im Hauptszenario sucht. Dies ist ganz nützlich,<br />

denn der Benutzer braucht in so einen Fall keine neue Klasse zu schreiben <strong>und</strong> kann die Kritik<br />

direkt über die grafische Benutzeroberfläche eingeben.<br />

Auch bestehende Kritiken lassen sich durch ändern eines Parameters problemlos anpassen.<br />

Sollte man der Ansicht sein, dass ein Szenario 12 Schritte haben darf, muss dazu lediglich der<br />

Parameter geändert werden. Dies kann direkt in der GUI erfolgen, so dass der Benutzer keine<br />

neue Klasse schreiben muss.<br />

6.1.4 Der Assistent<br />

Der Assistent wurde durch einen JEditorPane mit einem HTMLEditorKit realisiert.<br />

Auf dieser Weise ist nicht nur eine fast beliebige Darstellung der Erfahrungen möglich,<br />

sondern die Anzeige ist auch erweiterbar. Beispielsweise können zusätzliche Links eingeführt<br />

werden, die beliebige Aktionen auslösen können. Dazu muss zum einen ein Link eingefügt<br />

werden, zum anderen die Methode hyperlinkUpdate erweitert werden. Als Konvention<br />

wurde festgelegt, dass diese Links mit einer Zeichenketten als Befehl anfangen, gefolgt <strong>von</strong><br />

einem Doppelpunkt <strong>und</strong> einen beliebigen Parameterstring. Beispielsweise sieht der Link, um<br />

die fünfte Erfahrung in der Anzeige zu erweitern, dann folgendermaßen aus: „extend:5“.<br />

Neben Links können in HTML natürlich auch Formularelemente eingeb<strong>und</strong>en werden, um<br />

beispielsweise eine Suche zu realisieren.<br />

6.1.5 Die Persistenzschicht<br />

Die Persistenzschicht ist durch eine eigene Speicherroute realisiert wurden. Es können<br />

beliebige Objekte gespeichert werden, die ein Interface DiscableObject implementieren.<br />

Dies ist zum Beispiel bei den Erfahrungen aber auch den <strong>Use</strong> Cases der Fall. Das Interface<br />

setzt die Methoden getClassName, getAttributes <strong>und</strong> setAttributes voraus.<br />

Die erste Methode liefert den Pfadnamen der Klasse, so dass eine Wieder-Instanzierung des<br />

Objekts möglich ist. Dabei wird ein Konstruktor erwartet, das eine java.util.Map als<br />

Parameter hat. In einer solchen Mappe werden die Key-Value-Beziehungen gespeichert. Die<br />

Schlüssewerte sind dabei Strings, die dazu abgelegten Werte entweder ebenfalls ein String,<br />

ein DiscableObject oder ein Array <strong>von</strong> DiscableObjecten. Die Methode<br />

getAttributes bzw. setAttributes müssen eine solche Mappe <strong>von</strong> Wertebeziehung<br />

erzeugen bzw. verarbeiten. Sollten also weitere Attribute oder Klassen angelegt werden, muss<br />

die Speicherroutine nicht erneut angefasst werden. Die Verarbeitung dieser Attribute müssen<br />

lediglich in den beiden Methoden hinzugefügt werden <strong>und</strong> eine neue Klasse die gespeichert<br />

werden soll, muss diese Methoden implementieren. Auf dieser ist eine Erweiterung möglich,<br />

ohne dass die Speicherung erweitert werden muss.<br />

57


58<br />

6. Tool<br />

Die Speicherroutine erzeugt dann eine XML-Datei, die die gespeicherten Objekte enthält.<br />

Dazu wird die Bibliothek <strong>von</strong> [Jdom06] verwendet, mit der eine leichte <strong>Erstellung</strong> <strong>von</strong> XML-<br />

Dateien möglich ist. Das Schema zu einem gespeicherten Projekt <strong>und</strong> das für die<br />

Erfahrungsbasis befinden sich im Anhang. Um die Projekt- <strong>und</strong> Erfahrungsverwaltung über<br />

den Server zu lösen, kann die Speicherroutine erweitert werden, so dass <strong>zur</strong> Übertragung auch<br />

XML verwendet werden kann.<br />

6.1.6 Mehrsprachigkeit<br />

Um die Mehrsprachigkeit zu gewährleisten, wurde eine Sprachdatei im XML-Format<br />

eingeführt, die sämtliche sprachspezifischen Titel enthält. So ist eine Übersetzung in andere<br />

Sprachen möglich, ohne das Programm selbst umschreiben zu müssen. Es wurde darauf<br />

geachtet, möglichst aussagekräftige Namen zu verwenden. Die Namen mögen zwar etwas<br />

lang erscheinen, so ist aber bei einer Bearbeitung eine eindeutige Identifizierung möglich. Bei<br />

einer Übersetzung darf nicht vergessen werden, dass auch die Erfahrungsbasis übersetzt<br />

werden muss.<br />

In einer Property-Datei werden auch andere Einstellungen wie das Datumsformat abgelegt. So<br />

ist es möglich, das Datum statt in der deutschen Schreibweise auch in eine beliebige andere<br />

Schreibweise zu formatieren. Auch hier muss das Programm nicht umgeschrieben werden.<br />

6.1.7 Export-Filter<br />

Das Exportieren, wo derzeit nur ein Export in HTML möglich ist, kann um weitere<br />

Dateiformate erweitert werden. Dazu wurde ein Interface ExportFilter geschrieben, dass<br />

über die Methoden getData <strong>und</strong> getFileSuffix verfügt. getData erhält als<br />

Parameter das gesamte Projekt <strong>und</strong> die zu exportierenden <strong>Use</strong> Cases <strong>und</strong> sollte diese in seinen<br />

Dateiformat darstellen. Die Daten gibt er als byte-Array <strong>zur</strong>ück, so dass auch binäre<br />

Formate möglich sind. getFileSuffix wird verwendet, wenn der Benutzer einen<br />

Dateinamen ohne Endung angegeben hat.<br />

Ein neuer Export-Filter muss also dieses Interface implementieren <strong>und</strong> sollte <strong>von</strong> der Klasse<br />

javax.swing.filechooser.FileFilter abgeleitet sein, die noch eine<br />

Implementierung der abstrakten Methoden accept <strong>und</strong> getDescription benötigt,<br />

accept um zu überprüfen, ob eine übergebene Datei akzeptiert wird, getDescription<br />

um einen benutzerfre<strong>und</strong>lichen Namen zu vergeben. So ist es dann insgesamt möglich, den<br />

neu geschriebenen Filter dem Fenster zu übergeben, über welches der Benutzer einen<br />

Speicherort <strong>und</strong> Dateinamen wählen kann <strong>und</strong> wo der Benutzer nun das gewünschte Format<br />

auswählen kann.<br />

6.2 Kurze Benutzereinführung<br />

Wie im Entwurf bereits beschrieben besteht die Oberfläche aus verschiedenen Bereichen. Im<br />

linken Bereich wird das Projekt mit seinen <strong>Use</strong> Cases dargestellt. Im Zentrum findet die


6.2 Kurze Benutzereinführung<br />

Bearbeitung eines geöffneten <strong>Use</strong> Cases statt. Im oberen rechten Bereich ist eine grafische<br />

Visualisierung des aktuellen <strong>Use</strong> Cases zu sehen. Der Assistent gibt im unteren rechten<br />

Bereich Hilfestellungen <strong>und</strong> erklärt verschiedene Probleme. Eine Zusammenfassung aller<br />

Probleme ist im ProblemView direkt unter der Konstruktion zu finden. Alle Bereiche, also<br />

auch der Assistent <strong>und</strong> die ProblemView lassen sich auf Wunsch ausblenden.<br />

Der Projektbaum<br />

Abbildung 24: Die Grafische Benutzeroberfläche<br />

Im Projektbaum können <strong>Use</strong> Cases durch Auswählen <strong>zur</strong> Bearbeitung geöffnet werden. Es<br />

öffnet sich ein Formular bzw. das bereits geöffnete Formular wird mit den Daten des<br />

ausgewählten <strong>Use</strong> Cases ausgefüllt. Mit dem Auswählen eines Attributs lässt sich direkt zum<br />

Attribut springen, dabei wird das Formular automatisch gescrollt.<br />

Mit der rechten Mautaste lassen sich neue <strong>Use</strong> Cases anlegen bzw. bestehende löschen. Auch<br />

das Sortieren ist möglich. Dazu kann zwischen den Attributen „<strong>Use</strong> Case ID“, „Titel“,<br />

„Ebene“, „Status“ <strong>und</strong> „Priorität“ gewählt werden, wobei die ersten beiden alphanumerisch<br />

sortiert werden, die übrigen nach der Reihenfolge der auswählbaren Werte im Formular.<br />

Im Projektbaum erfolgt auch die Markierung <strong>von</strong> fehlerhaften <strong>Use</strong> Cases bzw. Attribute.<br />

Dazu werden ähnlich wie in Eclipse ([Ecl06]) entsprechende Icons an den Knoten gesetzt <strong>und</strong><br />

zwar so, dass zum Fehler navigiert werden kann.<br />

59


60<br />

Das Formular<br />

6. Tool<br />

Die Bearbeitung des <strong>Use</strong> Cases erfolgt in einen Formular. Dazu werden die zuvor<br />

geschriebenen Werte geladen <strong>und</strong> angezeigt. Der Benutzer kann bestehende Texte frei<br />

editieren <strong>und</strong> im Falle eines Auswahlfeldes eine andere Option auswählen. Die Stakeholder,<br />

Szenarios, sowie die Variationen werden in einer Tabelle dargestellt. Über die Buttons auf der<br />

rechten Seite kann der Benutzer weitere Akteure, Schritte bzw. Variationen einfügen, löschen,<br />

oder verschieben. Des Weiteren lässt sich im Falle des Hauptszenarios ein bzw. mehrere<br />

Schritte erweitern, oder ein <strong>Use</strong> Case verlinken. Durch Drücken der Shift-Taste <strong>und</strong> anklicken<br />

eines eingeb<strong>und</strong>enen <strong>Use</strong> Case kann man zum verlinkten <strong>Use</strong> Case springen.<br />

Auf Gr<strong>und</strong> der Übersichtlichkeit lassen sich sie die Erweiterungen ein- <strong>und</strong> ausklappen. Im<br />

ersten Feld wird der referenzierte Schritt angegeben <strong>und</strong> im darauf folgenden Feld lässt sich<br />

die Bedingung angeben. Es kann ein Szenario angegeben werden, wenn die Erweiterung<br />

ausgeklappt ist. Eine Erweiterung lässt sich durch das Icon neben der Bedingung entfernen.<br />

Eine weitere Besonderheit stellen die Dateianhänge dar. Beim Hinzufügen eines<br />

Dateianhanges wird die ausgewählte Datei in einen Ordner kopiert. Dieser Ordner befindet<br />

sich im gleichen wie die Projektdatei <strong>und</strong> trägt den gleichen Namen dieser Datei gefolgt <strong>von</strong><br />

einem „_attachments“. Beim Kopieren des Projekts auf einen anderen Datenträger, muss<br />

dieser mitkopiert werden, da die Dateianhänge sonst verloren gehen. Die Dateianhänge lassen<br />

sich durch gedrückter Shift-Taste <strong>und</strong> anklicken des Anhangs direkt öffnen (Vorraussetzung<br />

ist Windows XP).<br />

Auch im Formular werden Fehler <strong>und</strong> Warnungen durch entsprechende Icons an den<br />

Attributen angezeigt.<br />

Overview<br />

Im so genannten Overview wird der <strong>Use</strong> Case grafisch dargestellt. Dazu werden auch die<br />

verlinkte <strong>Use</strong> Cases angezeigt, die durch einen Doppelklick geöffnet werden können<br />

Assistent<br />

Der Assistent zeigt je nach Kontext die entsprechenden Hilfestellungen, Warnungen <strong>und</strong><br />

Fehler an. Bearbeitet man beispielsweise gerade den Titel, so werden nur Erfahrungen<br />

angezeigt, die dazu nützlich sein könnten. Der Assistent zeigt nur einen Teaser an. Möchte<br />

man mehr wissen, muss man auf den entsprechenden Link drücken. Der Assistent erläutert<br />

daraufhin die Erfahrung ausführlicher <strong>und</strong> gibt gegebenenfalls Hilfestellungen, die beim<br />

Lösen des Problems helfen sollen.<br />

Ist der Benutzer mit der Erfahrung nicht einverstanden bzw. hat selbst Erfahrungen gemacht,<br />

so kann er die bestehende Erfahrung kommentieren. Dazu kann er eine Kurzbeschreibung <strong>und</strong><br />

eine ausführliche Erläuterung eingeben. Diese werden dann unter der bestehenden angezeigt.<br />

Sollte eine Erfahrung nicht nützlich sein, so hat der Benutzer die Möglichkeit, diese für einen<br />

<strong>Use</strong> Case oder für alle Fälle zu ignorieren.<br />

Eventuell gibt es mehrere Erfahrungen. Daher kann er durch die entsprechen Buttons unter<br />

der Anzeige <strong>zur</strong> der nächsten springen bzw. wieder <strong>zur</strong>ück navigieren.


6.2 Kurze Benutzereinführung<br />

Die ProblemView<br />

Die Problemsicht fasst alle Probleme im Projekt zusammen. Der Benutzer kann durch die<br />

Kurzbeschreibung erkennen, um was für ein Problem es sich handelt <strong>und</strong> durch Angabe des<br />

<strong>Use</strong> Cases <strong>und</strong> des Attributes wo der Fehler ist. Durch einen Doppelklick kann er direkt zum<br />

Fehler springen. Durch Anklicken der Spaltennamen können die Kritiken nach Art<br />

(Fehler/Warnung), Kurzbeschreibung, <strong>Use</strong> Case oder Attributname sortiert werden.<br />

Das Menu<br />

Im Datei-Menu kann der Benutzer ein neues Projekt anlegen, ein Projekt laden, oder ein<br />

geöffnetes speichern. Auch das Exportieren ist möglich, wobei er zunächst die gewünschten<br />

<strong>Use</strong> Cases <strong>und</strong> dann ein Format auswählen kann. Derzeit wird jedoch nur HTML unterstützt.<br />

Das <strong>Use</strong> Case Diagramm in der grafischen Übersicht kann als Bild im JPEG-Format<br />

exportiert werden. Über Beenden kann das Programm geschlossen werden.<br />

Über das Bearbeiten-Menu sind die aus anderen Standardanwendungen gewohnten<br />

Funktionen wie Ausschneiden, Kopieren <strong>und</strong> Einfügen möglich. Ferner kann der Benutzer<br />

<strong>Use</strong> Cases in die Zwischenablage kopieren <strong>und</strong> in Anwendungen wie Word, OpenOffice oder<br />

Mozilla Composer einfügen.<br />

Unter Projekt kann der Benutzer neue <strong>Use</strong> Cases anlegen, Titel <strong>und</strong> Beschreibung des<br />

Projekts ändern <strong>und</strong> das Template bearbeiten. Bei einer Bearbeitung des Templates kann der<br />

Benutzer bestehende Attribute deaktivieren, neue hinzufügen <strong>und</strong> wieder löschen, sowie die<br />

Reihenfolge ändern. Gibt der Benutzer eine Auswahlbeschränkung ein, so ist bei der<br />

Bearbeitung der <strong>Use</strong> Cases nur eine Auswahl zwischen den angegebenen Optionen möglich.<br />

Ferner kann sich der Benutzer über das Projekt-Menu die letzten Änderungen bzw. die<br />

Änderungen seit einem freidefinierbaren Zeitpunkt anzeigen lassen. Dazu werden die<br />

Änderungen im Projektbaum hervorgehoben.<br />

Die Erfahrungsbasis lässt sich über Einstellungen bearbeiten. Die Erfahrungen werden dazu<br />

mit Icon in einer Liste angezeigt <strong>und</strong> sofern Kommentare verfügbar sind, werden sie unter<br />

den Erfahrungen baumartig angehängt. Durch einen Doppelklick lässt sich eine Erfahrung im<br />

Detail anzeigen <strong>und</strong> editieren. Über die Buttons auf der rechten Seite können neue<br />

Erfahrungen hinzugefügt, (de-) aktiviert, angezeigt <strong>und</strong> gelöscht werden. Es lassen sich neue<br />

Erfahrungen einspielen <strong>und</strong> die eigene Erfahrungsbasis exportieren.<br />

61


62<br />

7. Ausblick<br />

Eine Software ist nie fertig <strong>und</strong> dies gilt für Domainorientierte Entwurfsumgebungen umso<br />

mehr. Denn die Erfahrungsbasis weist bisher nur einen Gr<strong>und</strong>schatz auf. Ob diese<br />

Erfahrungen nützlich sind, kann erst durch die Nutzung in der Praxis festgestellt werden,<br />

wodurch neue Erfahrungen entstehen <strong>und</strong> die Erfahrungsbasis weiter wächst.<br />

Die Bewertung der Erfahrungen beruht derzeit auf einen statischen Wert. Es machte zum<br />

derzeitigen Zeitpunkt wenig Sinn, eine Bewertung aus anderen Quellen zu beziehen. Sollte<br />

das Tool jedoch um eine Serverkomponente erweitert werden, das den Austausch der<br />

Erfahrungen übernimmt, wäre die Einführung einer Erfahrungsbewertung vorteilhaft, über die<br />

dann eine dynamische <strong>und</strong> sicherlich praxistauglichere Relevanzbestimmung erfolgen kann.<br />

Die Einführung der Serverkomponente hätte auch den Vorteil, dass Erfahrungen leichter<br />

ausgetauscht werden können <strong>und</strong> alle Benutzer <strong>von</strong> den Erfahrungen anderer Benutzer<br />

profitieren können.<br />

Die Akzeptanz des Tools wurde bisher nur in einem kleinen Kreis getestet. In wie fern das<br />

Tool in umfangreichen Projekt Verwendung findet, soll <strong>von</strong> der Fachgruppe Software<br />

Engineering im Softwareprojekt herausgef<strong>und</strong>en werden.<br />

Die Erweiterung des Tools um eine Rechtschreibprüfung könnte auch vorteilhaft sein. Das<br />

Tool ermöglicht viele Funktionen die auch mit Word gelöst werden könnten, aber eine<br />

Überprüfung der Rechtschreibung fehlt. Die Integration in Eclipse könnte die Akzeptanz auch<br />

weiter steigen, da der Benutzer nicht mehrere Programme geöffnet haben muss.<br />

Sobald es auch die ersten fertig geplanten Projekte gibt, ist die Erweiterung um eine Suche<br />

nach ähnlichen <strong>Use</strong> Cases in Erwägung zu ziehen. Die Übernahme <strong>von</strong> wiederkehrenden<br />

Anforderungen aus alten Projekten stellt eine wesentliche Arbeitserleichterung dar. Es können<br />

dabei auch Fehlerbehandlungen übernommen werden, an die der Benutzer eventuell nicht<br />

gekommen wäre. Immer wiederkehrende <strong>Use</strong> Cases sind zum Beispiel „Einloggen“,<br />

„Ausloggen“, „Öffnen“, „Speichern“ oder „Drucken“. Natürlich müssen diese <strong>Use</strong> Cases<br />

kontrolliert <strong>und</strong> angepasst werden, da sie aus einem anderen Projekt stammen. Sicherlich hat<br />

man auch neue Einfälle oder hat Erfahrungen mit den alten <strong>Use</strong> Cases gemacht. Auf jeden<br />

Fall stellt diese Funktionalität eine nicht zu vergessene Zeitersparnis dar <strong>und</strong> der Benutzer<br />

kann sich auf andere wichtigere <strong>Use</strong> Cases konzentrieren.<br />

In der jetzigen Entwicklungsumgebung fehlt eine Simulationskomponente. Es wäre denkbar,<br />

aus den <strong>Use</strong> Cases ein grafisches Prozessmodell abzuleiten, das dann simuliert werden<br />

könnte. Eventuell ließe sich aus den erstellten <strong>Use</strong> Case diverse Metriken berechnen, um zu<br />

sehen, ob die Planung qualitativ gut ist. Diese Metriken könnten dann auch dazu verwendet<br />

werden, um herauszufinden, ob eine andere Lösung besser ist als die bestehende. Idealerweise<br />

würde das System selbständig verschiedene Varianten untersuchen <strong>und</strong> den Benutzer dann<br />

eine Empfehlung geben. Mit Hilfe der <strong>Use</strong> Case Point Methode ließe sich bspw. die<br />

Realisierungskosten berechnen, so dass eine bessere Unterstützung im Entwicklungsprozess<br />

erzielt werden könnte.


8. Fazit<br />

Zu Beginn dieser Arbeit wurde eine Einführung in die Problematik gegeben. Es wurde u. a.<br />

erklärt, was <strong>Use</strong> Cases sind <strong>und</strong> was Erfahrungen <strong>und</strong> Kritik sind. Die Nutzung <strong>und</strong><br />

Weitergabe <strong>von</strong> Erfahrungen wurde durch einen Kreislauf verdeutlicht. Darauf aufbauend<br />

wurde eine Einführung in Benutzer-Unterstützungssystemen gegeben, woraus sich dann die<br />

Domainorientierten Entwurfumgebungen, ableiten lies. Ein wesentliches Merkmal dieser<br />

speziellen Benutzer-Unterstützungssysteme ist das SER-Prozessmodell, in der der<br />

Erfahrungsschatz laufend erweitert <strong>und</strong> verbessert wird.<br />

Im Folgenden wurde gezeigt, wie Erfahrungen helfen können, Anforderungen besser zu<br />

erheben. Dazu wurde aufbauend auf Domainorientierte Entwurfsumgebungen ein System<br />

konzipiert, das Hilfestellungen gibt ohne den Benutzer bei der Arbeit zu stören. Dabei wurde<br />

auch untersucht, wie andere Anwendungen dieses Problem lösen. Es wurde eine kleine<br />

Erfahrungsbasis geschaffen, das als Saat des Erfahrungskreislaufes dient. Die Einhaltung<br />

dieser Erfahrungen soll durch ein Kritiksystem gewährleistet werden. Dazu wurden<br />

Möglichkeiten vorgestellt, wie das Kritiksystem Mängel feststellen kann.<br />

Das Kritiksystem analysiert die Arbeit des Software Ingenieurs laufend <strong>und</strong> zeigt weniger<br />

gute Stellen auf mehrere Weisen an. Ein Assistent erklärt Kritiken <strong>und</strong> gibt verschiedene<br />

Lösungsmöglichkeiten. Der Benutzer, der nur einen beschränkten Überblick über das Projekt<br />

hat <strong>und</strong> nicht immer auf alles achten kann, wird dabei in seiner Arbeit unterstützt. Das<br />

limitierte Wissen wird durch die Erfahrung anderer Benutzer erweitert, so dass der Benutzer<br />

insgesamt auf einen größeren Erfahrungsschatz <strong>zur</strong>ückgreift als ein einzelner Nutzer. Ferner<br />

wird bei der Bearbeitung auch ein Lernprozess durchlaufen. Gerade Unerfahrene können so<br />

vom Wissen anderer profitieren.<br />

Zurückblickend kann man sagen, dass mit Benutzerunterstützungssystemen sehr viel möglich<br />

ist. Die Unterstützung des Benutzers <strong>und</strong> die Usability kann ins Unendliche getrieben werden,<br />

was letztendlich auch zu Verzögerungen in der Fertigstellung des Tools führten. Auf Gr<strong>und</strong><br />

der Zeitbegrenzung musste daher leider auf sehr viele Funktionen verzichtet werden. Da das<br />

Tool aber auf Erweiterungen ausgelegt wurde, können diese in einer späteren Entwicklung<br />

nachgeholt werden.<br />

Auf Gr<strong>und</strong> der Komplexität <strong>und</strong> Schwierigkeit einer Domainorientierten Entwurfsumgebung<br />

könnte die Befürchtung <strong>von</strong> Ning [Nin94] eintreten. Durch gute Planung <strong>und</strong> Anwendung<br />

modernster Techniken kann jedoch ein Scheitern entgegen gewirkt werden. Die Umsetzung<br />

einer Domainorientierten Entwurfsumgebung lohnt sich auf jeden Fall, da in einen solchen<br />

System Fehler <strong>und</strong> mögliche Probleme frühzeitig entdeckt werden. Je früher Missstände<br />

gef<strong>und</strong>en werden, desto einfacher <strong>und</strong> günstiger ist eine Korrigierung. Mit dem umgesetzten<br />

Tool können Fehler bereits vor den ersten Reviews aufgedeckt werden. Das Tool minimiert<br />

dabei die Distanz zwischen Benutzer <strong>und</strong> Entwurfsumgebung, da es selbständig Erfahrungen<br />

heraussucht <strong>und</strong> nur relevante anzeigt. Man kann auf das Wissen <strong>und</strong> die Erfahrungen anderer<br />

Entwickler <strong>zur</strong>ückgreifen <strong>und</strong> so insgesamt bessere Ergebnisse erzielen.<br />

Daher lassen sich auch die Befürchtungen <strong>von</strong> Sutcliffe in [Sut94] entkräften. Das Ergebnis<br />

eines Artefakts, dass in einer Domainorientierten Entwurfsumgebung geschaffen wurde, hier<br />

also eines <strong>Use</strong> Cases, ist zweifelsfrei besser. Ein Benutzer ist nur ein Mensch <strong>und</strong> macht<br />

Fehler oder kann den einen oder anderen Fehler übersehen. Durch ein System, das den<br />

Benutzer in seiner Arbeit unterstützt <strong>und</strong> dabei Fehler, aber auch mögliche Probleme<br />

63


64<br />

8. Fazit<br />

selbständig anzeigt, können diese zumindest minimiert werden. Durch den Zugriff auf die<br />

Erfahrungen anderer Benutzer lassen sich nicht nur bessere Ergebnisse erzielen, sondern auch<br />

die Qualität wird laufend gesteigert, weil die Softwareingenieure bei der Entwicklung den<br />

Erfahrungsschatz <strong>und</strong> damit auch ihren Wissensstand ständig erweitern.<br />

Insgesamt lässt sich sagen, dass die Erwartungen an das Tool erfüllt wurden. Dieses konnte<br />

durch eine kleine Umfrage (s. Anhang D) bei Softwareentwicklern belegt werden. Da nur 9<br />

Personen das Tool getestet haben, ist die Umfrage nicht sehr aussagekräftig. Die Personen<br />

haben sicherlich auch kein vollständiges Projekt geplant. Es lässt sich jedoch eine klare<br />

Tendenz erkennen. So waren sich alle einig mit dem Tool mindestens genau so gute oder<br />

bessere <strong>Use</strong> Cases zu schreiben. Die Mehrheit der Personen hatte den Eindruck, nicht mehr<br />

Zeit oder mehr Arbeit als üblich zu benötigen. Und einige würden das Tool sogar einsetzen.<br />

Auch die Usability konnte überprüft werden. Die Mehrheit der Benutzer konnte die<br />

Funktionen des Tools intuitiv finden. Mit der Darstellung der Kritiken <strong>und</strong> Hilfen waren alle<br />

zufrieden.


Abbildungsverzeichnis<br />

Abbildung 1: <strong>Use</strong> Case Diagramm: Bankautomat ..................................................................... 9<br />

Abbildung 2: <strong>Use</strong> Case Diagramm: Detaillierter Bankautomat................................................. 9<br />

Abbildung 3: Erfahrungskreislauf, vgl. [Sch00] <strong>und</strong> [Lir04]................................................... 14<br />

Abbildung 4: Erfahrungsweitergabe, vgl. [Buc05] .................................................................. 15<br />

Abbildung 5: Domainunabhängige Architektur, vgl. [Fis94].................................................. 18<br />

Abbildung 6: SER Prozessmodell, [Fis94] .............................................................................. 19<br />

Abbildung 7: <strong>Use</strong> Case Diagramm: Projektverwaltung........................................................... 22<br />

Abbildung 8: <strong>Use</strong> Case Diagramm: Konstruktion................................................................... 22<br />

Abbildung 9: <strong>Use</strong> Case Diagramm: Argumentation................................................................ 23<br />

Abbildung 10: <strong>Use</strong> Case Diagramm: Spezifikation................................................................. 23<br />

Abbildung 11: Klassifizierung <strong>von</strong> Erfahrung......................................................................... 27<br />

Abbildung 12: <strong>Use</strong> Case Bearbeitung...................................................................................... 28<br />

Abbildung 13: Office-Assistent, (a) Tabelle erstellen, (b) Brief schreiben, (c) Umschlag<br />

erstellen ............................................................................................................................ 29<br />

Abbildung 14: Entwicklungsumgebung <strong>von</strong> Eclipse, [Ecl06]................................................. 31<br />

Abbildung 15: Fehlerfenster..................................................................................................... 32<br />

Abbildung 16: Architektur des Tools....................................................................................... 34<br />

Abbildung 17: Klassendiagramm des Projekt <strong>und</strong> <strong>Use</strong> Case Modells..................................... 35<br />

Abbildung 18: Klassendiagramm des Template Modells ........................................................ 37<br />

Abbildung 19: Klassendiagramm des Erfahrungmodells......................................................... 38<br />

Abbildung 20: Klassendiagramm CriticChecker ..................................................................... 39<br />

Abbildung 21: Sequenzdiagramm <strong>zur</strong> Anzeige <strong>von</strong> Hilfe ....................................................... 40<br />

Abbildung 22: Sequenzdiagramm <strong>zur</strong> Anzeige <strong>von</strong> Kritik ...................................................... 41<br />

Abbildung 23: GUI Entwurf.................................................................................................... 42<br />

Abbildung 24: Die Grafische Benutzeroberfläche................................................................... 59<br />

65


66<br />

Literaturverzeichnis<br />

ABC03 Steve Adolph, Paul Bramble, Alistair Cockburn, Andy Pols, Patterns for Effective<br />

<strong>Use</strong> Cases, Addison Wesley, 2003<br />

Bal01 Helmut Balzert, Lehrbuch der Software-Technik, 2001<br />

BCR94 V. R. Basili, G. Caldiera, H. D. Rombach, The Experience Factory, 1994<br />

BS88 J. Bauer, T. Schwab, Anforderungen an Hilfesysteme in Einführung in die<br />

Software-Ergonomie, Berlin, 1988<br />

Buc05 Tobias Buchloh, <strong>Erstellung</strong> eines Baukastens für Experience Bases, Masterarbeit,<br />

Hannover, Oktober 2005<br />

Coc01 Alistair Cockburn, Writing Effective <strong>Use</strong> Cases, Addison Wesley, 2001<br />

Coc06 Homepage <strong>von</strong> Alistair Cockburn, http://alistair.cockburn.us, online 04.05.2006<br />

Ecl06 Eclipse, http://www.eclipse.org, online 17.09.2006<br />

Fis94 Gerhard Fischer, Domain-Oriented Design Environments, Automated Software<br />

Engineering Vol. 1, 1994<br />

FLS85 G. Fischer, A. Lemke, T. Schwab, Knowledge-based Help Systems, CHI 85<br />

Proceedings, April 1985<br />

FMM89 G. Fischer, R. McCall, A. Morch, JANUS: Integrating hypertext with a knowledgebased<br />

design environment, Proceedings of Hypertext'89, November 1989<br />

Gnu06 GnuPG, freie Verschlüsselung, http://www.gnupg.org, online 17.09.2006<br />

Java06 Java Dokumentation, insbesondere Java <strong>und</strong> Tutorials für Java 1.5.0,<br />

http://java.sun.com/j2ee/1.5.0/docs/, online 11.10.2006<br />

Jdom06 Bibliothek <strong>zur</strong> einfachen Generierung wohlgeformter XML-Dateien,<br />

http://www.jdom.org/, online 01.06.2006<br />

Jgo06 Bibliothek für das Look & Feel, http://www.jgoodies.com/, online 01.06.2006<br />

Lev66 Vladimir I. Levenshtein: Binary codes capable of correcting deletions, insertions,<br />

and reversals, Soviet Physics Doklady, 1966<br />

LF90 A. Lemke, G. Fischer, A cooperative problem solving system for user interface<br />

design, Eighth National Conference on Artificial Intelligence, August 1990<br />

Lir04 Thomas Liro, <strong>Konzept</strong> <strong>und</strong> Realisierung eines <strong>Werkzeug</strong>es <strong>zur</strong> Erhebung,<br />

Verwaltung <strong>und</strong> Bewertung <strong>von</strong> Erfahrungen, Bachelorarbeit, Hannover, August<br />

2004<br />

Met06 Metrics, Plugin für Eclipse, http://metrics.sourceforge.net/, online 11.07.2006<br />

Msw02 Microsoft Word 2002<br />

Nin94 Jim Q. Ning, Developing Domain-Oriented Design Environments – The Question<br />

is How, not Why, Automated Software Engineering Vol. 1, 1994<br />

NT95 Nonaka, Takeuchi, The Knowledge Creating Company, Oxford University Press,<br />

1995<br />

OMG06 Object Management Group, http://www.omg.org, online 01.06.2006<br />

Sch00 K. Schneider, LIDs: A Light-Weight Approach to Experience Elicitation and<br />

Reuse, Profes-Conference, Oulu, Finnland, Juni 2000<br />

SH02 K. Schneider, J. P. v. Hunnius, Experience in Implementing a Learning Software<br />

Organization, IEEE Software, 2002<br />

Sut94 Alistair Sutcliffe, Commentary on ‘Domain Oriented Design Environments’ by<br />

Gerhard Fischer, Automated Software Engineering Vol. 1, 1994<br />

TK98 Hugo Tschirky, Stefan Koruna, Technologie-Management. Idee <strong>und</strong> Praxis,<br />

Oktober 1998<br />

Wik06 Wikipedia – Die freie Enzyklopädie, http://de.wikipedia.org/, online 04.05.2006


Anhang<br />

A <strong>Use</strong> Cases<br />

Titel Benutzer plant ein Projekt<br />

Scope Client<br />

Ebene Zusammenfassung<br />

Vorbedingung Das System ist komplett installiert <strong>und</strong> einsatzbereit.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Ein geplantes Projekt mit guten <strong>Use</strong>s Cases.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre Benutzer: Gute Planung des Projekts<br />

Interessen<br />

System: Datenkonsistenz<br />

Auslöser / auslösendes Die Systemingenieure haben beschlossen, ein Projekt zu planen.<br />

Event<br />

Erfolgsszenario<br />

Erweiterungen<br />

Schritt Akteur Aktion<br />

1 Benutzer UC 2: Benutzer legt ein Projekt an.<br />

2 Benutzer UC 5: Benutzer erstellt einen neuen<br />

<strong>Use</strong> Case.<br />

3 Benutzer UC 8: Benutzer bearbeitet ein <strong>Use</strong><br />

Cases.<br />

4 Benutzer UC 7: Benutzer exportiert ein bzw.<br />

mehrere <strong>Use</strong> Cases.<br />

5 Benutzer UC 4: Benutzer speichert das Projekt.<br />

2a Benutzer wiederholt den Schritt beliebig oft bis er<br />

fertig ist.<br />

3a Benutzer wiederholt den Schritt beliebig oft bis er<br />

fertig ist.<br />

Priorität Wichtig<br />

Performance /<br />

Durchlaufsdauer<br />

Mehrere Wochen bis mehrere Monate<br />

Verwendungshäufigkeit zu jedem Projekt ein Mal<br />

<strong>Use</strong> Case 1: Benutzer plant ein Projekt<br />

67


68<br />

Titel Benutzer legt ein Projekt an<br />

Scope Projektverwaltung<br />

Ebene Benutzerebene<br />

Vorbedingung Keine<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Die Projektverwaltung hat ein neues Projekt angelegt.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Benutzer: Projekt anlegen<br />

Auslöser / auslösendes Benutzer möchte ein Projekt anlegen.<br />

Event<br />

Erfolgsszenario<br />

Anhang<br />

Schritt Akteur Aktion<br />

1 Benutzer möchte ein neues Projekt anlegen.<br />

2 Benutzer gibt Metadaten wie Namen ein.<br />

3 Projektverwaltung legt das Projekt an.<br />

Erweiterungen Keine<br />

Priorität Wichtig<br />

Performance /<br />

unter eine Minute<br />

Durchlaufsdauer<br />

Verwendungshäufigkeit einmalig zu jeden Projekt<br />

<strong>Use</strong> Case 2: Benutzer legt ein Projekt an


A <strong>Use</strong> Cases<br />

Titel Benutzer öffnet ein gespeichertes Projekt<br />

Scope Projektverwaltung<br />

Ebene Benutzerebene<br />

Vorbedingung Der Benutzer hat zuvor das Projekt vollständig <strong>und</strong> korrekt<br />

abgespeichert.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Die Projektverwaltung hat das Projekt vollständig geladen.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Auslöser / auslösendes<br />

Event<br />

Erfolgsszenario<br />

Erweiterungen<br />

Benutzer: Ein zu einen früheren Zeitpunkt abgespeichertes Projekt<br />

wieder vollständig laden<br />

Projektverwaltung: Datenkonsistenz<br />

Benutzer möchte ein Projekt laden.<br />

Schritt Akteur Aktion<br />

1 Benutzer wählt die Projekt-Datei aus.<br />

2 Projektverwaltung lädt das Projekt.<br />

3 Projektverwaltung spielt die <strong>Use</strong> Cases ein <strong>und</strong><br />

verlinkt sie wieder richtig.<br />

Schritt Akteur Aktion<br />

1a Datei ist nicht vorhanden:<br />

1a1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

2a Es handelt sich um keine Projektdatei bzw. die Datei ist<br />

fehlerhaft:<br />

2a1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

2b Der Benutzer hat keine Leserechte:<br />

2b1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

3a Die Verlinkung der <strong>Use</strong> Cases ist fehlerhaft:<br />

3a1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> versucht soviel<br />

anzuzeigen, dass die Daten noch<br />

konsistent sind.<br />

Priorität Wichtig<br />

Performance /<br />

unter eine Minute<br />

Durchlaufsdauer<br />

Verwendungshäufigkeit mehrmals zu bei der Bearbeitung des Projekts<br />

<strong>Use</strong> Case 3: Benutzer öffnet ein gespeichertes Projekt<br />

69


70<br />

Titel Benutzer speichert das Projekt<br />

Scope Projektverwaltung<br />

Ebene Benutzerebene<br />

Vorbedingung Der Benutzer hat ein Projekt geöffnet bzw. erstellt.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Die Projektverwaltung hat das Projekt gespeichert.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Auslöser / auslösendes<br />

Event<br />

Erfolgsszenario<br />

Erweiterungen<br />

Benutzer: Projekt abspeichern, so dass es zu einen späteren<br />

Zeitpunkt vollständig wieder geladen werden kann<br />

Projektverwaltung: Alle Daten so ablegen, dass sie wieder<br />

geladen werden können<br />

Benutzer möchte das aktuelle Projekt speichern<br />

Schritt Akteur Aktion<br />

1 Benutzer wählt den Speicherort <strong>und</strong> einen<br />

Dateinamen aus.<br />

Anhang<br />

2 Projektverwaltung speichert das Projekt.<br />

Schritt Akteur Aktion<br />

1a Datei ist bereits vorhanden:<br />

1a1 Projektverwaltung warnt den Benutzer <strong>und</strong> ermöglicht<br />

ihm den Namen zu ändern bzw. die<br />

Datei zu überschreiben.<br />

1a1a1 Benutzer möchte die Datei überschreiben.<br />

1a1b1 Benutzer gibt einen anderen Namen ein.<br />

1b Ein Speicherort <strong>und</strong> ein Dateiname ist bereits bekannt,<br />

weil der Benutzer diese schon mal ausgewählt hat oder<br />

das Projekt aus einer bestehenden Datei geladen hat:<br />

1b1 Schritt entfällt, weiter mit 2.<br />

2a Es existiert nicht genug Speicherplatz:<br />

2a1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

2b Der Benutzer hat keine Schreibrechte:<br />

2b1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

Priorität Wichtig<br />

Performance /<br />

unter eine Minute<br />

Durchlaufsdauer<br />

Verwendungshäufigkeit mehrmals zu bei der Bearbeitung des Projekts<br />

<strong>Use</strong> Case 4: Benutzer speichert das Projekt


A <strong>Use</strong> Cases<br />

Titel Benutzer erstellt einen neuen <strong>Use</strong> Case<br />

Scope Projektverwaltung<br />

Ebene Benutzerebene<br />

Vorbedingung Ein Projekt ist geöffnet.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Der neue <strong>Use</strong> Case ist angelegt.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre Benutzer: <strong>Use</strong> Case anlegen<br />

Interessen<br />

Projektverwaltung: Eindeutigkeit durch Namen<br />

Auslöser / auslösendes Benutzer möchte ein <strong>Use</strong> Case erstellen.<br />

Event<br />

Erfolgsszenario<br />

Schritt Akteur Aktion<br />

1 Benutzer möchte einen neuen <strong>Use</strong> Case<br />

erstellen.<br />

2 Projektverwaltung legt den <strong>Use</strong> Case an.<br />

3 Benutzer gibt einen Titel ein.<br />

Erweiterungen Schritt Akteur Aktion<br />

3a Der Titel ist bereits vergeben:<br />

3a1 Kritiksystem weist den Benutzer daraufhin <strong>und</strong><br />

fragt nach einen anderen Titel.<br />

3a2 Benutzer gibt einen anderen Titel ein.<br />

Priorität Wichtig<br />

Performance /<br />

Durchlaufsdauer<br />

unter eine Minute<br />

Verwendungshäufigkeit Mehrmals während eines Projekts, vielleicht 1-3 mal die St<strong>und</strong>e<br />

<strong>Use</strong> Case 5: Benutzer erstellt einen neuen <strong>Use</strong> Case<br />

71


72<br />

Titel Benutzer löscht einen <strong>Use</strong> Case<br />

Scope Projektverwaltung<br />

Ebene Benutzerebene<br />

Vorbedingung Das Projekt ist geöffnet <strong>und</strong> der <strong>Use</strong> Case existiert.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Der <strong>Use</strong> Case ist gelöscht.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Auslöser / auslösendes<br />

Event<br />

Erfolgsszenario<br />

Anhang<br />

Benutzer: <strong>Use</strong> Case ist gelöscht<br />

Projektverwaltung: Datenkonsistenz, keine Verlinkung auf das<br />

gelöschte <strong>Use</strong> Case<br />

Benutzer möchte ein <strong>Use</strong> Case löschen.<br />

Schritt Akteur Aktion<br />

1 Benutzer wählt den <strong>Use</strong> Case aus.<br />

2 Benutzer löscht den <strong>Use</strong> Case.<br />

3 Projektverwaltung löscht den ausgewählten <strong>Use</strong> Case.<br />

4 Projektverwaltung stellt sicher, dass der <strong>Use</strong> Case<br />

nicht in einen anderen <strong>Use</strong> Case<br />

verlinkt ist.<br />

Erweiterungen Schritt Akteur Aktion<br />

4a Der Assistent stellt fest, dass ein anderer <strong>Use</strong> Case auf<br />

den gelöschten verlinkt:<br />

4a1 Projektverwaltung weist den Benutzer daraufhin.<br />

4a2 Benutzer korrigiert den Fehler.<br />

Priorität Wichtig<br />

Performance /<br />

Durchlaufsdauer<br />

Unter eine Minute<br />

Verwendungshäufigkeit Selten<br />

<strong>Use</strong> Case 6: Benutzer löscht einen <strong>Use</strong> Case


A <strong>Use</strong> Cases<br />

Titel Benutzer exportiert ein <strong>Use</strong> Case<br />

Scope Projektverwaltung<br />

Ebene Benutzerebene<br />

Vorbedingung Ein Projekt ist geöffnet <strong>und</strong> er <strong>Use</strong> Case existiert.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Der Benutzer hat den gewünschten <strong>Use</strong> Case exportiert.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre Benutzer: <strong>Use</strong> Case gut formatiert exportieren<br />

Interessen<br />

Projektverwaltung: Erfolgreiches exportieren<br />

Auslöser / auslösendes Benutzer möchte ein <strong>Use</strong> Case exportieren.<br />

Event<br />

Erfolgsszenario<br />

Erweiterungen<br />

Schritt Akteur Aktion<br />

1 Benutzer wählt den <strong>Use</strong> Case aus, den er<br />

exportieren möchte.<br />

2 Benutzer wählt Speicherort, Dateiname <strong>und</strong><br />

Format aus.<br />

3 Projektverwaltung fasst die Daten des <strong>Use</strong> Cases<br />

zusammen <strong>und</strong> stellt sie gut<br />

formatiert zusammen.<br />

4 Projektverwaltung exportiert die Informationen in eine<br />

Datei.<br />

Schritt Akteur Aktion<br />

1a<br />

Der <strong>Use</strong> Case existiert nicht bzw. es existieren keine:<br />

Der <strong>Use</strong> Case kann nicht exportiert werden, der<br />

Benutzer bzw. das System bricht das Szenario.<br />

1b Der Benutzer exportiert gleich mehrere <strong>Use</strong> Cases.<br />

2a Es existiert bereits eine Datei mit gleichen Namen:<br />

2a1 Projektverwaltung warnt den Benutzer <strong>und</strong> ermöglicht<br />

ihm den Namen zu ändern bzw.<br />

eine anderen Namen einzugeben.<br />

2a1a1 Benutzer möchte die Datei überschreiben.<br />

2a1b1 Benutzer gibt einen anderen Namen ein.<br />

2b Der Benutzer bricht ab:<br />

2b1 Projektverwaltung beendet das Szenario <strong>und</strong> exportiert<br />

nichts.<br />

4a Es existiert nicht genug Speicherplatz:<br />

4a1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

4b Der Benutzer hat keine Schreibrechte:<br />

4b1 Projektverwaltung gibt Fehlermeldung an den<br />

Benutzer <strong>und</strong> bricht ab.<br />

Priorität wünschenswert<br />

Performance /<br />

unter eine Minute<br />

Durchlaufsdauer<br />

Verwendungshäufigkeit einige wenige mal während des Projekts<br />

<strong>Use</strong> Case 7: Benutzer exportiert ein <strong>Use</strong> Case<br />

73


74<br />

Anhang<br />

Titel Benutzer bearbeitet ein <strong>Use</strong> Case<br />

Scope Konstruktion<br />

Ebene Benutzerebene<br />

Vorbedingung Ein Projekt ist geöffnet <strong>und</strong> der gewünschte <strong>Use</strong> Case existiert.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Die Änderungen am <strong>Use</strong> Case sind übernommen.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre Benutzer: <strong>Use</strong> Case füllen bzw. korrigieren<br />

Interessen<br />

Konstruktion: Datenkonsistenz<br />

Auslöser / auslösendes Benutzer möchte ein <strong>Use</strong> Case ausfüllen bzw. korrigieren.<br />

Event<br />

Erfolgsszenario<br />

Schritt Akteur Aktion<br />

1 Benutzer wählt den gewünschten <strong>Use</strong> Case aus.<br />

2 Konstruktion zeigt den <strong>Use</strong> Case an.<br />

3 Benutzer füllt das Formular aus bzw. korrigiert<br />

die Eingaben.<br />

4 Konstruktion übernimmt die Eingaben.<br />

5 Konstruktions- validiert die Eingaben des Benutzers.<br />

analyzer<br />

Erweiterungen Schritt Akteur Aktion<br />

3a UC 9: Der Benutzer fügt einen (weiteren) Schritt ein.<br />

3b Der Benutzer möchte eine Datei anhängen.<br />

3b1 Benutzer wählt die Datei aus.<br />

3b2 Konstruktion hängt sie an.<br />

3c, 5a Es existiert eine Erfahrung:<br />

UC 11: Der Assistent zeigt eine Erfahrung an.<br />

Priorität Wichtig<br />

Performance /<br />

Je nach Schnelligkeit des Benutzers zwischen einigen Minuten<br />

Durchlaufsdauer <strong>und</strong> einer St<strong>und</strong>e<br />

Verwendungshäufigkeit Sehr häufig, mehrmals am Tag<br />

<strong>Use</strong> Case 8: Benutzer bearbeitet ein <strong>Use</strong> Case


A <strong>Use</strong> Cases<br />

Titel Benutzer fügt einen (weiteren) Schritt ein<br />

Scope Konstruktion<br />

Ebene Benutzerebene<br />

Vorbedingung Ein Projekt ist geöffnet <strong>und</strong> der <strong>Use</strong> Case existiert.<br />

Mindestgarantie Benutzer bearbeitet ein <strong>Use</strong> Case.<br />

Erfolgsgarantie Ein (weiterer) Schritt ist eingefügt.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre Benutzer: einen (weiteren) Schritt anlegen<br />

Interessen<br />

Konstruktion: Datenkonsistenz<br />

Auslöser / auslösendes Benutzer möchte einen (weiteren) Schritt einfügen.<br />

Event<br />

Erfolgsszenario<br />

Schritt Akteur Aktion<br />

1 Benutzer möchte einen Schritt einfügen.<br />

2 Benutzer gibt die nötigen Daten ein.<br />

3 Konstruktion legt den Schritt an.<br />

4 Konstruktions- validiert die Eingabe.<br />

analyzer<br />

Erweiterungen Schritt Akteur Aktion<br />

2a Der Benutzer möchte einen <strong>Use</strong> Case verlinken:<br />

2a1 Konstruktion stellt die verfügbaren <strong>Use</strong> Cases <strong>zur</strong><br />

Auswahl.<br />

2a2 Benutzer wählt den <strong>Use</strong> Case aus, den er an<br />

diese Stelle verlinken möchte.<br />

2b,4a Es existiert eine Erfahrung:<br />

UC 11: Der Assistent zeigt eine Erfahrung an.<br />

Priorität Wichtig<br />

Performance /<br />

Durchlaufsdauer<br />

wenige Minuten<br />

Verwendungshäufigkeit Laufend<br />

<strong>Use</strong> Case 9: Benutzer fügt einen (weiteren) Schritt ein<br />

75


76<br />

Titel Benutzer guckt sich die letzten Änderungen an<br />

Scope Konstruktion<br />

Ebene Benutzerebene<br />

Vorbedingung Ein Projekt ist geöffnet.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Konstruktion hebt die Änderungen hervor.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Benutzer: alle Änderungen einsehen<br />

Auslöser / auslösendes Benutzer möchte sich die Änderungen anzeigen.<br />

Event<br />

Erfolgsszenario<br />

Anhang<br />

Schritt Akteur Aktion<br />

1 Benutzer möchte die letzte Änderungen sehen.<br />

2 Konstruktion vergleicht das vorgemerkte Datum mit<br />

den Daten der Änderungen.<br />

3 Konstruktion hebt die Attribute die sich geändert<br />

haben hervor.<br />

4 Benutzer sieht die Änderungen.<br />

5 Benutzer möchte die Ansicht ausschalten.<br />

6 Konstruktion zeigt keine Änderung mehr an.<br />

Erweiterungen Schritt Akteur Aktion<br />

1a Benutzer möchte die Änderungen seit einen<br />

eingegebenen Datum sehen:<br />

1a1 Benutzer gibt ein beliebiges Datum an.<br />

3a Es existieren keine Änderungen seit dem Datum:<br />

3a1 Konstruktion hebt nichts hervor.<br />

4a Benutzer wiederholt die Schritte 1a bis 4 beliebig oft.<br />

4b Benutzer arbeitet während der Anzeige weiter<br />

Priorität Wichtig<br />

Performance /<br />

Durchlaufsdauer<br />

Unter eine Minute<br />

Verwendungshäufigkeit Gelegentlich<br />

<strong>Use</strong> Case 10: Benutzer guckt sich die letzten Änderungen an


A <strong>Use</strong> Cases<br />

Titel Der Assistent zeigt eine Erfahrung an<br />

Scope Argumentation<br />

Ebene Benutzerebene<br />

Vorbedingung Der Benutzer bearbeitet ein geöffnetes Projekt.<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Der Assistent zeigt die relevanteste Erfahrung an.<br />

Hauptakteur Assistent<br />

Stakeholder & ihre<br />

Interessen<br />

Auslöser / auslösendes<br />

Event<br />

Erfolgsszenario<br />

Erweiterungen<br />

Benutzer: relevante <strong>und</strong> richtige Hinweise <strong>und</strong> Erfahrungen lesen,<br />

gute <strong>Use</strong> Cases erstellen, nicht gestört werden<br />

Assistent: seine Empfehlungen <strong>und</strong> Kritiken sollen Beachtung<br />

finden<br />

Der Benutzer bearbeitet ein Attribut in einem <strong>Use</strong> Case.<br />

Schritt Akteur Aktion<br />

1 Benutzer bearbeitet ein Attribut.<br />

2 Assistent wählt alle relevanten Erfahrungen<br />

aus.<br />

3 Assistent sortiert seine Auswahl nach der<br />

Relevanz.<br />

4 Assistent zeigt die relevanteste Erfahrung an.<br />

5 Benutzer liest die Erfahrung.<br />

6 Benutzer macht seine Eingabe.<br />

Schritt Akteur Aktion<br />

2a Es gibt keine Erfahrung zu diesem Attribut:<br />

2a1 Assistent zeigt nichts an.<br />

4a Es gibt mehr als eine relevanteste Information mit<br />

gleicher Bewertung:<br />

4a1 Assistent wählt eine zufällig aus.<br />

5a Der Benutzer möchte weitere Informationen:<br />

5a1 Assistent zeigt dem Benutzer eine<br />

ausführlichere Erläuterung.<br />

5b Der Benutzer möchte die angezeigte Erfahrung für<br />

diesen Fall ignorieren bzw. für alle Fälle ignorieren:<br />

5b1 Assistent merkt sich, dass der Benutzer diese<br />

Erfahrung in diesen bzw. in allen<br />

Fällen nicht mehr sehen will.<br />

5b2 Assistent fängt mit Schritt 2 wieder an <strong>und</strong><br />

zeigt die nächste relevanteste<br />

Erfahrung an.<br />

5c Der Benutzer möchte weitere Erfahrungen zu diesem<br />

Kontext lesen:<br />

5c1 Assistent zeigt die nächste relevanteste<br />

Erfahrung an.<br />

5d<br />

Benutzer möchte die aktuelle Erfahrung ergänzen:<br />

5e<br />

UC 12: Benutzer erweitert eine Erfahrung.<br />

Der Benutzer möchte den Assistenten deaktivieren, da<br />

die Warnungen <strong>und</strong> Erfahrungen stören:<br />

5e1 Benutzer blendet den Assistenten aus.<br />

5e2 Assistent blendet sich aus.<br />

77


78<br />

Anhang<br />

Priorität Wichtig<br />

Performance /<br />

Das Anzeigen der Erfahrungen dauert unter eine Sek<strong>und</strong>e.<br />

Durchlaufsdauer Erweiterung dauert etwa 1 Minute.<br />

Verwendungshäufigkeit Laufend<br />

Anhang Beispiele für Erfahrungen:<br />

• Es existieren mehr als 9 Schritte in einem Szenario.<br />

Der Benutzer solle Schritte zusammenfassen oder einen<br />

Unter <strong>Use</strong> Case erstellen.<br />

• Ein Schritt ist in Passiv formuliert.<br />

Der Satz sollte umformuliert werden.<br />

• Ein Schritt ist zu lang.<br />

Der Satz sollte gekürzt werden oder auf mehrere<br />

Schritte verteilt werden.<br />

• weitere siehe Kapitel 5<br />

<strong>Use</strong> Case 11: Der Assistent zeigt eine Erfahrung an


A <strong>Use</strong> Cases<br />

Titel Benutzer erweitert eine Erfahrung<br />

Scope Argumentation<br />

Ebene Benutzerebene<br />

Vorbedingung Der Benutzer ist mit der angezeigten Erfahrung nicht ganz<br />

einverstanden <strong>und</strong> möchte sie ergänzen.<br />

Mindestgarantie Die alte Erfahrung bleibt erhalten.<br />

Erfolgsgarantie Die Erfahrung ist um die Erfahrung des Benutzers erweitert.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Auslöser / auslösendes<br />

Event<br />

Erfolgsszenario<br />

Benutzer: Richtigstellung <strong>und</strong> seine Erfahrung anderen Benutzern<br />

zugänglich machen<br />

Argumentation: Datenkonsistenz, kurze Teaser, ausführliche<br />

Erläuterung<br />

Benutzer hat eine Erfahrung angezeigt bekommen <strong>und</strong> möchte<br />

diese erweitern.<br />

Schritt Akteur Aktion<br />

1 Benutzer gibt einen Teaser <strong>und</strong> eine ausführlichere<br />

Erläuterung ein.<br />

2 Assistent ergänzt die aktuelle Erfahrung um die<br />

neue Erfahrung.<br />

3 Assistent speichert die Änderung automatisch ab.<br />

Erweiterungen Schritt Akteur Aktion<br />

1a Der Benutzer bricht ab:<br />

1a1 Assistent bricht das Szenario ab <strong>und</strong> erweitert die<br />

Erfahrung nicht.<br />

1b Der Teaser ist zu lang für eine kurze Beschreibung:<br />

1b1 Assistent weist den Benutzer daraufhin.<br />

1b2 Benutzer kürzt den Teaser.<br />

1c Die Erläuterung ist zu kurz um ausführlich genug zu<br />

sein:<br />

1c1 Assistent weist den Benutzer daraufhin.<br />

1c2 Benutzer gibt eine ausführlichere Erläuterung ein.<br />

Priorität Wünschenswert<br />

Performance /<br />

Durchlaufsdauer<br />

einige Minuten<br />

Verwendungshäufigkeit Zu Beginn vermutlich öfters, danach nur noch gelegentlich<br />

<strong>Use</strong> Case 12: Benutzer erweitert eine Erfahrung<br />

79


80<br />

Anhang<br />

Titel Benutzer legt eine neue Erfahrung an<br />

Scope Argumentation<br />

Ebene Benutzerebene<br />

Vorbedingung Der Benutzer hat eine Erfahrung, die noch nicht vorhanden ist,<br />

<strong>und</strong> möchte sie anderen Benutzern <strong>zur</strong> Verfügung stellen.<br />

Mindestgarantie Bestehende Erfahrungen bleiben erhalten.<br />

Erfolgsgarantie Der Benutzer hat den Erfahrungsschatz um seine neue Erfahrung<br />

erweitert.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre Benutzer: seine Erfahrung anderen Benutzern zugänglich machen<br />

Interessen<br />

Argumentation: Datenkonsistenz<br />

Auslöser / auslösendes Benutzer möchte seine Erfahrung hinzufügen.<br />

Event<br />

Erfolgsszenario<br />

Erweiterungen<br />

Schritt Akteur Aktion<br />

1 Benutzer gibt einen Teaser <strong>und</strong> eine ausführlichere<br />

Erläuterung ein.<br />

2 Benutzer gibt an, wann der Assistent die<br />

Erfahrung anzeigen soll.<br />

3 Benutzer legt die Wichtigkeit der Erfahrung fest.<br />

4 Assistent fügt die neue Erfahrung ein.<br />

Schritt Akteur Aktion<br />

1a, 2a,<br />

Benutzer bricht ab:<br />

3a Assistent bricht das Szenario ab <strong>und</strong> legt die<br />

Erfahrung nicht an.<br />

1b Der Teaser ist zu lang für eine kurze Beschreibung:<br />

1b1 Assistent weist den Benutzer daraufhin.<br />

1b2 Benutzer kürzt den Teaser.<br />

1c Die Erläuterung ist zu kurz für eine ausführliche<br />

Beschreibung:<br />

1c1 Assistent weist den Benutzer daraufhin.<br />

1c2 Benutzer gibt eine ausführlichere Erläuterung ein.<br />

3a Der Benutzer hat eine ungültige Eingabe gemacht:<br />

3a1 Assistent weist den Benutzer daraufhin.<br />

3a2 Benutzer korrigiert die Eingabe.<br />

Priorität Wünschenswert<br />

Performance /<br />

Durchlaufsdauer<br />

einige Minuten<br />

Verwendungshäufigkeit Zu Beginn vermutlich öfters, danach nur noch gelegentlich<br />

<strong>Use</strong> Case 13: Benutzer legt eine neue Erfahrung an


A <strong>Use</strong> Cases<br />

Titel Benutzer bearbeitet das <strong>Use</strong> Case Template<br />

Scope Spezifikation<br />

Ebene Benutzerebene<br />

Vorbedingung Keine<br />

Mindestgarantie Keine<br />

Erfolgsgarantie Die Änderungen am Template sind übernommen <strong>und</strong> auf die <strong>Use</strong><br />

Case angewandt.<br />

Hauptakteur Benutzer<br />

Stakeholder & ihre<br />

Interessen<br />

Auslöser / auslösendes<br />

Event<br />

Erfolgsszenario<br />

Benutzer: Individuelles <strong>und</strong> an dem Bedarf orientiertes Template<br />

System: Datenkonsistenz, notwendige Attribute beibehalten,<br />

einheitliche <strong>Use</strong> Cases<br />

Benutzer möchte das Template bearbeiten.<br />

Schritt Akteur Aktion<br />

1 Benutzer fügt / löscht / deaktiviert ein Attribut.<br />

2 Benutzer speichert das Template.<br />

3 Spezifikation übernimmt die Änderungen.<br />

4 Spezifikation wendet das Template auf alle im<br />

Projekt vorhandenen <strong>Use</strong> Cases an.<br />

Erweiterungen Schritt Akteur Aktion<br />

1a Der Name eines neuen Attributs ist bereits vergeben:<br />

1a1 Spezifikation gibt eine Fehlermeldung an den<br />

Benutzer <strong>und</strong> fügt das Attribut nicht<br />

hinzu.<br />

1b Das zu löschende Attribut ist kein zusätzliches Attribut:<br />

1b1 Spezifikation gibt eine Fehlermeldung an den<br />

Benutzer <strong>und</strong> löscht das Attribut nicht.<br />

1c Der Assistent stellt fest, dass das Attribut erforderlich ist<br />

(z. B. Hauptszenario <strong>und</strong> Titel):<br />

1c1 Spezifikation gibt eine Fehlermeldung an den<br />

Benutzer <strong>und</strong> deaktiviert das Attribut<br />

nicht.<br />

1d Der Benutzer wiederholt Schritt 1 beliebig oft.<br />

1e Der Benutzer bricht ab:<br />

1e1 Spezifikation bricht das Szenario ab, ohne die<br />

Änderungen zu übernehmen.<br />

4a Es gibt ein oder mehrere Attribute, die Daten enthalten:<br />

4a1 Spezifikation verwirft die Daten.<br />

Priorität Wünschenswert<br />

Performance /<br />

Einigen Minuten<br />

Durchlaufsdauer<br />

Verwendungshäufigkeit In der Regel einmal zu Beginn des Projekts, vermutlich nicht<br />

mehr während des Projekts, oder nur sehr selten<br />

<strong>Use</strong> Case 14: Benutzer bearbeitet das <strong>Use</strong> Case Template<br />

81


82<br />

B XML Schemata<br />

ProjectScheme.xsd<br />

<br />

<br />

Anhang<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


B XML Schemata<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

83


84<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Anhang<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

ExperienceBaseScheme.xsd<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


B XML Schemata<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

85


86<br />

Anhang<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


C Programm <strong>und</strong> Quellcode<br />

C Programm <strong>und</strong> Quellcode<br />

Auf der beigelegten CD befinden sich eine lauffähige Version des Tools <strong>und</strong> die<br />

dazugehörigen Quellcode Dateien. Es wurden die Bibliotheken [Jdom06] zum Verarbeiten<br />

<strong>von</strong> XML-Dateien <strong>und</strong> [Jgo06] als Look&Feel verwendet, die sich ebenfalls auf der CD<br />

befinden. Weiterhin befinden sich die <strong>Use</strong> Cases aus Anhang A als Projektdatei, die<br />

Erfahrungssammlung, sowie die dazugehörigen Schemadefinitionen auf der CD.<br />

87


88<br />

D Umfrageergebnis<br />

Anhang<br />

1. Wie würden Sie Ihren Wissensstand über Standardanwendungen wie Microsoft Word,<br />

OpenOffice <strong>und</strong> / oder anderen Textverarbeitungsprogramme einschätzen?<br />

Fortgeschritten: 7<br />

Gute Basiskenntnisse: 2<br />

Keine Kenntnisse: 0<br />

2. Wie würden Sie Ihren Wissensstand in Eclipse, JBoss oder ähnlichen<br />

Entwicklungsumgebungen einschätzen?<br />

Fortgeschritten: 6<br />

Gute Basiskenntnisse: 3<br />

Keine Kenntnisse: 0<br />

3. Haben Sie schon mal <strong>Use</strong> Cases verwendet?<br />

Ja, verwende ich regelmäßig: 2<br />

Ja, habe ich mal verwendet: 6<br />

Nein: 1<br />

Ich weiß nicht, was das ist: 0<br />

4. Hatten Sie bei der Nutzung des Tools Schwierigkeiten?<br />

Ich hatte keine Probleme: 7<br />

Ich hatte nur leichte Probleme: 2<br />

Ich habe das Tool nicht verstanden: 0<br />

Es hat nicht funktioniert: 0<br />

5. Sind die Funktionalitäten des Tools intuitiv zu finden?<br />

Ja, immer: 7<br />

Ja, bis auf einige Ausnahmen: 2<br />

Nein: 0<br />

6. Ist die Darstellung der Kritiken <strong>und</strong> Hilfen angebracht?<br />

Ja: 9<br />

Verbesserungsfähig: 0<br />

Nein: 0<br />

7. Haben Sie den Eindruck, durch die Verwendung des Tools Zeit zu sparen?<br />

Ja, erheblich: 0<br />

Ja, etwas: 3<br />

Bleibt gleich: 5<br />

Nein, brauche mehr Zeit: 1<br />

Nein, brauche wesentlich mehr Zeit: 0


D Umfrageergebnis<br />

8. Haben Sie den Eindruck, durch die Verwendung des Tools Arbeit zu sparen?<br />

Ja, erheblich: 0<br />

Ja, etwas: 2<br />

Bleibt gleich: 6<br />

Nein, brauche mehr Arbeit: 1<br />

Nein, brauche wesentlich mehr Arbeit: 0<br />

9. Haben Sie den Eindruck, durch die Verwendung des Tools bessere <strong>Use</strong> Cases zu<br />

erstellen?<br />

Ja, erheblich: 3<br />

Ja, etwas: 5<br />

Bleibt gleich: 1<br />

Nein, die <strong>Use</strong> Cases sind schlechter: 0<br />

Nein, die <strong>Use</strong> Cases sind wesentlich schlechter: 0<br />

10. Würden Sie das Tool <strong>zur</strong> Planung <strong>von</strong> Projekten einsetzen?<br />

Ja, auf jeden Fall: 1<br />

Ja, ich würde das mal gerne probieren: 4<br />

Eventuell: 2<br />

Eher nicht: 2<br />

Auf keinen Fall: 0<br />

11. Welches Betriebssystem verwendeten Sie bei der Erprobung des Tools?<br />

Windows: 5<br />

Unix / Linux: 2<br />

Macintosh: 0<br />

Andere: 4<br />

89


90<br />

Erklärung<br />

Anhang<br />

Hiermit versichere ich, dass ich die vorliegende Masterarbeit <strong>und</strong> die dazugehörige<br />

Implementierung selbständig <strong>und</strong> ohne fremde Hilfe verfasst <strong>und</strong> keine anderen als die in der<br />

Arbeit angegebenen Quellen <strong>und</strong> Hilfsmittel verwendet habe.<br />

Hannover, 23. Oktober 2006<br />

______________________________________<br />

Christian Crisp

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!