Abstraktion von zwei Komponenten
Ü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 Komponenten
Schnittstellen der zwei Komponenten
Quellcode zweier Komponenten
Es ist zu erkennen, dass die Komponente Cstart zwei IF-Blöcke enthält die verschiedene Aufrufe von Methoden der Komponente C0 durchführt. Wie zu sehen ist, wird als Bedingung die gleiche Variable k ausgewertet.
Erzeugte Abstraktionen
Abstraktes Verhalten zwei Komponenten
Es ist zu erkennen, dass Komponente Cstart die verschiedenen IF/ELSE-Blöcke darstellt (pS0, pS3). Es ist aber ebenso erkennbar, dass das abstrakte Verhalten alle möglichen Interaktionsfolgen abbildet. Gleichzeitig zeigt sich, dass bei der Erzeugung von Abstraktionen die Variablen nicht außer acht gelassen werden sollte. Da hier IF-Bedingungen nicht betrachtet wurden, wurde keni Zusammenhang zwischen den beiden IF-Blöcken erkannt. Deshalb ist z.B. die Interaktionsfolge ac in der Abstraktion möglich, obwohl sie nicht im Quellcode möglich ist. Es handelt sich also in diesem Fall um eine konservative, aber keine exakte Abstraktion.
Da in Komponente C0 keine weiteren Interaktionen ausgelöst werden, werden alle Einsprungpunkte direkt zum leeren Wort überführt, d.h. die Methoden werden nach dem Aufruf ohne weiteren Aufruf beendet.
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