11.10.2013 Aufrufe

Anforderungen und Spezifikationen Terminologie

Anforderungen und Spezifikationen Terminologie

Anforderungen und Spezifikationen Terminologie

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

LITERATUR<br />

<strong>Anforderungen</strong> <strong>und</strong> <strong>Spezifikationen</strong><br />

1<br />

Michael Jackson. Problems and requirements. In Proceedings of the IEEE<br />

Second International Symposium on Requirements Engineering. ACM<br />

Press, 1995.<br />

Michael Jackson <strong>und</strong> Pamela Zave. Deriving specifications from<br />

requirements: an example. In Proceedings 17th Int. Conf. on Software<br />

Engineering, Seattle, USA, S. 15–24. ACM Press, 1995.<br />

Pamela Zave <strong>und</strong> Michael Jackson. Four dark corners of requirements<br />

engineering. ACM Transactions on Software Engineering and<br />

Methodology, 6(1):1–30, January 1997.<br />

Erhältlich unter http://www.research.att.com/˜pamela/ori.html#fre<br />

3<br />

INHALT<br />

➠ <strong>Terminologie</strong><br />

Was ist der Unterschied zwischen <strong>Anforderungen</strong> <strong>und</strong> <strong>Spezifikationen</strong>?<br />

Was ist eine Maschine?<br />

Wozu braucht man Begriffsbestimmungen?<br />

➠ Korrektheitskriterien für <strong>Spezifikationen</strong><br />

Wie ist die Maschine zu bauen, damit die <strong>Anforderungen</strong> erfüllt werden?<br />

➠ Vorgehen bei der Anforderungsermittlung<br />

Methode, bestehend aus wohldefinierten Schritten<br />

➠ Beispiel: Ableitung von <strong>Spezifikationen</strong> aus <strong>Anforderungen</strong><br />

Wir gehen in den Zoo<br />

2<br />

<strong>Terminologie</strong><br />

4


Ziel: Konstruktion eines Systems mit vorgegebenen Eigenschaften.<br />

Beispiel: Ein Fahrstuhlsystem soll es Personen in einem Gebäude<br />

ermöglichen, von einem Stockwerk in ein anderes zu gelangen.<br />

Bestandteile des Systems:<br />

Umgebung: Für Problemstellung relevanter Teil der “realen Welt”<br />

Beispiel: Stockwerke, Personen, Fahrstuhlkabine, Türen, Antrieb,<br />

Knöpfe, Sensoren, ...<br />

Maschine: Steuersoftware <strong>und</strong> zugehörige Hardware<br />

Klar: Eigenschaften der Umgebung fest. Wir müssen die Maschine bauen, um<br />

die gewünschten Eigenschaften des Systems zu erreichen.<br />

➠ Bekannt:<br />

(1) Feste Eigenschaften der Umgebung (Domänenwissen)<br />

(2) Gewünschte Eigenschaften des Systems (<strong>Anforderungen</strong>)<br />

➠ Klar: Maschine muss “Lücke” zwischen (1) <strong>und</strong> (2) schließen<br />

➠ Gesucht: Spezifikation für die Maschine<br />

“Wie muss sich die Maschine verhalten, damit das System die<br />

<strong>Anforderungen</strong> erfüllt?”<br />

5<br />

7<br />

Zustand <strong>und</strong> Verhalten der Umgebung können durch Phänomene beschrieben<br />

werden. Beispiele:<br />

Fahrstuhl<br />

Person drückt Knopf, erwartet, dass Fahrstuhl kommt.<br />

Bank<br />

K<strong>und</strong>e gibt Auszahlungsanweisung, erhofft eine Auszahlung.<br />

Maschine kann mit Umgebung interagieren, indem sie bestimmte Phänomene<br />

wahrnehmen kann (Eingabe)<br />

auslösen kann (Ausgabe)<br />

6<br />

Merke:<br />

<strong>Anforderungen</strong> beschreiben die Umgebung, wie sie<br />

sein soll, wenn die Maschine in sie integriert ist.<br />

8


FUNKTIONALE VS. NICHTFUNKTIONALE ANFORDERUNGEN<br />

