Anforderungen und Spezifikationen Terminologie
Anforderungen und Spezifikationen Terminologie
Anforderungen und Spezifikationen Terminologie
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