14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4 Basisschicht e<strong>in</strong>es Verwalters<br />

Austauschens verwendet, der <strong>in</strong> ähnlicher Form auch im Rahmen des Parkens e<strong>in</strong>gesetzt wird, um e<strong>in</strong><br />

Modul durch e<strong>in</strong>en Stellvertreter zu ersetzen. Wird das Modul dann verwendet, so leitet der Stellvertreter<br />

den Aufruf an den Verwalter weiter. Dabei müssen die benötigten Daten zum Zielknoten transportiert<br />

werden. Da der Verwalter üblicherweise e<strong>in</strong>e andere Hardwarearchitektur hat als die verwalteten<br />

Knoten, müssen die Daten entsprechend umgewandelt werden. Die Umwandlung, Marshall<strong>in</strong>g genannt,<br />

wird dabei empfangsseitig durchgeführt. Das heißt, dass der Verwalter die Daten im Format des<br />

verwalteten Knotens empfängt und sie dann <strong>in</strong> se<strong>in</strong> eigenes Format umwandelt. Dadurch soll die<br />

Belastung des verwalteten Knotens möglichst ger<strong>in</strong>g gehalten werden.<br />

Für die Durchführung des Marshall<strong>in</strong>gs werden die genaue Struktur und die genauen Typen der<br />

Daten und Parameter benötigt. Diese Information kann von außen, zum Beispiel <strong>in</strong> Form e<strong>in</strong>er erweiterten<br />

Schnittstellenbeschreibung, zugeführt werden. Im Rahmen dieser Arbeit wird jedoch auch<br />

e<strong>in</strong> Mechanismus vorgestellt, die Informationen automatisch aus zusätzlichen compilergenerierten<br />

Informationen zu extrahieren (siehe Abschnitt 4.5.8).<br />

4.2 Modularisierung<br />

Um Software zu partitionieren oder zu verteilen, muss man sie <strong>in</strong> Abschnitte zerschneiden, sogenannte<br />

Verteilungse<strong>in</strong>heiten, die als Basis der Operation dienen. Nachfolgend soll die Aufteilung <strong>in</strong> solche<br />

Bauste<strong>in</strong>e beschrieben werden. Dabei dient die Zergliederung nicht nur der Verteilung, sondern<br />

bildet auch die Ausgangsbasis, um die Struktur der Anwendung zu erfassen und zu analysieren.<br />

Die resultierenden kle<strong>in</strong>en E<strong>in</strong>heiten stellen die Module dar, die bereits <strong>in</strong> vorherigen Abschnitten<br />

angesprochen wurden.<br />

Erstellt man e<strong>in</strong>e Anwendung von Beg<strong>in</strong>n an unter dem Gesichtspunkt der Modularisierung, so<br />

kann bereits <strong>in</strong> der Entwicklungsphase die E<strong>in</strong>teilung <strong>in</strong> Module vorgesehen werden. E<strong>in</strong>e Möglichkeit<br />

besteht dar<strong>in</strong>, die Software mithilfe e<strong>in</strong>es Komponentenmodells zu entwickeln. Dadurch wird man<br />

automatisch e<strong>in</strong>e entsprechende Strukturierung <strong>in</strong> Komponenten vornehmen, welche dann unsere<br />

Module darstellen können. Komponentenmodelle werden <strong>in</strong> Abschnitt 4.2.2 kurz beschrieben.<br />

Um e<strong>in</strong> modulares Design zu erstellen und die Modularität im Laufe der Entwicklung sicherzustellen,<br />

muss bei der Entwicklung zusätzlicher Aufwand <strong>in</strong> Form von Planungs- und Entwicklungszeit <strong>in</strong>vestiert<br />

werden. Diese Mehrkosten werden jedoch häufig nicht <strong>in</strong> Kauf genommen, da der Vorteil e<strong>in</strong>er späteren<br />

Aufteilung <strong>in</strong> e<strong>in</strong>zelne E<strong>in</strong>heiten bei der Entwicklung nicht h<strong>in</strong>reichend begründet werden kann.<br />

Daher sollen für die <strong>in</strong> dieser Arbeit vorgestellte Basis<strong>in</strong>frastruktur ke<strong>in</strong>e besonderen Modularisierungsanforderungen<br />

an die Software gestellt werden. Es soll stattdessen beliebige existierende Software<br />

verwendet werden können, auch wenn sie nicht vorwiegend mit dem Gedanken der Modularität<br />

entwickelt wurde.<br />

Die erste Aufgabe des Systems ist somit die Aufteilung der Software <strong>in</strong> Module. Die Zergliederung<br />

soll dabei an funktionalen Grenzen der Software orientiert se<strong>in</strong>. Um automatisch e<strong>in</strong>e s<strong>in</strong>nvolle Aufteilung<br />

vorzunehmen, ist <strong>in</strong>haltliches Wissen über die Software nötig. Die Basissoftware e<strong>in</strong>es Verwalters<br />

ist jedoch allgeme<strong>in</strong> verwendbar und unabhängig von der e<strong>in</strong>gesetzten Software. Semantische Informationen<br />

über die Funktion der Software werden erst durch die höhere Kontrollschicht dem System<br />

zugeführt. Der wichtigste Ansatzpunkt ist daher die Frage, an welchen Stellen man die Software <strong>in</strong><br />

Module aufteilen kann.<br />

Hier bieten die grundlegenden Programmstrukturen e<strong>in</strong>en möglichen Ansatzpunkt, auch ohne<br />

explizites <strong>in</strong>haltliches Wissen e<strong>in</strong>e nachvollziehbare Aufteilung vorzunehmen. E<strong>in</strong>e grundlegende<br />

Strukturierung der meisten Programme ist durch ihre Organisation <strong>in</strong> e<strong>in</strong>zelne Funktionen und Daten<br />

beziehungsweise, bei objektorientierter Programmierung, <strong>in</strong> Klassen und Objekte gegeben. Die Ba-<br />

34

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!