SSE Anforderungen - Ralf Bürger
SSE Anforderungen - Ralf Bürger
SSE Anforderungen - Ralf Bürger
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)