10.02.2015 Aufrufe

SSE Anforderungen - Ralf Bürger

SSE Anforderungen - Ralf Bürger

SSE Anforderungen - Ralf Bürger

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.

Systematische<br />

Software-<br />

Entwicklung<br />

<strong>Anforderungen</strong>


Die folgende Formel berechnet das<br />

Risiko für eine Anforderung als<br />

Kennzahl von 1 (minimal, unterste<br />

Pfeilzeile) bis 27 (maximal, oberste<br />

Pfeilzeile).<br />

R = 1 x P (1 bis 3) + 3 x V (1 bis 3) + 9 x K (1 bis 3)<br />

- (1+3+9) +1<br />

Dabei bestimmt sich also der Grad des<br />

Risikos einer Anforderung aus folgenden<br />

Attributen der Anforderung:<br />

- Priorität<br />

- Variabilität<br />

- Komplexität<br />

Diese werden jeweils grob als niedrig,<br />

mittel oder hoch (Wert 1, 2 oder 3)<br />

bestimmt und entsprechend in die<br />

Formel oben eingesetzt. Das<br />

entspricht den grünen, gelben oder<br />

roten Pfeilen in dem Bild links.<br />

Dann erfolgt in der Formel eine<br />

Gewichtung, nach der die Komplexität<br />

den größten Einfluss nimmt, die<br />

Variabilität den mittleren und die<br />

Priorität tatsächlich den geringsten.<br />

Die zweite Zeile der Formel oben<br />

sorgt lediglich für eine fortlaufende<br />

Ergebniszahl ab 1.<br />

Ein Risiko ist übrigens etwas, aus dem<br />

später ein konkretes Problem entstehen<br />

kann.<br />

s. Kapitel 5.3 auf Seite 101<br />

(„Anforderungsattribute“)


Mantra-Bibliothek auf Reis-Papier in einem tibetischen Kloster (Foto <strong>Ralf</strong> Bürger 2008)<br />

„Viele möchten in einem Tag verschlingen,<br />

was sie kaum im ganzen Leben verdauen können.“<br />

(Balthasar Gracián)<br />

Inhaltsverzeichnis<br />

1 Einführung .......................................................................................... 5<br />

1.1 Inhalt ................................................................................................ 5<br />

1.2 Vorwort............................................................................................ 6<br />

1.3 Konventionen .................................................................................. 8<br />

2 Startanalyse ...................................................................................... 10<br />

2.1 Inhalt .............................................................................................. 10<br />

2.2 Das S im SADITÜP-Mosaik ............................................................. 11<br />

2.3 Verantwortung .............................................................................. 13<br />

2.4 Name und Hauptziel ...................................................................... 16<br />

2.4.1 Beispiele für Hauptziele ....................................................... 19<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 1


2.4.2 Embedded Systems............................................................. 20<br />

2.5 Zweck und Tragweite (Purpose & Scope) ..................................... 22<br />

2.5.1 Weitere Beispiele ................................................................ 28<br />

2.5.2 Embedded Systems............................................................. 30<br />

2.6 Prosatext ....................................................................................... 31<br />

2.7 Modelle und Prozesse ................................................................... 33<br />

2.7.1 Geschäftsmodelle und Geschäftsprozesse ......................... 33<br />

2.7.2 Vorgehensmodelle und Entwicklungsprozesse .................. 38<br />

2.8 Was also ist die Startanalyse ....................................................... 40<br />

2.8.1 Embedded Systems............................................................. 45<br />

2.8.2 Softwareprojekte für Softwareprodukte ............................ 45<br />

3 Anforderungsmanagement ............................................................... 47<br />

3.1 Inhalt ............................................................................................. 47<br />

3.2 Definitionen .................................................................................. 48<br />

3.3 Sind <strong>Anforderungen</strong> wichtig ....................................................... 53<br />

3.4 Das A im SADITÜP-Mosaik ............................................................ 55<br />

4 Anforderungssammlung ................................................................... 59<br />

4.1 Inhalt ............................................................................................. 59<br />

4.2 Arten von <strong>Anforderungen</strong> ............................................................. 60<br />

4.2.1 Funktionale <strong>Anforderungen</strong> ............................................... 60<br />

4.2.2 Nicht-funktionale <strong>Anforderungen</strong> ...................................... 69<br />

4.2.3 Technische <strong>Anforderungen</strong>................................................. 74<br />

4.3 Kommunikation durch Interviews ................................................ 78<br />

4.4 Anforderungslisten ....................................................................... 84<br />

4.5 Folgeiterationen ........................................................................... 89<br />

5 Anforderungsanalyse........................................................................ 92<br />

5.1 Inhalt ............................................................................................. 92<br />

