Martin-Luther-Universität Halle-Wittenberg

Logo des Lehrstuhls Software-Engineering und Progammiersprachen

Kontakt

Andreas Both
Institut für Informatik
Martin-Luther-Universität
Halle-Wittenberg

Raum 3.21
Von-Seckendorff-Platz 1
06120 Halle

Weiteres

Login für Redakteure

Forschungsthema: Sicherstellung der Funktionalität von Komponentensoftware

Im Folgenden wird das Forschungsthema kurz skizziert, welches in der Dissertation von Dipl.-Inform. Andreas Both bearbeitet wurde. Zusätzlich existieren noch kurze Beschreibungen in Frage/Antwort-Form.

Industrielles Umfeld des Forschungsthemas

Aus Komponenten zusammengesetzte Software (CBS) und Service-orientierte Architekturen (SOA) sind heutzutage ein etabliertes Vorgehen bei der Erstellung bzw. zur Verfügungsstellung von Software(bausteinen). Zu diesem Zweck wurden verschiedene Technologien entwickelt, z.B. J2EE, .NET, CORBA, Webservices (SOAP, WSDL, UDDI), u.a.

Ziel ist es, die Bausteine (Komponenten, Services) so eigenständig wie möglich zu entwickeln und so die Wiederverwendung der Bausteine für andere Zwecke zu vereinfachen. Im Idealfall müsste ein Entwickler nur seine (kleine) Teilaufgabe implementieren und anschließend mit anderen Komponenten verbinden, um eine lauffähige/funktionierende Software zu erstellen. Dies würde Produktivität und Effizienz gegenüber traditionellen Ansätzen stark erhöhen.

Problemstellung

Soweit Methoden der Komponenten immer nur als eine Art Bibliotheksfunktion benutzt werden existiert kein Problem, d.h. auf eine bestimmte Anfrage wird eine bestimmte Antwort geliefert, egal wie oft die Anfrage gestellt wird. Die Komponente besitzt keinen eigenen Zustand.

Dies entspricht aber nicht der Realität. Zumeist gibt es Abläufe (Workflows) die eine Komponente implementiert (Beispiele). Diese Art des Verhaltens nennt man zustandsbehaftet. Leider ermöglichen heutige Komponentensysteme (wie z.B. Webservices, J2EE, .NET, CORBA) keine Angaben über das mögliche Verhalten eines Services. Dadurch werden viele Vorteile der Komponenten-orientierten Entwicklung wieder aufgehoben, denn schlussendlich muss das Verhalten jeder Komponente von einem Menschen betrachtet werden, um sicherstellen zu  können, dass die neu erstellte Software auch funktioniert.

Ziel der Forschungen

Ziel der Forschung sollte sein, ein Verfahren zur Verfügung zu stellen, welches die Mängel aktueller Komponentensysteme ausgleicht. Dies sind insbesondere die rudimentären Möglichkeiten, Bedingungen festzulegen, bei denen die gegebenen Komponenten korrekt funktioniert. Entwickler sollten nicht mehr langwierig testen müssen, um zu bestimmen, ob eine Komponente eingebunden werden kann oder nicht. Es wird also Zuverlässigkeit und Sicherheit betrachtet.

Entscheidend für die industrielle Praxis ist die Anwendbarkeit, d.h. ein entsprechendes Verfahren sollte einfach zu benutzen sein und sich an der industriellen Praxis orientieren. Dies beinhaltet auch einen Automatismus bei der Anwendung des Verfahrens, da davon ausgegangen wird, dass nicht jederzeit ein Verifikationsexperte zur Verfügung steht.

Entwickeltes Verfahren

automatische Verarbeitungsschritte

automatische Verarbeitungsschritte

automatische Verarbeitungsschritte

Im Rahmen der Dissertation von Dipl.-Inform. Andreas Both wurde ein Verfahren entwickelt, das die vollautomatische Verifikation von nicht-funktionalen Eigenschaften erlaubt.