➠ Funktionale <strong>Anforderungen</strong>: sagen aus, wie das System sich verhalten soll<br />

➠ Nichtfunktionale <strong>Anforderungen</strong>: betreffen Qualitätsmerkmale wie z.B.<br />

Effizienz oder Benutzerfre<strong>und</strong>lichkeit<br />

Erfüllung der funktionalen <strong>Anforderungen</strong><br />

Erfüllung der nichtfunktionalen <strong>Anforderungen</strong><br />

¡<br />

¡<br />

Korrektheit<br />

Entscheidungen über Erfüllung nichtfunktionaler <strong>Anforderungen</strong> bedürfen der<br />

Definition gesonderter Kriterien!<br />

Im Folgenden: nur funktionale <strong>Anforderungen</strong><br />

DEFINITIONEN<br />

9<br />

???<br />

➠ erweitern das vorhandene Vokabular, nicht aber seine Aussagekraft<br />

➠ definierter Begriff kann überall durch seine Definition ersetzt werden<br />

➠ können unsinnig oder nutzlos, nicht aber falsch sein<br />

Beispiel:<br />

student¥ s§<br />

¡<br />

¤<br />

£<br />

vl<br />

Vorlesung<br />

11<br />

eingeschrieben¥ s¦ vl§<br />

BEGRIFFSBESTIMMUNGEN (DESIGNATIONS)<br />

➠ Systembeschreibungen benötigen Begriffsbestimmungen als<br />

Basisvokabular<br />

➠ Für jede Begriffsbestimmung gibt es<br />

(1) einen Namen<br />

(2) eine (ausführliche) Erklärung<br />

Bsp.: Ein Student ist jemand, der an einer Hochschule eingeschrieben ist.<br />

➠ Mit Begriffsbestimmungen können Aussagen gebildet werden, z.B.<br />

¢<br />

s£<br />

Student<br />

¤<br />

£<br />

vl<br />

Vorlesung<br />

eingeschrieben¥ s¦ vl§<br />

Merke: Aussagen zeichnen sich dadurch aus, dass sie wahr<br />

oder falsch sein können.<br />

ARTEN VON AUSSAGEN<br />

10<br />

Indikative Aussagen beschreiben die Umgebung unabhängig davon, wie die<br />

Maschine gebaut wird.<br />

Anderer Begriff: Domänenwissen.<br />

Beispiel: Eine Tür kann nicht gleichzeitig offen <strong>und</strong> geschlossen sein.<br />

Optative Aussagen beschreiben die Umgebung, wie wir sie gerne hätten,<br />

nachdem die Maschine in sie integriert ist.<br />

Beispiel: Wenn der Knopf gedrückt wurde, hält der Aufzug irgendwann am<br />

zugehörigen Stockwerk.<br />

<strong>Anforderungen</strong> sind also optative Aussagen.<br />

12


Annahmen beschreiben Voraussetzungen, die gemacht werden müssen,<br />

damit die <strong>Anforderungen</strong> erfüllbar werden.<br />

Bsp.: Wenn der Fahrstuhl an meinem Stockwerk ankommt, steige ich ein.<br />

(Diese Annahme braucht man, um die Anforderung zu erfüllen, dass der<br />

Fahrstuhl alle wartenden Personen an ihr Ziel befördern soll.)<br />

Die Gr<strong>und</strong>bausteine für alle Arten von Aussagen:<br />

“begriffsbestimmte” Konzepte<br />

definierte Begriffe<br />

KATEGORIEN VON AKTIONEN<br />

1. von der Umgebung kontrolliert, von der Maschine nicht wahrnehmbar<br />

Beispiel: Warten vor dem Aufzug<br />

2. von der Umgebung kontrolliert, von der Maschine wahrnehmbar<br />

Beispiel: Knopf im Aufzug drücken<br />

3. von der Maschine kontrolliert, von der Umgebung wahrnehmbar<br />

Beispiel: Tür des Aufzuges schließen<br />

Es gibt keine Kategorie “von der Maschine kontrolliert, von der Umgebung<br />