5.2 Prüfung der <strong>Anforderungen</strong>.......................................................... 93<br />

5.3 Anforderungsattribute ................................................................ 101<br />

5.4 Akzeptanzkriterien ...................................................................... 110<br />

5.5 Protokolle.................................................................................... 114<br />

5.6 Hilfreiche Prinzipien .................................................................... 118<br />

5.6.1 Hierarchisierung ............................................................... 118<br />

5.6.2 Modularisierung ............................................................... 119<br />

5.6.3 Strukturierung .................................................................. 120<br />

5.6.4 Granulierung ..................................................................... 121<br />

5.6.5 Beherrschung .................................................................... 122<br />

5.6.6 Mustererkennung ............................................................. 123<br />

2 <strong>SSE</strong> – Systematische Software-Entwicklung


5.6.7 Fazit ................................................................................... 124<br />

6 Wo endet die Analyse ................................................................... 126<br />

6.1 Inhalt ............................................................................................ 126<br />

6.2 Vom „was“ zum „wie“ ................................................................. 127<br />

6.3 Anwendungsfälle ......................................................................... 133<br />

6.3.1 Embedded Systems ........................................................... 144<br />

6.4 Prototypen ................................................................................... 146<br />

6.5 Testfälle ....................................................................................... 153<br />

6.6 Schätzung und Machbarkeiten .................................................... 159<br />

7 Der weitere Verlauf ........................................................................ 164<br />

7.1 Inhalt ............................................................................................ 164<br />

7.2 Änderungsanforderungen ........................................................... 165<br />

7.3 Abnahme ..................................................................................... 171<br />

7.4 Gehegt und gepflegt .................................................................... 174<br />

8 Anhang ........................................................................................... 179<br />

8.1 Inhalt ............................................................................................ 179<br />

8.2 Bücher.......................................................................................... 180<br />

8.3 Analyseprozess ............................................................................ 181<br />

8.4 Änderungshistorie ....................................................................... 185<br />

8.5 Index, Abkürzungsverzeichnis, Glossar ........................................ 186<br />

Vita ...................................................................................................... 201<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 3


Startanalyse / Das S im SADITÜP-Mosaik 2.2<br />

„Genau genommen leben sehr wenige Menschen in der<br />

Gegenwart - die meisten bereiten sich gerade vor, demnächst<br />

zu leben.“<br />

(Jonathan Swift)<br />

2.2 Das S im SADITÜP-Mosaik<br />

(Kartenspiel Vorgehensmodell Entwicklungsprozess Teilprozess)<br />

Wenn Sie mein Buch „Das SADITÜP-Mosaik“ kennen, werden Sie den<br />

nächsten Absatz sicherlich auf Anhieb verstehen. Ansonsten sollten Sie ihn<br />

vielleicht zwei Mal lesen – oder das Buch <br />

Eigentlich sagt der Untertitel der Überschrift dieses<br />

Kapitels schon alles: Ich habe ein Kartenspiel mit den<br />

Buchstabenkarten S, A, D, I, T, Ü und P entworfen,<br />

die den Teilprozessen entsprechen, die in nahezu<br />

allen Softwareentwicklungsprozessen vorkommen.<br />

Diese Karten können Sie auslegen, um ein Vorgehensmodell<br />

zu entwerfen – quasi als Mosaik dieser<br />

Buchstaben. Anhand dieses Vorgehensmodells können<br />

Sie dann Ihre Teilprozesse passend ausgestalten<br />

und zu einem gesamten Softwareentwicklungsprozess<br />

zusammensetzen.<br />

Teilprozesse<br />

S tartanalyse<br />

A nalyse<br />

D esign<br />

I mplementierung<br />

T est<br />

Ü bergang<br />

P flege<br />

Ein Beispiel für ein solches Mosaik sehen Sie auf dem Deckblatt dieses<br />

Buches. Dort sind das S und das A hervorgehoben, weil es in diesem<br />

Buch hier genau um diesen Schwerpunkt geht: Die Startanalyse sowie die<br />

Anforderungssammlung und –analyse.<br />

Die ersten <strong>Anforderungen</strong> werden in der Regel aber bereits ganz am Anfang<br />

des Projekts vorliegen, denn sonst würde es wohl gar nicht erst zum<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 11


2.2 Startanalyse / Das S im SADITÜP-Mosaik<br />

Projekt kommen. Allerdings sollte man ganz am Anfang des Projekts noch<br />

die <strong>Anforderungen</strong> von dem Bedarf, dem Nutzen und den Zielen trennen.<br />

Zumindest macht das den Einstieg ins Projekt bewusster<br />

und damit sicherer und oft für alle Beteiligten einfacher.<br />

