Martin-Luther-Universität Halle-Wittenberg

Logo des Lehrstuhls Software-Engineering und Progammiersprachen

Weiteres

Login für Redakteure

Abstraktion von zwei Komponenten

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

Schnittstellen der zwei Komponenten

Schnittstellen der zwei Komponenten

Quellcode zweier Komponenten

Quellcode zweier 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

Abstraktes Verhalten zwei Komponenten

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

Zum Seitenanfang