Kontrolliertes Englisch für Anforderungsspezifikationen
Kontrolliertes Englisch für Anforderungsspezifikationen
Kontrolliertes Englisch für Anforderungsspezifikationen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
38 Kapitel 2<br />
Anforderungen und SpeziÞkationen 37<br />
A Larch Specification of the Library Problem [Wing 87]<br />
Die Autorin der Spezifikation argumentiert, dass erhšhte PrŠzision in den frŸhen<br />
Phasen der Softwareentwicklung das VerstŠndnis des Softwareentwicklers fŸr die<br />
Anforderungen der Kunden klŠren kann. Sie schlŠgt vor, das Bibliotheksproblem mit<br />
einer formalen Methode (Larch) anzugehen, die prŠdikative und algebraische Spezifikationstechniken<br />
kombiniert.<br />
nicht explizit erwŠhnt werden, bleiben unverŠndert. Zur Transaktion check_out gehšren<br />
die folgenden beiden Restriktionen:<br />
relation last_borrower(book, user) 1-1 auto<br />
maintain user(U) => bounds(B, checked_out_to(B, U), 0, 5)<br />
Larch ist eine formale Spezifikationsmethode, die besonders die Modularisierung der<br />
Spezifikation und die Datenabstraktion unterstŸtzt. Eine Larch Spezifikation besteht<br />
aus Komponenten, die in zwei unterschiedlichen Sprachen geschrieben sind: zum<br />
einen in einer prŠdikativen Schnittstellensprache und zum anderen in einer algebraischen<br />
Spezifikationssprache (Larch Shared Language). Mit der Schnittstellensprache<br />
wird das beobachtbare Verhalten zwischen den Schnittstellen von Programmkomponenten<br />
beschrieben. Um die Probleme bei der Kommunikation zwischen den Schnittstellen<br />
klein zu halten, sind spezielle Larch Schnittstellensprachen fŸr verschiedene<br />
Programmiersprachen (z.B. Ada, C++, Smalltalk, CLU) entwickelt worden. FŸr das<br />
Bibliotheksproblem wurde Larch/CLU als Schnittstellensprache benutzt. Die Programmiersprache<br />
CLU ist eine objektorientierte Sprache aus der Pascal Familie<br />
[Liskov et al. 81]. Mit Larch/CLU werden in der Beispielspezifikation im wesentlichen<br />
die Transaktionen durch PrŠdikate (Vor- und Nachbedingungen) festgelegt. FŸr die<br />
Definition dieser PrŠdikate stŸtzt sich die Schnittstellensprache auf eine algebraische<br />
Hilfsspezifikation ab, die in der Larch Shared Language (LSL) geschrieben ist. Die LSL<br />
erlaubt es, die charakteristischen Abstraktionen programmunabhŠngig in Form von<br />
algebraischen Gleichungen anzugeben und diese zusammenzufassen. Diese algebraischen<br />
Konstrukte (Traits) sind Minitheorien und definieren die Bedeutung der<br />
PrŠdikate in der Larch/CLU Spezifikation [vgl. Wing 87:35]. Der Softwareentwickler<br />
ist mit LSL nicht auf eine beschrŠnkte Menge von Bezeichnungen festgelegt, sondern<br />
er kann ein spezialisiertes Vokabular aufbauen, das fŸr eine einzige Spezifikation oder<br />
eine ganze Klasse von Spezifikationen verwendbar ist.<br />
Die erste implizite Restriktion (1-1 auto) setzt fest, dass fŸr ein Buch genau ein Ausleiher<br />
als letzter Ausleiher vermerkt sein darf. Dadurch wird bei der AusfŸhrung garantiert,<br />
dass jeder vorgŠngige Ausleiher eines Buches, der als letzter Ausleiher vermerkt<br />
war, gelšscht wird. Die zweite explizite Restriktion (maintain) ŸberprŸft bei<br />
der AusfŸhrung, ob der Ausleiher nicht bereits mehr als 5 BŸcher ausgeliehen hat.<br />
Bestimmte Transaktionen erzeugen Seiteneffekte. Das SchlŸsselwort output, das in<br />
der folgenden Transaktion anstelle einer Nachbedingung steht, zeigt an, dass es sich<br />
hier um eine Transaktion handelt, die zu keiner ZustandsŠnderung fŸhrt, sondern den<br />
Systembenutzer bloss informiert:<br />
tran list_last_borrower(User, Book)<br />
pre is_staff(User) and book(Book)<br />
output all Borrower where<br />
last_borrower(Book, Borrower)<br />
Vor der AusfŸhrung der SXL Spezifikation muss ein Anfangszustand definiert werden.<br />
Durch Initialisierung wird erreicht, dass es mindestens einen Bibliotheksbenutzer<br />
user vom Typ normal und staff gibt und ein Katalogeintrag cc_entry sowie eine<br />
Buchkopie book existiert:<br />
initial<br />
new user(*, mary, normal) and<br />
new user(*, jane, staff) and<br />
new cc_entry(haley & roots, history) and<br />
new book(*, haley, roots, available)<br />
Der allgemeine Sachverhalt, dass zu einem Buch ein Titel, ein Autor und ein Sachgebiet<br />
gehšrt, wird in LSL durch einen Trait book dargestellt. Die Beziehung zwischen<br />
einem Buch B und den einzelnen Komponenten wird durch den Datentyp record of<br />
modelliert.<br />
Das Interessante an der Sprache SXL ist, dass sie eine sachverhaltsorientierte Modellierung<br />
unterstŸtzt, bei der das Vokabular fŸr die Objekte und Relationen (fast) un-<br />
mittelbar aus der Problembeschreibung Ÿbernommen werden kann:<br />
Book: trait<br />
B record of [title:T, author:A, subject:S]<br />
Our prototypes are very-high-level models whose "vocabulary" is similar to that used in<br />
informal, English-language requirements [Lee & Sluizer 87:231].