am Anfang Der Bedarf soll gedeckt werden, der Nutzen soll erbracht<br />

Bedarf werden und das Ziel soll erreicht werden. Der Bedarf zeigt<br />

Nutzen auf, was einem fehlt, der Nutzen zeigt auf, was man davon<br />

für Vorteile hätte, und das Ziel zeigt auf, wo man<br />

Ziel<br />

steht, wenn man es geschafft hat.<br />

Wenn Sie jetzt spontan das Gefühl haben, dass dies mehr ist, als Sie bisher<br />

beim Thema „Anforderungsmanagement“ gehört haben, sind Sie nicht<br />

allein! Am Anfang des Projekts steht tatsächlich meistens das S - die<br />

Startanalyse. Dies ist den Leuten oft nicht bewusst – und genau das ist<br />

meistens das Problem: die Manager machen die dicken Fehler am Anfang<br />

und die Entwickler müssen das später ausbaden. Sie merken schon: Ich bin<br />

ein Freund vom „Frontloading“, also dem „nach-vorne-holen“ von Problemen.<br />

Das mache ich auch mit Risiken - aber lassen Sie die Fehler ruhig<br />

hinten, denn die frühen Fehler waren im Nachhinein schon immer die<br />

teuersten Fehler!<br />

Ich möchte hier also zunächst die Startanalyse ins Bewusstsein rücken,<br />

bevor ich in die eigentliche Anforderungssammlung und -analyse einsteige.<br />

In diesem Buch erkläre ich also die Teilprozesse S und A des SADITÜP-<br />

Mosaiks ausführlicher.<br />

In aller Regel hat ein Softwareentwicklungsprozess übrigens genau ein S ,<br />

aber mehrere A , weil ein Projekt in der Regel genau einen Start hat und<br />

mehrere Entwicklungsiterationen, die jeweils mit einer - ggf. kurzen - Anforderungsanalyse<br />

beginnen. Diese mehreren Entwicklungsiterationen<br />

können natürlich auch mehrere Wasserfalldurchläufe sein. Es können aber<br />

auch V-Durchläufe sein, die zwischen System- und Software-<strong>Anforderungen</strong><br />

unterscheiden; dann haben Sie auf die A-Karten meines SADITÜP-<br />

Kartenspiels vielleicht noch „Sys“ und „SW“ geschrieben, um sie zu unterscheiden.<br />

12 <strong>SSE</strong> – Systematische Software-Entwicklung


3.4 Anforderungsmanagement / Das A im SADITÜP-Mosaik<br />

Wurde für Ihr Projekt eine Art von Wasserfallmodell gewählt, bei dem<br />

eigentlich alle Teilprozesse brav nacheinander ablaufen, dann kommt das A<br />

einmal am Anfang nach der Startanalyse. Dann müssen Sie das Thema auch<br />

ausschöpfend behandeln und alle <strong>Anforderungen</strong> finden, und Sie müssen<br />

sie auch so analysieren, dass damit das gesamte Design erstellt werden<br />

kann und im Übergang die Abnahme sicher erfolgen kann.<br />

Wenn Sie mehrmals einen Wasserfall durchlaufen (oder ein Spiralmodell)<br />

und damit iterativ-inkrementell vorgehen, dann sollten Sie auch am Anfang<br />

eine gründliche Analyse durchführen, damit Sie bei den einzelnen Iterationen<br />

keine grundsätzlichen Überraschungen mehr erleben. Die einzelnen<br />

Iterationen betrachten dann in der Analyse nur noch ihre spezifischen<br />

Arbeitspakete. Die gründliche Analyse am Anfang kann auch iterativ die<br />

Arbeitspakete der Projektiterationen finden und analysieren. Dabei sollten<br />

Sie nur so weit gehen, wie es nötig ist, um sicher genug die Projektiterationen<br />

vorzuplanen. Der Rest sollte in den Analysen zu Beginn der Projektiterationen<br />

erfolgen.<br />

Das kann bei einem Modell, das eher einem evolutionären Treiben von<br />

Prototypen ähnelt, anders sein. Dann fällt die Analyse am Anfang des Projekts<br />

wahrscheinlich sehr kurz aus und die Analysen am Anfang jeder Projektiteration<br />

dafür etwas länger. So ein Modell werden Sie aber auch nur<br />

bauen, wenn Sie am Anfang schon wissen, dass keine grundsätzlichen<br />

Überraschungen drin sind.<br />

Wenn Sie nach einem V-ähnlichen Modell vorgehen, so werden Sie wahrscheinlich<br />

die Software als Teil eines komplexeren Systems ansehen. Deshalb<br />

werden Sie wahrscheinlich zunächst eine Systemanalyse durchführen,<br />