nicht wahrnehmbar”, da interne Phänomene der Maschine nicht zu den<br />

<strong>Anforderungen</strong> gehören.<br />

13<br />

15<br />

AKTIONEN/EREIGNISSE/OPERATIONEN<br />

➠ sind Phänomene, die in der Umgebung vorkommen<br />

➠ wichtig, um Aussagen auszudrücken<br />

➠ können von der Umgebung bzw. der Maschine kontrolliert bzw.<br />

wahrgenommen werden<br />

Beispiele:<br />

Warten vor dem Aufzug<br />

Knopf im Aufzug drücken<br />

Tür des Aufzuges schließen<br />

14<br />

<strong>Anforderungen</strong> vs. <strong>Spezifikationen</strong><br />

16


SPEZIFIKATIONEN<br />

➠ sind Beschreibungen, die ausreichen, um die Maschine zu bauen<br />

➠ sind implementierbare <strong>Anforderungen</strong><br />

➠ Korrektheitsbedingung: Wenn die Maschine die Spezifikation erfüllt,<br />

erfüllt das System die <strong>Anforderungen</strong>.<br />

ZUSAMMENFASSUNG DER TERMINOLOGIE<br />

Sie sollten folgende Begriffe gelernt haben:<br />

Maschine<br />

Umgebung<br />

Begriffsbestimmung<br />

Definition<br />

17<br />

19<br />

indikative Aussage<br />

optative Aussage<br />

Annahme<br />

Aktion/Ereignis/Operation<br />

Anforderung<br />

Spezifikation<br />

ANFORDERUNGEN SIND nicht IMPLEMENTIERBAR, WENN SIE<br />

➠ Aktionen einschränken, die von der Umgebung kontrolliert werden.<br />

Beispiel: Der Aufzug darf nicht überladen werden.<br />

➠ sich auf Aktionen beziehen, die von der Maschine nicht wahrnehmbar sind.<br />

Beispiel: Der Aufzug soll zu einem Stockwerk fahren, wo Leute warten.<br />

➠ Einschränkungen an die Zukunft machen.<br />

Beispiel: Wenn der Benutzer die letzte Ziffer gewählt hat, bekommt er den<br />

Freiton, den Besetztton, oder die Ansage “kein Anschluss unter dieser<br />

Nummer”.<br />

Umwelt<br />

Umgebung<br />

(für das Problem<br />

relevanter Teil der Umwelt)<br />

18<br />

20<br />

umgebungsgesteuerte Ereignisse<br />

maschinengesteuerte Ereignisse<br />

Zu konstruierende<br />

Maschine (Programm)<br />

Für die Maschine sichtbarer<br />

Teil der Umgebung


WEG ZUR SPEZIFIKATION<br />

Ableitung von <strong>Spezifikationen</strong><br />

aus <strong>Anforderungen</strong><br />

➠ Frage: Wie gewinnt man die Spezifikation S, mit der Eigenschaft, dass<br />

D<br />

A<br />

D 2<br />

S R (Korrektheit der Spezifikation)<br />

¡<br />

A 3<br />

A 2<br />

D 1<br />

D 4<br />

D 3<br />

A 1<br />

S 2<br />

S 1<br />

S 4<br />

21<br />

23<br />

S 3<br />

WEG ZUR SPEZIFIKATION<br />

➠ Gesucht: Spezifikation der Maschine<br />

➠ Bekannt: Domänenwissen D, Annahmen A <strong>und</strong> <strong>Anforderungen</strong> R<br />

D 2<br />

A 3<br />

A 2<br />

D 1<br />

D 4<br />

D 3<br />

A 1<br />

?<br />

22<br />

Ein negatives Beispiel<br />

24<br />

R 1<br />

R5<br />

R 2<br />

R 6<br />

R 3<br />

R 4<br />

R 7


AIRBUS-UNFALL IN WARSCHAU<br />

Anforderung: Rückwärtsschub erlaubt<br />

Umsetzung:<br />

Schlussfolgerung:<br />

flugzeug gelandet<br />

Problem: Aquaplaning!<br />