Die hier betrachteten nicht-funktionalen Eigenschaften sind die Interaktionen zwischen verschiedenen Softwarekomponenten; genauer: in den sogenannten Protokollen (component protocols, service protocols) wird festgelegt, welche Aufrufe der angebotenen Schnittstellen erlaubt sind, z. B. erst anmelden, dann benutzen, ... (Beispiele). Protokolle können somit genutzt werden, um Eigenschaften wie zum Beispiel Sicherheit und Zuverlässigkeit sicherzustellen. Die hier verwendeten Protokolle sind ungeich einfacher zu verstehen als die in anderen Arbeiten verwendeten. Gleichzeitig werden nur Informationen aus der Schnittstellenbeschreibung benötigt (z.B. WSDL).

Zur Überprüfung der korrekten Komposition der Komponenten (Protocol Conformance Check) wird deren abstrahiertes Verhalten herangezogen. Auch dynamisches Einbinden von Komponenten ist erlaubt und wird erfasst. Hierbei ist es erstmals gelungen, eine Repräsentation zu nutzen, die sowohl unbeschränkte Parallelität, als auch unbeschränkte Rekursion darstellen kann (Process Rewrite Systems). Somit bleibt der Quellcode immer verborgen (Blackbox-Semantik), Geschäftsgeheimnisse oder Algorithmen müssen nicht veröffentlicht werden. Dies wäre im B2B-Kontext inakzeptabel.

Zur Verifikation dieser Protokolle wurden fünf automatische Verarbeitungsschritte definiert.  Diese stellen die Anwendbarkeit in Komponenten-orientierter Programmierung bzw. Entwicklung sicher, d.h. auch bei der Verifikation bleibt der Komponenten-Charakter erhalten. Gleichzeitig ist sichergestellt, dass jedes Problem gefunden werden kann (konservative Abstraktion, Modellprüfung).

Das Verfahren wird an existierende Kompositionsprozesse angehängt. Es nutzt deren Informationen als Eingabe und liefert als Ausgabe die Antwort ob alle Komponenten in der verlangten Art miteinander interagieren. Wenn dies nicht der Fall ist, wird dem benutzenden Entwickler eine Ausführungsfolge geliefert, die präzise die Stellen im Quellcode angibt, die zu einem Problem führen (Gegenbeispiel). Dies ist möglich obwohl der Quellcode nicht betrachtet wird bzw. zugreifbar ist.

Zusammenfassung und Ausblick

In der vorgestellten Dissertation wurde ein generalisiertes Verfahren entwickelt welches die Schwächen aktueller Komponentensysteme und SOAs ausgleicht, indem eine leicht zu verstehende Information hinzugefügt wird. Die weiteren Schritte werden automatisch durchgeführt. Dem Anwender des Verifikationsprozesses wird ein konkretes Problem als Ausführungsreihenfolge dargestellt.

Mit diesem Verfahren ist es möglich das Zusammensetzen von Komponenten/Services unter dem Gesichtspunkt der korrekten Benutzung zu überprüfen. Sind Fehler vorhanden, werden diese immer entdeckt werden (unter den gegebenen Randbedingungen). Der Aufwand für die Anwender ist sehr gering. Das Verfahren arbeitet mit den gängigen Programmiersprachen und Komponentensystemen.

Der Prozess wurde für eine industrielle Fallstudie für das spezielle Komponentensystem der OR Soft Jänicke GmbH implementiert und überprüft.

Ausblick

In zukünftigen Arbeiten sollte eine Implementierung und Etablierung in allgemeinen Komponentensystemen (J2EE, .NET, Webservices) in Angriff genommen werden. Dies würde zu einer weiteren Verbreitung der Technologie führen. In der Dissertation ergaben sich viele interessante Fragestellungen, die in den folgenden Jahren erörtert werden sollten. Eine für den praktischen Einsatz besonderes interessante Fragestellung ist aber die nach der automatischen Erzeugung von Protokollen, z.B. für legacy components (Altlasten). Dies würde den Anwender des Verifikationsprozess weiter entlasten.

Allgemeines Ziel dieser Entwicklungen ist aber immer, die Protocol Conformance in Komponentensystemen so zu verankern, dass sie jederzeit genutzt werden können. Dies würde dazu führen, dass sie ebenso alltäglich verwendet wird, wie Typprüfung in modernen Programmiersprachen.

Quellen/Arbeiten

Zum Seitenanfang