die zu einem Systemdesign führt. Von beidem werden Sie in der Software-<br />

56 <strong>SSE</strong> – Systematische Software-Entwicklung


Anforderungsmanagement / Das A im SADITÜP-Mosaik 3.4<br />

analyse die <strong>Anforderungen</strong> ableiten, die Sie dann in einem Softwaredesign<br />

genauer spezifizieren. Dieses Modell kann bei komplexen Softwaresystemen,<br />

an denen mehrere Parteien beteiligt sind, sehr sinnvoll sein, aber es<br />

kann auch eine Hardware-nahe Software unterstützen (engl. „embedded<br />

System“).<br />

Bei einem Forschungs- oder Vorserienprojekt, wo Sie noch gar nicht wissen,<br />

was überhaupt geht, versuchen Sie vielleicht immer verschiedene<br />

Ansätze parallel, entscheiden sich dann für einen und starten neu durch<br />

zur nächsten Iteration. Dann werden Sie nur analysieren können, was Sie<br />

schon sehen können und der Rest wird Sie während des Designs oder der<br />

Implementierung überraschen. Hier sollten Sie alles, was im Nachhinein<br />

aufkommt, rückwirkend dokumentieren, damit Sie wieder eine solide Basis<br />

für die nächste Iteration bekommen. Da Sie mit Ihren Ergebnissen nicht<br />

wirklich in Produktion oder gar in Serie gehen werden, haben Sie entsprechend<br />

wenige Tests und keine Pflege als Teilprozesse im Modell.<br />

Ein weiteres Vorgehensmodell haben Sie schon auf dem Umschlag dieses<br />

Buchs gesehen. Dieses ist sehr ehrgeizig, weil stark parallelisiert wird. Entsprechend<br />

viel und gründlich wird getestet. Auch bei diesem Modell wird<br />

zu Beginn einer jeden Iteration analysiert, und Sie sehen, dass durch das<br />

versetzte Parallelisieren die Analytiker durchgehend im Einsatz sind.<br />

Damit kommen wir nun zu den modernen agilen Ansätzen (eigentlich fand<br />

ich das alles schon recht agil). Am bekanntesten ist derzeit wohl „Scrum“,<br />

dessen Dachorganisation, die „Scrum Alliance“, leicht im Internet zu finden<br />

ist. Scrum ist allerdings weder ein Vorgehensmodell noch ein Prozess, son-<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 57


3.4 Anforderungsmanagement / Das A im SADITÜP-Mosaik<br />

dern ein „Rahmenwerk“ (engl. „Framework“), das für die Projektabwicklung<br />

effiziente Methoden bereit hält und viele zentrale Aspekte auf<br />

3 Rollen, 3 Artefakte und 3 Veranstaltungen reduziert.<br />

Aber auch bei Scrum sollte man vorher darüber nachdenken, was man<br />

eigentlich wie erreichen will, also eine Startanalyse durchführen. Wann<br />

und wie will man auch sonst entscheiden, das Projekt überhaupt mithilfe<br />

von Scrum abzuwickeln<br />

<strong>Anforderungen</strong> werden bei Scrum auch gesammelt und analysiert, und<br />

zwar einerseits am Projektanfang und projektbegleitend (im sog. „Product<br />

Backlog“, quasi dem Produktkatalog) und andererseits am Anfang jeder<br />

Iteration (Iterationen heißen bei Scrum „Sprints“ und die Anforderungslisten<br />

der Iterationen demzufolge „Sprint Backlogs“, quasi Sprint-Katalog).<br />

Damit unterscheiden sich Scrum-Projekte hinsichtlich der Teilprozessanordnung<br />

im Vorgehensmodell nicht von meinem zweiten und dritten linearen<br />

SADITÜP-Mosaik oben, also dem iterativen Wasserfall. Das mag manchen<br />

Scrum-Jüngern nicht gefallen, weil die hier sicherlich was besonders<br />

tolles für Scrum erwartet haben, ist aber nun mal so.<br />

Deshalb brauche ich hier für Scrum erst gar nicht extra noch Diagramme zu<br />

malen. Die Methoden, die bei Scrum in den Teilprozessen der Iterationen<br />

- pardon: „Sprints“ - benutzt werden, sind übrigens effizienter als bisher<br />

üblich, und verlangen deshalb extreme Diszipliniertheit von den<br />

Teammitgliedern – nicht gerade jedermanns Sache!<br />

58 <strong>SSE</strong> – Systematische Software-Entwicklung


4.2 Anforderungssammlung / Arten von <strong>Anforderungen</strong><br />

Manche Leute halten so was für eine Anforderung:<br />

Terminliche Fertigstellungen der Förderanlagen<br />

