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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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

Zeichen <strong>in</strong> der Sprache C (char*). Mit diesem Datentyp kann nicht nur e<strong>in</strong> e<strong>in</strong>zelnes Zeichen, sondern<br />

auch e<strong>in</strong> Feld von Zeichen referenziert werden. Die Länge des Feldes muss dabei durch zusätzliche<br />

Angaben gegeben se<strong>in</strong> oder ist durch e<strong>in</strong> spezielles Zeichen festgelegt, wie es für nullterm<strong>in</strong>ierte Zeichenketten<br />

üblich ist. Welche der Bedeutungen geme<strong>in</strong>t ist, muss durch zusätzliches Wissen def<strong>in</strong>iert<br />

se<strong>in</strong>.<br />

E<strong>in</strong>e allgeme<strong>in</strong>e Beschreibungssprache unterliegt nicht diesen Beschränkungen. Hier kann man<br />

explizit festlegen, dass es sich beispielsweise um e<strong>in</strong>e nullterm<strong>in</strong>ierte Zeichenkette handelt oder dass<br />

sich es sich um e<strong>in</strong> Feld variabler Länge handelt, dessen Länge im nächsten Parameter der Funktion<br />

übergeben wird [Mic07].<br />

4.5.8.3 Verbesserung der Debug<strong>in</strong>formationen<br />

Aufgrund der unzureichend genauen Typ<strong>in</strong>formationen, mancher Programmiersprachen, ist auch bei<br />

der Verwendung von Debug<strong>in</strong>formationen vorgesehen, zusätzliches Wissen e<strong>in</strong>zub<strong>in</strong>den. Dies kann<br />

durch die Verwendung e<strong>in</strong>er externen Schnittstellenbeschreibung erfolgen. Dabei können die Vorteile<br />

beider Ansätze komb<strong>in</strong>iert werden. Es bleibt jedoch der Nachteil bestehen, dass die Beschreibung<br />

extern anzufertigen und zu pflegen ist.<br />

Zur Vermeidung dieses Nachteils kann man auch den Quelltext um zusätzliche Informationen anreichern.<br />

Viele Programmiersprachen, wie beispielsweise C, lassen es zu, dass man eigene Datentypen<br />

def<strong>in</strong>iert (typedef). Diese Datentypen s<strong>in</strong>d <strong>in</strong> den Debug<strong>in</strong>formationen sichtbar. Bei der Softwareentwicklung<br />

kann man nun darauf achten, dass man e<strong>in</strong>deutige Datentypen def<strong>in</strong>iert und verwendet.<br />

So kann man sich beispielsweise e<strong>in</strong>en Datentyp Zeichenkette def<strong>in</strong>ieren, der technisch gesehen<br />

e<strong>in</strong>em char* entspricht. Wird nun an allen Stellen, an denen eigentlich e<strong>in</strong>e nullterm<strong>in</strong>ierte Zeichenkette<br />

übergeben wird, der neue Datentyp e<strong>in</strong>gesetzt, so ist es möglich, aus den Debug<strong>in</strong>formationen<br />

e<strong>in</strong>e genauere Beschreibung der Schnittstelle zu extrahieren. Äquivalente Datentypen können auch für<br />

Felder variabler oder fester Länge erstellt werden.<br />

Der Nachteil dieses Ansatzes ist allerd<strong>in</strong>gs, dass dieses Verfahren bereits während der Entwicklung<br />

der Software berücksichtigt werden muss und sich nicht ohne Änderung auf existierende Programme<br />

anwenden lässt. Des Weiteren muss die Technik von den Entwicklern akzeptiert werden. Im Allgeme<strong>in</strong>en<br />

ist es aber gar nicht so ungewöhnlich, spezielle Typen für Zeichenketten oder Felder zu verwenden.<br />

E<strong>in</strong> Beispiel hierfür s<strong>in</strong>d die Richtl<strong>in</strong>ien zur Programmentwicklung für Symbian OS [Nok04], welche<br />

die Verwendung spezieller Typen für Zeichenketten und Felder vorschlagen, um die Länge dieser<br />

Konstrukte explizit zu erfassen. Egal, ob der Grund die Übersichtlichkeit, die Vermeidung von Fehlern<br />

oder die Kennzeichnung verschiedener Datentypen ist, mit diesem Hilfsmittel enthalten die Debug<strong>in</strong>formationen<br />

genügend Informationen, um daraus e<strong>in</strong>e ausreichend genaue Schnittstellenbeschreibung<br />

zu erstellen.<br />

4.5.8.4 Datentypenkonvertierung<br />

Auf der Basis der Typ<strong>in</strong>formationen stellt die Basisschicht Funktionen zur Konvertierung der Daten<br />

zwischen verschiedenen Architekturen zur Verfügung. Die Funktionen passen die Byteordnung und die<br />

Größe primitiver Datentypen an und können rekursiv auch zusammengesetzte Datentypen umwandeln.<br />

Trifft die Funktion auf e<strong>in</strong>en Zeiger, so wird e<strong>in</strong>e Hilfsfunktion verwendet, die den Zeiger konvertieren<br />

muss. Sie muss situationsabhängig das Ziel des Zeigers zunächst auf den Verwalter kopieren oder<br />

den Zeiger als Integerwert <strong>in</strong>terpretieren. Verwendet wird die Datentypkonvertierung bei der Vor- und<br />

Nachbereitung e<strong>in</strong>es Fernaufrufs.<br />

90

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!