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

Abstraktionsprozess einer Komponente

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

Gegebene 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

Abstraktion der Komponente C1

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

Zum Seitenanfang