Und Was heißt das Als Anforderung an eine Software weiß das auch nur<br />

der, der es geschrieben hat. Und selbst der weiß es wahrscheinlich morgen<br />

auch schon nicht mehr.<br />

Eine Übersicht über die terminlichen Fertigstellungen der Förderanlagen<br />

soll abrufbar sein.<br />

Besser! Jetzt wäre es noch spannend, zu wissen, wer das eigentlich will und<br />

wozu das gut sein soll:<br />

Für mich als Regionalleiter soll jederzeit eine Übersicht über die<br />

terminlichen Fertigstellungen aller Förderanlagen meiner Region abrufbar<br />

sein, um bei Verzögerungen der Bauprojekte sofort Gegenmaßnahmen<br />

einleiten zu können.<br />

Testen wir doch diese Anforderung mal gemäß den obigen Erläuterungen<br />

und der zugehörigen orangefarbenen Checkbox – ja, so früh kann schon<br />

Software getestet werden!<br />

„Wer“ – der/die Regionalleiter (Rolle)<br />

„Was“ – eine Übersicht über die terminlichen Fertigstellungen der Förderanlagen<br />

der Region abrufen – ob da Kohle oder Öl gefördert wird, ist offensichtlich<br />

egal<br />

„Wie“ – ist nicht drin und das ist genau richtig so<br />

„Wann“ – jederzeit, also nicht nur am Jahresende<br />

„Warum“ – um bei Verzögerungen der Bauprojekte sofort Gegenmaßnahmen<br />

einleiten zu können; welche Gegenmaßnahmen das sind, ist egal, wenn sieaußerhalb<br />

des Systems sind – das sollte nochmal geklärt werden<br />

„EAI“ – könnte eine Wiederverwendung der Förderanlagen aus einer Bauplanung<br />

sein - das muss wohl noch mal genauer betrachtet werden<br />

„Wichtigkeit“ (s. Kapitel Definitionen) – es „soll“ möglich sein<br />

„Akzeptanz“ - „jederzeit“ ist ganz schön konkret und fragt nach den nichtfunktionalen<br />

<strong>Anforderungen</strong> der Verfügbarkeit und Robustheit, „eine Übersicht“<br />

ist eindeutig genug, „über die Fertigstellungen … der Region“ ist hier<br />

präzise genug, „aller Förderanlagen“ sind wohl wirklich alle<br />

Also ich meine, diese Anforderung ist so schon recht brauchbar!<br />

66 <strong>SSE</strong> – Systematische Software-Entwicklung


Anforderungssammlung / Arten von <strong>Anforderungen</strong> 4.2<br />

Schauen wir uns mal eine andere Anforderung an:<br />

Als Handelsvertreter muss ich die Fragen und Antworten meiner finanztechnischen<br />

Beratung nachhaltig festhalten können, um den europäischen<br />

Dokumentationspflichten nachzukommen.<br />

Testen wir wieder:<br />

„Wer“ – der/die Handelsvertreter (Rolle)<br />

„Was“ – die Fragen und Antworten meiner finanztechnischen Beratung nachhaltig<br />

festhalten<br />

„Wie“ – ist implementierungstechnisch nicht drin und das ist genau richtig so;<br />

fachlich inhaltlich haben wir aber einen Verweis auf die europäischen Dokumentationspflichten;<br />

da steht bestimmt drin, was man alles beachten<br />

muss<br />

„Wann“ – direkt während der Beratung, oder Lieber noch mal nachfragen!<br />

„Warum“ – um den europäischen Dokumentationspflichten nachzukommen<br />

„EAI“ – ist hier nicht erwähnt, also wohl eher kein Aspekt<br />

„Wichtigkeit“ (s. Kapitel Definitionen) – er „muss“, weil es wohl ein europäisches<br />

Gesetz ist<br />

„Akzeptanz“ – „die Fragen und Antworten meiner finanztechnischen Beratung“<br />

werden im Nachgang hoffentlich noch genauer als Teilanforderungen<br />

genannt oder später noch genauer spezifiziert, „nachhaltig“ ist hier endlos,<br />

„festhalten“ wird hoffentlich durch technische <strong>Anforderungen</strong> zur Speicherung<br />

unterstützt<br />

Testen Sie doch selbst mal die folgenden <strong>Anforderungen</strong>, und testen Sie<br />

dann mal Ihre eigenen bzw. die Ihnen vorliegenden <strong>Anforderungen</strong>.<br />

Für mich als Leiter der Finanzabteilung soll die Entwicklung der<br />

Budgetanmeldungen verfolgbar sein, um in dieser Phase jederzeit qualifizierte<br />

Aussagen zum Management geben zu können.<br />

