07.10.2013 Aufrufe

Kontrolliertes Englisch für Anforderungsspezifikationen

Kontrolliertes Englisch für Anforderungsspezifikationen

Kontrolliertes Englisch für Anforderungsspezifikationen

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.

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].

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!