¡<br />

rader<br />

drehen sich schnell<br />

¡<br />

ruckwartsschub<br />

moglich<br />

¡<br />

¡<br />

r<br />

¡<br />

Flugzeug gelandet<br />

ader drehen sich schnell D ¢<br />

impulse D ¢<br />

impulse S ¢<br />

Ergebnis: Flugzeug verweigerte Gegenschub bei Landung im Regen<br />

25<br />

Seien R <strong>Anforderungen</strong>, D Domänenwissen, A Annahmen, S <strong>Spezifikationen</strong>.<br />

1. Jedes Element von R ist vom K<strong>und</strong>en als akzeptabel anerkannt, <strong>und</strong> R<br />

enthält alle K<strong>und</strong>enwünsche bzgl. des Softwareentwicklungsprojektes.<br />

2. Jedes Element von D wurde auf seine Richtigkeit überprüft.<br />

3. Jedes Element von A wurde auf seine Plausibilität überprüft.<br />

4. Alle Elemente von S sind implementierbar.<br />

5. D<br />

A<br />

S R ist gezeigt.<br />

¡<br />

6. Es ist gezeigt, dass D, A <strong>und</strong> S konsistent sind.<br />

Wenn diese Kriterien erfüllt sind, kann mit der Konstruktion einer Maschine<br />

begonnen werden, die S erfüllt.<br />

27<br />

Korrektheitskriterien<br />

26<br />

Vorgehen bei der Anforderungsermittlung<br />

28


1. Führe die notwendigen Begriffsbeschreibungen <strong>und</strong> Definitionen durch,<br />

d.h. etabliere das Vokabular.<br />

2. Beschreibe Eigenschaften des Anwendungsbereiches unabhängig von<br />

den <strong>Anforderungen</strong> als indikative Aussagen.<br />

3. Beschreibe die <strong>Anforderungen</strong> als optative Aussagen.<br />

4. Beschreibe die Annahmen, die gemacht werden.<br />

5. Zähle alle relevanten Aktionen auf.<br />

6. Klassifiziere die Aktionen.<br />

7. Entwickle eine Spezifikation der Maschine.<br />

8. Weise die Korrektheit der entwickelten Spezifikation nach.<br />

29<br />

Beispiel: Eintritt in einen Zoo<br />

31<br />

BEMERKUNG<br />

Diese Methode ist sehr allgemein.<br />

Die Mächtigkeit einer Methode ist umgekehrt proportional zu ihrer<br />

Allgemeinheit.<br />

Später: Problem Frames zur Spezialisierung der Methode.<br />

VERBALE PROBLEMBESCHREIBUNG<br />

➠ Eingang eines Zoos mit Drehkreuz <strong>und</strong> Münzeinwurf<br />

Mechanik bereits vorhanden (Teile der Umgebung)<br />

Aufgabe: Steuersoftware schreiben<br />

➠ Benutzung des Drehkreuzes:<br />

Besucher muss Drehkreuz in Zwischenposition drücken.<br />

Drehkreuz bewegt sich dann automatisch in Ausgangsposition <strong>und</strong><br />

befördert dabei Besucher in den Zoo<br />

➠ Drehkreuz besitzt Verriegelungsmechanismus<br />

Wenn verriegelt, drücken in Zwischenposition nicht möglich.<br />

30<br />

32


SCHRITT 1: BEGRIFFSBESTIMMUNGEN<br />

Ereignisse:<br />

push Besucher drückt Drehkreuz in Zwischenposition.<br />

enter Drehkreuz bewegt sich in Anfangsposition, Besucher betritt Zoo.<br />

coin Gültige Münze wird in Münzeinwurf geworfen.<br />

lock Drehkreuz erhält Verriegelungssignal.<br />

unlock Drehkreuz erhält Entriegelungssignal.<br />

BEMERKUNG<br />

Bei der Eigenschaft IND1 handelt es sich um eine Sicherheitseigenschaft.<br />

Diese sagen aus, was in einem Zustand nicht passieren kann oder darf.<br />

Hier: nach einem push kann kein weiteres push ohne vorheriges enter<br />