Als Controller möchte ich, dass zu den wichtigsten 80% unserer<br />

Bauprojekte eine unterjährige Jahresendprognose durch die Projektleiter<br />

erfolgt, damit ich an zentraler Stelle stets eine zuverlässige Aussage<br />

erhalte.<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 67


4.2 Anforderungssammlung / Arten von <strong>Anforderungen</strong><br />

Als oberster Architekt fordere ich, dass das HOAI-Phasenschema des<br />

Leistungsbildes „Bautechnik“ in den Phasen 3 bis 8 gemäß der Verordnung<br />

für Architekten unterstützt werden muss.<br />

Als Qualitätsverantwortlicher unserer Lieferkette benötige ich eine<br />

vollständige qualifizierte Übersicht über die durchgeführten Eingangsprüfungen<br />

an den zugelieferten Bauteilen unserer Unterlieferanten.<br />

Für mich als Hydrologe sollen die Bemessungshochwasserspiegellagen der<br />

Zuflüsse unserer Talsperren über die Kilometrierungen bereitgestellt<br />

werden, damit ich sie als Grundlage für die jährliche Berechnung der<br />

Überströmungsgefahr der Mauern verwenden kann.<br />

Sie haben spätestens jetzt an den Beispielen gemerkt, dass funktionale<br />

<strong>Anforderungen</strong> tatsächlich meistens auf die Funktionen des neuen softwaretechnischen<br />

Systems abzielen, also auf die „Fähigkeiten“. Aber<br />

manchmal ist es auch eher die „Beschaffenheit“ im Sinne eines Vermögens,<br />

mit dem sich dann was anstellen lässt. Die letzte der obigen <strong>Anforderungen</strong><br />

beschreibt beispielsweise viel eher, wie das System beschaffen sein<br />

muss, damit es die „Grundlage“ für eine Funktionalität bietet; Ist Ihnen<br />

aufgefallen, dass hier gar nicht gefordert wird, dass die eigentliche Funktionalität<br />

der „Berechnung“ Teil des Systems sein soll Die Grundlage kann<br />

später technisch auch das Datenschema einer Datenbank sein, aus dem<br />

sich eine externe Berechnung bedient, die es schon lange gibt.<br />

So oder so spiegeln die funktionalen <strong>Anforderungen</strong> die Fachlichkeit des<br />

Kunden wieder, und zwar eben aus Kundensicht, nicht aus softwaretechnischer<br />

Implementierungssicht.<br />

Sie werden aber auch gesehen haben, dass diverse Attribute dieser <strong>Anforderungen</strong><br />

durchaus noch mit Teilanforderungen untersucht werden müssen.<br />

Stellen Sie also als Analytiker die passenden Fragen: „Was meinen Sie<br />

mit ‚jederzeit‘“, „Was ist für Sie eine ‚vollständige qualifizierte‘ Übersicht“,<br />

„Woran erkenne ich die ‚wichtigsten 80%‘ der Bauprojekte“, „Was<br />

ist bei Ihnen eine ‚unterjährige Jahresendprognose‘“, etc.<br />

Wenn Sie die Teilanforderungen formulieren und dabei einen formalen<br />

Bezug zu einer Hauptanforderung herstellen, ist es meines Erachtens nicht<br />

68 <strong>SSE</strong> – Systematische Software-Entwicklung


Anforderungssammlung / Arten von <strong>Anforderungen</strong> 4.2<br />

mehr nötig, zu beschreiben, wer das fordert; oft können Sie auch die Begründung<br />

weglassen. Tun Sie nur das, was hilft, und handeln Sie situativ!<br />

Die Übersicht der durchgeführten Eingangsprüfungen soll wöchentlich<br />

erstellbar sein und zu allen Bauteilen der zugehörigen Woche die<br />

Prüfkriterien unserer Klasse A zeigen.<br />

Die wichtigsten 80% der Bauprojekte sollen jeweils am Jahresanfang auf<br />

Basis einer Kostenkalkulation mit dem System festgelegt werden können.<br />

Die unterjährigen Jahresendprognosen sollen an jedem 3. eines Monats<br />

die zugehörige Prognose des Ausgabenstands zum Jahresende aufzeigen.<br />

4.2.2 Nicht-funktionale <strong>Anforderungen</strong><br />

Als Auftraggeber werden Sie nicht nur fachliche funktionale <strong>Anforderungen</strong><br />

an das neue softwaretechnische System haben. Wenn Sie eine neue Software<br />

entwickeln lassen, die Sie genauso in Ihrer Forschungsabteilung in<br />

Deutschland einsetzen wollen wie in Ihrer Produktionsstätte in Rumänien,<br />

dann werden Sie vielleicht wollen, dass Ihre neue Software zumindest die<br />

