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
Abstraktionsprozess einer Komponente
Übersicht
Im Folgenden wird beschrieben wie der Quellcode in eine abstrakte Darstellung überführt wird. Dies ist nötig, da im Bereich von Service-orientierten Architekturen und Komponentensystemen nicht davon ausgegangen werden kann, dass der Quellcode mit veröffentlicht wird. Vielmehr können Komponenten von Drittanbietern benutzt werden, die darauf achten werden, dass die im Quellcode vorhandenen Geschäftsgeheimnisse verborgen bleiben.
Aus diesem Grund wird der Quellcode jeder Komponente in ein abstraktes Verhalten überführt. Dabei wird (bisher) nur der Kontrollfluss betrachtet. Algorithmen und Datenstrukturen bleiben so verborgen.
Genutzte Repräsentation: Process Rewrite Systems
In dieser Arbeit werden Process Rewrite Systems (PRS) genutzt, um das abstrakte Verhalten einer Komponente darzustellen. Sie ermöglichen der Darstellung von unendlichem Verhalten. Sie vereinigen das sequentielle Verhalten von Kellerautomaten (PDA) und das parallele Verhalten von Petri-Netzen.
Zu diesem Zweck wird ein paralleler und ein sequentieller Operator genutzt: "||" und ".".
Betrachtete Komponente
Gegebene Komponente
Die hier betrachtete Komponente implementiert eine Schnittstelle (Interface, z.B. WSDL) I1. Dieses gibt vor, welche Methoden angeboten werden und somit für Benutzer der Komponente zur Verfügung stehen. Die implementierte Komponente C1 will eine Komponente benutzen, die wiederum die Schnittstelle I2 implementiert.
Die Methode m von I1 muss asynchron/blockierend aufgerufen werden, ebenso wie die Methode a von I2. Im Gegensatz dazu wird b asynchron/nicht-blockierend aufgerufen, d.h. C1 wird weiter verarbeitet, auch wenn der Aufruf von b noch beendet wurde.
Abstrahiertes Verhalten
Das Verhalten der Komponente wird dadurch abgebildet, dass -- vereinfacht gesprochen -- relevante Programmpunkte durch Kanten verbunden werden. Alle Programmpunkte sind hier bereits markiert. Am Bild ist direkt erkennbar, wie die einzelnen Programmpunkte verbunden werden.
Wichtig sind zwei Aspekte:
- Bei der Ausführung eines blockierenden/synchronen Aufrufs an eine andere Komponente wird der sequentielle PRS-Operator "." verwendet. Diesen Semantik sichert, dass -- im Beispiel -- q(I1,a) erst beendet werden muss, bevor p3 weiter verarbeitet werden kann.
- Bei der Ausführung eines nicht-blockierenden/asynchronen Aufrufs parallele PRS-Operator "||" verwendet. Folglich können q(I1,b) und q5 unabhängig voneinander verarbeitet werden
Wir die Ausführung eines Aufrufs der Komponente beendet wird das leere Wort erzeugt, also die zuletzt verwendete Konstante entfernt, im Beispiel bei p5.
Abstraktion der Komponente C1
Zusammenfassung
Das abstrakte Verhalten enthält nur das Verhalten der Komponente in Bezug auf die ausgehenden Aufrufe. Es lässt sich also (formal) darstellen, wann welche Interaktion ausgelöst werden kann. Das Verfahren wurde erstmalig in BZ08a gezeigt. Dabei wurde eine spezielle PRS-Darstellung genutzt, die keine Synchronisation erlaubt. In BZ08b wurde das Abstraktionsverfahren so erweitert, dass auch Synchronisation dargestellt werden kann.
Dieses abstrahierte Verhalten kann nun für die Überprüfung der Komponenten genutzt werden, ohne dass der Quellcode jeder Komponente frei gegeben werden muss.
Quellen
- [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