auftreten.<br />

IND1 wäre auch wahr, wenn die Ereignisse push <strong>und</strong> enter nie aufträten.<br />

Im Gegensatz zu Sicherheitseigenschaften, die besagen dass etwas<br />

Unerwünschtes nicht passieren darf, besagen Lebendigkeitseigenschaften,<br />

dass etwas Erwünschtes passieren muss.<br />

33<br />

35<br />

SCHRITT 2: EIGENSCHAFTEN DES ANWENDUNGSBEREICHES<br />

IND1 Die Ereignisse push <strong>und</strong> enter alternieren, wobei zuerst ein push auftritt.<br />

Diese Beschreibung behauptet einen Zusammenhang zwischen den<br />

Ereignissen push <strong>und</strong> enter, der z.B. durch die Beobachtung (push¦ push)<br />

falsifiziert werden könnte.<br />

IND2 Wenn lock- <strong>und</strong> unlock-Ereignisse alternieren, beginnend mit unlock,<br />

dann kann ein push-Ereignis nur nach einem unlock-Ereignis <strong>und</strong> vor dem<br />

nächsten lock-Ereignis auftreten.<br />

(Was passiert, wenn lock- <strong>und</strong> unlock-Ereignisse nicht alternieren?<br />

Nimmt evtl. das Drehkreuz Schaden?)<br />

SCHRITT 3 ANFORDERUNGEN<br />

Gr<strong>und</strong>sätzlich soll sichergestellt werden:<br />

➠ Niemand darf den Zoo betreten, ohne zu zahlen.<br />

➠ Jeder, der gezahlt hat, wird auch eingelassen.<br />

34<br />

Es wird nicht verlangt, dass Zahlungen <strong>und</strong> Eintritte alternieren. Das wäre z.B.<br />

für Lehrer, die mit ihrer Klasse in den Zoo gehen, unpraktisch.<br />

36


Die <strong>Anforderungen</strong> lauten also:<br />

OPT1 Die Summe der enter-Ereignisse darf nicht größer sein als die Summe<br />

der coin-Ereignisse.<br />

OPT2 Wenn die Anzahl der coin-Ereignisse echt größer als die Anzahl der<br />

enter-Ereignisse ist, verhindert die Maschine kein weiteres enter-Ereignis.<br />

Streng genommen ist die Anforderung “jeder, der zahlt, wird eingelassen” nicht<br />

erfüllbar, denn andere Menschen könnten den Besucher, nachdem er gezahlt<br />

hat, am Eintritt hindern. Statt dessen müssen wir fordern, dass die Maschine<br />

den Besucher nicht am Eintritt hindert.<br />

SCHRITT 5 RELEVANTE AKTIONEN<br />

Dies sind die Ereignisse push, enter, coin, lock, unlock, wie in Schritt 1<br />

beschrieben.<br />

SCHRITT 6 KLASSIFIKATION DER AKTIONEN<br />

1. von der Umgebung kontrolliert, von der Maschine nicht wahrnehmbar:<br />

enter<br />

2. von der Umgebung kontrolliert, von der Maschine wahrnehmbar:<br />

push¦ coin<br />

3. von der Maschine kontrolliert, von der Umgebung wahrnehmbar:<br />

unlock¦ lock<br />

37<br />

39<br />

¡<br />

SCHRITT 4 ANNAHMEN<br />

Jackson <strong>und</strong> Zave, von denen dieses Beispiel stammt, betrachten Annahmen<br />

nicht gesondert, sondern rechnen sie zum Domänenwissen. Allerdings:<br />

IND1 ist eine Annahme. Denn theoretisch könnte ein Besucher, nachdem<br />

er gegen die Barriere gedrückt hat, rückwärts wieder herausspringen. Es<br />

ist also physikalisch möglich, dass auf ein push eben doch kein enter folgt.<br />

Eine weitere sinnvolle Annahme ist, dass andere Besucher einen<br />

Besucher, der gezahlt hat, nicht am Eintritt hindern.<br />

SCHRITT 7 ABLEITUNG DER SPEZIFIKATION<br />