Texte auf dem Bildschirm in zwei Sprachen darstellen kann. Gehört die<br />

„Mehrsprachigkeit“ zu Ihrer Fachlichkeit, für die Sie die neue Software<br />

entwickeln lassen Oder sehen Sie in der Mehrsprachigkeit eine ganz bestimmte<br />

Funktion Ihrer neuen Software Das passt nicht so ganz. Das liegt<br />

auch daran, dass die Mehrsprachigkeit eine Art Querschnittthema ist, also<br />

eine Eigenschaft, die wahrscheinlich die meisten Funktionen Ihrer neuen<br />

Software irgendwie beeinflussen wird und über die Begrifflichkeiten auch<br />

Ihre Fachlichkeit an vielen Stellen betreffen wird.<br />

Ähnlich wird es Ihnen gehen, wenn Sie eine kaufmännische Software entwickeln<br />

lassen und mehrere „Währungen“ unterstützt haben müssen.<br />

Oder verschiedene „Metriken“ wie Zentimeter, Zoll oder Seemeilen (und<br />

verschiedene Tausender- und Dezimaltrenner).<br />

Aber auch bei der „Bedienbarkeit“ kann es Querschnittthemen geben,<br />

wenn Sie auf Menschen mit Behinderungen Rücksicht nehmen möchten.<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 69


5.3 Anforderungsanalyse / Anforderungsattribute<br />

Wind, drehen sich mit jedem, mit dem man spricht und können einfach<br />

nicht abschließend formuliert werden („hoch“, „lose“, „3“). Andere <strong>Anforderungen</strong><br />

konnten noch nicht endgültig entschieden werden, weil sie noch<br />

von verschiedenen Leuten diskutiert werden, aber eine Einigung ist absehbar<br />

(„mittel“, „wackelig“, „2“). Wieder andere gab es von Anfang an so, wie<br />

sie sind, und da waren sich auch alle einig und da ändert sich offensichtlich<br />

auch nichts mehr dran („niedrig“, „fest“, „1“).<br />

Bewertung<br />

Priorität<br />

Variabilität<br />

Komplexität<br />

Risiko<br />

Die „Komplexität“ (z.B. „hoch“, „mittel“, „niedrig“ oder<br />

„komplex“, „erklärbar“, „easy“ oder „3“, „2“, „1“) sagt<br />

auch eine Menge über den Detaillierungsgrad der zugehörigen<br />

Geschäftsprozesse und damit über den Implementierungsaufwand<br />

aus. Sie zeigt oft auch den<br />

Anteil von Algorithmen. Auf jeden Fall ist sie als Input<br />

für Aufwandsschätzungen wichtig, weil komplexe <strong>Anforderungen</strong><br />

zur realistischen Schätzung ggf. erst noch in Teilanforderungen<br />

zerlegt werden müssen. Vielleicht finden Sie eine Situation vor, die<br />

keiner wirklich richtig verständlich erklären kann, bei denen immer wieder<br />

vermeintlich in Details abgestiegen wird und wo immer wieder neue Leute<br />

zur Klärung gebraucht werden („hoch“, „komplex“, „3“). Andere sind<br />

durchaus Standard, aber haben dennoch ihre Tücken und müssen vorsichtshalber<br />

nochmal genauer abgeklärt werden („mittel“, „erklärbar“,<br />

„2“). Und dann gibt es noch die, über die gar nicht weiter gesprochen wird,<br />

weil sie eigentlich eh jedem klar sind („niedrig“, „easy“, „1“).<br />

Ein „Risiko“ ist etwas, was später zum Problem werden kann. Was heute<br />

schon ein Problem ist, muss heute erledigt werden und birgt höchstens ein<br />

Risiko, solange es nicht erledigt ist. Wie groß aber das Problem hinter dem<br />

Risiko später werden kann, ist aus den drei oben erklärten Attributen direkt<br />

ableitbar: Eine hoch variable und komplexe Anforderung mit hoher<br />

Priorität stellt ein viel höheres Risiko für das Projekt dar als eine stabile<br />

einfache Anforderung niedriger Priorität. Logisch, oder Aber wie steht es<br />

mit einer hoch komplexen Anforderung, die andererseits absolut fest ist<br />

und als „soll“ eingestuft ist<br />

Meiner Erfahrung nach kann eine Gewichtung der Attribute P, V und K<br />

vorgenommen werden: Die Komplexität ist dabei am kritischsten, weil sie<br />

eine Schätzung um Faktoren verreißen kann, und bereits eine einzelne<br />

komplexe unterschätzte Anforderung das ganze Projekt gefährden kann.<br />

