Kontakt
Andreas Both
Institut für Informatik
Martin-Luther-Universität
Halle-Wittenberg
andreas.both@informatik.uni...
Raum 3.21
Von-Seckendorff-Platz 1
06120 Halle
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.
Übersicht
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
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
- [BZ08a] Andreas Both and Wolf Zimmermann. Automatic protocol conformance checking of recursive and parallel component-based systems. In Michel R. V. Chaudron, Clemens A. Szyperski, and Ralf Reussner, editors, Component-Based Software Engineering, 11th International Symposium (CBSE 2008 ), volume 5282 of Lecture Notes in Computer Science, pages 163–179. Springer , October 2008. BibTEX
- [BZ08b] Andreas Both and Wolf Zimmermann. Automatic protocol conformance checking of recursive and parallel component-based systems. Technical Report 2008/01, University Halle-Wittenberg, Institute of Computer Science, June 2008. BibTEX
- [BZ08c] Andreas Both and Wolf Zimmermann. Automatic protocol conformance checking of recursive and parallel BPEL systems. IEEE Sixth European Conference on Web Services (ECOWS ’08 ), 0:81–91, IEEE , 2008. BibTEX
- [BZ09a] Andreas Both and Wolf Zimmermann. Model checking of component protocol conformance – optimizations by reducing false negatives. In International Workshop on Formal Aspects of Component Software (FACS’09 ), Eindhoven, November 2009 (to be published as extended version in ENTCS ). BibTEX
- [BZ09b] Andreas Both and Wolf Zimmermann. On more predictable implementations of reliable workflows in service-oriented architectures. IEEE Seventh European Conference on Web Services (ECOWS ’09 ), 0: 87-96, IEEE , November 2009. BibTEX
- [BZ09c] Andreas Both and Wolf Zimmermann. Sicherstellung der Funktionalität in Komponentensystemen und Service-orientierten Architekturen. In Erik Maehle Stefan Fischer and Rüdiger Reischuk, editors, GI-Jahrestagung , volume 154 of Lecture Notes in Informatics , pages 425;3336–3349. GI, 2009. BibTEX
- [BZ09d] Andreas Both and Wolf Zimmermann. A step towards a more practical protocol conformance checking algorithm. In 35th Euromicro Conference on Software Engineering and Advanced Applications (SEAA 2009 ), pages 458–465. IEEE Computer Society , August 2009. BibTEX
- [BZ09e] Andreas Both and Wolf Zimmermann. Supporting the development process of reliable software during the composition process using interaction protocols. Technical Report 2009/04, University Halle-Wittenberg, Institute of Computer Science, September 2009. BibTEX
- [FB09] Rene Franke and Andreas Both. Tool demo: Component-based infrastructure for protocol conformance checking of component-based software. In International Workshop on Formal Aspects of Component Software (FACS’09 ), Eindhoven, November 2009. BibTEX