OPT1, OPT2 sind keine <strong>Spezifikationen</strong>, da sie enter-Ereignisse enthalten.<br />

Realisierung von OPT1:<br />

verhindere enter-Ereignisse oder erzwinge coin-Ereignisse.<br />

Letzteres geht nicht, weil coin-Ereignisse von der Umgebung kontrolliert<br />

werden.<br />

Ausserdem: OPT1 muss für alle (auch zukünftige) Intervalle gelten.<br />

¡<br />

OPT1 muss nach jeder Aktion der Maschine gelten.<br />

38<br />

40


¡<br />

Setze Domänenwissen ein, um OPT1 in eine Spezifikation umzuformen, d.h.<br />

enter-Ereignisse zu eliminieren.<br />

IND1 ¡<br />

Anzahlen der push- <strong>und</strong> enter-Ereignisse unterscheiden sich um höchstens 1<br />

Anzahl der enter-Ereignisse ist kleiner oder gleich Anzahl der push-Ereignisse<br />

Ersetze also in OPT1 die enter-Ereignisse durch push-Ereignisse:<br />

OPT1a Die Summe der push-Ereignisse darf nicht größer sein als die Summe<br />

der coin-Ereignisse.<br />

BEMERKUNG<br />

OPT3 bezieht sich auf alle Zeitpunkte, auch zukünftige.<br />

¡<br />

OPT3 ist eigentlich keine Spezifikation.<br />

Verfeinerung von OPT3:<br />

wenn nach dem letzten lock-Ereignis kein unlock-Ereignis mehr<br />

41<br />

stattgef<strong>und</strong>en hat oder noch überhaupt kein unlock-Ereignis stattgef<strong>und</strong>en<br />

hat, dann darf kein lock-Ereignis ausgelöst werden<br />

wenn nach dem letzten unlock-Ereignis noch kein lock-Ereignis<br />

stattgef<strong>und</strong>en hat, dann darf kein unlock-Ereignis ausgelöst werden<br />

Diese Verfeinerung geht für alle derartigen <strong>Anforderungen</strong> gleich.<br />

43<br />

¡<br />

¡<br />

OPT1a ist Verschärfung von OPT1.<br />

OPT1a ist keine Spezifikation, da push <strong>und</strong> coin von der Umgebung kontrolliert<br />

werden.<br />

Wenn Anzahl push-Ereignisse = Anzahl coin-Ereignisse, muss die Maschine<br />

ein weiteres push-Ereignis verhindern.<br />

IND2 mit beschränkt push-Ereignisse, aber nur, falls lock- <strong>und</strong><br />

unlock-Ereignisse alternieren.<br />

¡<br />

OPT3 lock- <strong>und</strong> unlock-Ereignisse dürfen nur alternierend auftreten,<br />

¡<br />

beginnend mit unlock.<br />

42<br />

behandle <strong>Anforderungen</strong>, die sich eigentlich auf die Zukunft beziehen,<br />

ansonsten aber <strong>Spezifikationen</strong> sind, ohne weitere Verfeinerung als<br />

Invarianten, die die Maschine respektieren muss.<br />

Invariante: gilt in Initialzustand, <strong>und</strong> Maschine darf keine Aktion ausführen, die<br />

die Eigenschaft ungültig machen würde.<br />

44


¡<br />

OPT1a Die Summe der push-Ereignisse darf nicht größer sein als die Summe<br />

der coin-Ereignisse.<br />

Verfeinere OPT1a zu Sicherheitseigenschaft OPT4 <strong>und</strong><br />

Lebendigkeitseigenschaft OPT5:<br />

OPT4 Wenn die Anzahl der push- <strong>und</strong> der coin-Ereignisse gleich sind, darf<br />

kein unlock-Ereignis stattfinden.<br />

OPT5 Wenn nach dem letzten unlock-Ereignis kein lock-Ereignis mehr<br />

stattgef<strong>und</strong>en hat <strong>und</strong> die Anzahl der push- <strong>und</strong> der coin-Ereignisse gleich<br />

sind, muss ein lock-Ereignis stattfinden.<br />

