Szenariobasierte Softwarespezifikationen

Kern des modernen Software Engineering sind Spezifikationen. Sie beschreiben Anforderungen an eine Anwendungen und bestimmen somit wie diese aufgebaut sein muss, welche Funktionen sie bereitstellen muss und welche Qualitätseigenschaften, wie z.B. Verfügbarkeit oder Geschwindigkeit, sie haben muss. Spezifikationen liegen im Allgemeinen als eine Sammlung von Beschreibungen verschiedener Art vor, natürliche Sprache, Tabellen, Diagrame, usw. Dies macht es schwierig eine Implementierung, die die Spezifikation erfüllt, aus dieser Sammlung abzuleiten. Zusammenhänge zwischen den einzelnen Teilen der Spezifikation sind nicht immer klar ersichtlich, ebenso ist es schwer Widersprüche zu sehen, da in der Regel viele Teile einer Spezifikation in informeller Form, z.B. Fließtext in natürlicher Sprache, vorliegen.

Im Fachgebiet Software Engineering befassen wir uns daher mit der Formalisierung von Spezifikiationen, insbesondere in der Form von szenariobasierten Spezifikationen. Wir verfolgen einen modellbasierten Ansatz, in dem wir die Modellierung der Struktur in Form von Objekten und Verbindungen zwischen den Objekten und die Beschreibung des Verhaltens in Form von Szenarios kombinieren. Szenarien beschreiben dabei, ähnlich wie Use Cases, Verhaltsabläufe die ein System unterstützen muss. Die einzelnen Schritte in einem Szenario beschreiben wie das System sich zu einem gegebenen Zeitpunkt verhalten kann, muss oder wie es sich nicht verhalten darf. Szenarien können sich auch überlappen und gleichzeitig aktiv sein. So können viele Szenarien zu einem Gesamtverhalten zusammengewoben werden.

Ziele

Unser Ziel ist es eine Modellierungsumgebung inkl. einer Beschreibungssprache zur Verfügung zu stellen, die es ermöglicht einfach eine formale Spezifikation zu erstellen und für die weitere Software-Entwicklung zu nutzen. Dabei haben wir uns folgende Ziele gesetzt:

 

Wie funktioniert unser Ansatz?

Die Basis in unserem Ansatz ist ein Metamodell des zu spezifizierenden Systems. Dieses Modell beschreibt welche Objekttypen bzw. Klassen es gibt und welche Zusammmenhänge zwischen diesen Klassen existieren. Zu diesem Metamodell kann ein Instanzmodell erzeugt werden, welches konkrete Objekte mit konkreten Attributausprägungen beschreibt. Ein solches Instanzmodell kann dann für das Suchen nach Widersprüchen, Simulation der Spezifikation oder gar zur Generierung einer Implementierung genutzt werden.

Zusätzlich zu dieser Beschreibung der Struktur bietet unser Ansatz die Möglichkeit Verhalten zu beschreiben. Dafür haben wir eine eigene Sprache auf Basis von Live Sequence Charts (LSCs) bzw. Modal Sequence Diagrams (MSDs) entwickelt. Unsere Sprache arbeitet im Gegensatz zu LSCs und MSDs textuell, basiert aber auch auf dem Austausch von Nachrichten zwischen Objekten. Eine Folge von Nachrichten, genannt Szenario, beschreibt dabei einen gewünschten Ablauf, den das System unterstützen muss. Attribute von Nachrichten spezifizieren ob Nachrichten in bestimmten Situationen auftreten können oder gar müssen.

Wofür eignet sich unser Ansatz?

Unser Ansatz eignet sich bevorzugt für reaktive Systeme, in der regelmäßig Nachrichten aus der Umwelt des Systems kommen und so das in Szenarien beschriebene Verhalten auslösen. Die Umwelt kann dabei vielfältig definiert bzw. modelliert sein. Es ist sowohl denkbar, dass ein Benutzer, welcher Eingaben macht, als Umwelt angesehen wird, aber es ist auch denkbar, dass Sensoren und deren Messdaten die Umwelt darstellen. Beispiele für solche Systeme sind:

Umsetzung

Wir haben unseren Ansatz in den sogenannten ScenarioTools umgesetzt. ScenarioTools ist ein Eclipse Plug-in, welches auf dem Eclipse Modeling Framework (EMF) aufbaut. Wir nutzen Ecore, um Metamodelle und Instanzmodelle für Objektsysteme zu definieren. Zusätzlich haben wir mit Xtext eine eigene Spezifikationssprache, genannt SDL, entwickelt, mit der Entwickler Verhalten Nachrichten-basiert spezifizieren können. Auf der ScenarioTools Webseite sind noch weitergehende Informationen zu finden.

 

Projekte

Derzeit arbeiten im Rahmen eines Projekts, welches von der German-Israeli Foundation for Scientific Research and Development gefördert wird, mit einem Team um Prof. David Harel zusammen an szenariobasierten Spezifikationen für reaktive Systeme mit struktureller Dynamik. Dabei untersuchen wir speziell wie man am besten Änderungen an Instanzmodellen zur Laufzeit beschreiben und durchführen kann. Dadurch ergeben sich wiederrum viele neue Möglichkeiten und Probleme für unseren Ansatz, die betrachtet und gelöst werden müssen.

Ansprechpartner

Prof. Dr. Joel Greenyer

Daniel Gritzner