Die Variabilität kommt als nächste, denn wenn <strong>Anforderungen</strong> nicht fixiert<br />

werden können, dann kann auch das Projekt nicht abgeschlossen werden.<br />

Die Priorität kommt tatsächlich als letztes und ist am wenigsten bedroh-<br />

102 <strong>SSE</strong> – Systematische Software-Entwicklung


Anforderungsanalyse / Anforderungsattribute 5.3<br />

lich, weil sie letztendlich „nur“ eine Reihenfolge bestimmt. Das ist anders,<br />

als die meisten Menschen erwarten, und deshalb sind verschieden gewichtete<br />

Attribute oft nur schwierig objektiv beurteilbar. Daher habe ich aus<br />

den oben dargestellten Attributen eine Formel ermittelt, mit der das Risiko<br />

berechnet werden kann:<br />

R = 1 x P (1 bis 3) + 3 x V (1 bis 3) + 9 x K (1 bis 3) - (1+3+9) +1<br />

Dabei bewerten Sie Priorität, Variabilität<br />

und Komplexität so mit 1 bis 3, wie Sie es<br />

oben schon kennengelernt haben. Die<br />

Priorität wird dann einfach gewichtet, die<br />

Variabilität dreifach und die Komplexität<br />

neunfach. Schließlich muss ich noch –<br />

gemäß dieser Gewichtung - 13 abziehen<br />

(= 1+3+9). Dann zählt das Risiko allerdings<br />

ab Null, weshalb ich noch eins addiere,<br />

damit es ab 1 für das geringste<br />

Risiko läuft und bis 27 für das höchste<br />

Risiko durchläuft.<br />

Statt der Bewertung 1, 2 und 3 können<br />

Sie auch mit Pfeilen tief, mittel und hoch<br />

für eine entsprechende Bewertung arbeiten.<br />

Diese Pfeile können Sie zusätzlich<br />

noch gemäß einer Ampel grün, gelb und<br />

rot einfärben.<br />

Grün, grün und grün ergibt dann grün<br />

und ist unproblematisch; Rot, rot und rot<br />

ergibt dann rot und ist geradezu explosiv.<br />

Zunächst können Sie jetzt erkennen, wo<br />

noch Klärungsbedarf besteht und andererseits<br />

festlegen, was zuerst angegangen<br />

werden sollte - nämlich immer das<br />

höchste Risiko!<br />

Zerlegen Sie also <strong>Anforderungen</strong> hoher<br />

Komplexität in Teilanforderungen, um die<br />

Komplexität besser bewerten zu können.<br />

<strong>SSE</strong> – Systematische Software-Entwicklung 103


… Ich beschäftige mich als Berater intensiv mit Fragestellungen aus dem<br />

Bereich IT-Architektur und -Management. Kompliment für die von Ihnen<br />

geleistete Arbeit und den Ergebnissen auf Ihrer Web-Site. Selten findet man<br />

dieses Thema so "aufgeräumt" und lesenswert. ...<br />

Manager / Prokurist<br />

affinis consulting GmbH<br />

… Ihre Zusammenstellung der Themen in Sachen Softwareentwicklung<br />

finde ich hervorragend und werde sie künftig in Besprechungen und Meetings<br />

nutzen. …<br />

Knorr Bremse AG<br />

… Viele Dank für diese tolle Artike!!!. Ich finde sie eine der besten, die ich in<br />

diesem Bereich gelesen habe. Ich finde die Sprüche auch extrem cool! …<br />

Quang Tran Minh<br />

Vietnam<br />

... I was so impressed with your skilled & disciplined project management<br />

approach that I felt, and still feel, that if I get into any conversations with<br />

large firms concerning a substantial migration project then I would have to<br />

consider getting you involved with us. ...<br />

OpenOffice.org<br />

New York<br />

Ziele werden erreicht, wenn <strong>Anforderungen</strong> erfüllt<br />

werden. <strong>Anforderungen</strong> stellen also die wesentliche<br />

Vereinbarung zwischen Auftraggeber und Auftragnehmer<br />

dar. Die Sammlung und Analyse von messbar<br />

formulierten <strong>Anforderungen</strong> bilden die Grundlage zur<br />

Vermeidung der frühen teuren Fehler. So werden die<br />

Verfolgung der <strong>Anforderungen</strong> und die Abnahme auf<br />

Basis der <strong>Anforderungen</strong> abgesichert. Bewerten Sie<br />

dafür <strong>Anforderungen</strong> mindestens in ihrer Priorität,<br />

Variabilität und Komplexität, um daraus nach einer<br />

einfachen Formel deren Risiko zu berechnen.<br />

<strong>Ralf</strong> Bürger (http://www.<strong>Ralf</strong>Buerger.de)

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!