Insgesamt: Umwandlung von Anforderung OPT1 in <strong>Spezifikationen</strong> OPT3,<br />

OPT4, OPT5<br />

BEMERKUNG<br />

Die entwickelten <strong>Spezifikationen</strong> sind Implikationen <strong>und</strong> keine Äquivalenzen!<br />

45<br />

Prinzip:<br />

Entwickle die schwächste Spezifikation, die hin-<br />

reicht, um die <strong>Anforderungen</strong> zu erfüllen.<br />

Gr<strong>und</strong>: schränke Konstrukteure der Maschine möglichst wenig ein<br />

¡<br />

Maschine kann nach nichtfunktionalen Kriterien optimiert werden<br />

47<br />

¡<br />

¡<br />

OPT2 Wenn die Anzahl der coin-Ereignisse echt größer als die Anzahl der<br />

enter-Ereignisse ist, verhindert die Maschine kein weiteres enter-Ereignis.<br />

Verfeinere OPT2 zu Sicherheitseigenschaft OPT6 <strong>und</strong><br />

Lebendigkeitseigenschaft OPT7:<br />

OPT6 Wenn die Anzahl der coin-Ereignisse echt größer ist als die Anzahl der<br />

push-Ereignisse, darf kein lock-Ereignis stattfinden.<br />

OPT7 Wenn nach dem letzten lock-Ereignis kein unlock-Ereignis mehr<br />

stattgef<strong>und</strong>en hat <strong>und</strong> die Anzahl der coin-Ereignisse echt größer ist als<br />

die Anzahl der push-Ereignisse, muss ein unlock-Ereignis stattfinden.<br />

OPT6 <strong>und</strong> OPT7 sind <strong>Spezifikationen</strong><br />

¡<br />

Ausgangspunkt für Entwicklung der Maschine ist etabliert<br />

SCHRITT 8 KORREKTHEITSNACHWEIS<br />

Die abgeleitete Spezifikation ist per Konstruktion korrekt:<br />

<strong>Spezifikationen</strong> wurden aus <strong>Anforderungen</strong> durch Verschärfung unter<br />

Zuhilfenahme des Domänenwissens gewonnen<br />

¡<br />

Korrektheitsbedingung S<br />

D<br />

46<br />

A R gilt ¡<br />

Sicherstellen der Konsistenz von S, D <strong>und</strong> A durch Inspektion des<br />

Anwendungsbereiches<br />

48


WAS HABEN WIR GELERNT?<br />

➠ Aufgabe bei der Softwareentwicklung ist es, eine Maschine zu bauen. Die<br />

Maschine wird in eine Umgebung integriert, um das Verhalten der<br />

Umgebung zu verbessern.<br />

➠ (Funktionale) <strong>Anforderungen</strong> beschreiben die Umgebung, wie sie sich<br />

nach Integration der Maschine verhalten soll. Sie beschreiben nicht die<br />

Maschine.<br />

➠ <strong>Anforderungen</strong> werden als optative Aussagen ausgedrückt.<br />

➠ Indikative Aussagen beschreiben die Umgebung unabhängig von der<br />

Maschine.<br />

➠ Annahmen sind manchmal nötig, um die <strong>Anforderungen</strong> verwirklichen zu<br />

können.<br />

49<br />

➠ Die Begriffe, die in den verschiedenen Aussagen verwendet werden, sind<br />

entweder begriffsbestimmt oder definiert.<br />

➠ Maschine <strong>und</strong> Umgebung können mittels gemeinsamer Phänomene<br />

interagieren. Diese Phänomene werden entweder von der Umgebung oder<br />

von der Maschine kontrolliert.<br />

➠ <strong>Spezifikationen</strong> sind implementierbare <strong>Anforderungen</strong>.<br />

➠ Um <strong>Anforderungen</strong> in <strong>Spezifikationen</strong> umzuwandeln, werden<br />

Domänenwissen <strong>und</strong> Annahmen (indikative Aussagen) verwendet.<br />

➠ Dieser Ansatz kann gemäß einer Methode durchgeführt werden.<br />

50

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!