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.2 Modularisierung<br />

die Quellcodedateien analysiert und aufgeteilt werden. Wird B<strong>in</strong>ärcode verarbeitet, so müssen<br />

diese Strukturen dar<strong>in</strong> identifizierbar se<strong>in</strong> (siehe Abschnitt 4.2.5.1).<br />

Das Identifizieren e<strong>in</strong>zelner Funktionen ist jedoch zum Teil auch notwendig, wenn man die<br />

Module entsprechend den Dateigrenzen def<strong>in</strong>iert. Denn für das Parken und Auslagern von Funktionalität<br />

wird e<strong>in</strong>e Schnittstelle benötigt. Die Schnittstelle e<strong>in</strong>er Funktion ist leicht zu erkennen<br />

und abzugrenzen. Bei e<strong>in</strong>er Datei besteht die Schnittstelle aus der Vere<strong>in</strong>igung der Schnittstellen<br />

aller enthaltenen Funktionen. Je nach Verfahren kann es somit auch bei Modularisierung auf<br />

Dateiebene notwendig se<strong>in</strong>, die e<strong>in</strong>zelnen Funktionen zu erfassen.<br />

Basisblöcke E<strong>in</strong>e noch fe<strong>in</strong>ere Untergliederung lässt e<strong>in</strong>e Aufteilung des Codes <strong>in</strong> Basisblöcke zu.<br />

E<strong>in</strong> Basisblock ist e<strong>in</strong> Codestück, welches l<strong>in</strong>ear durchlaufen wird. Basisblockgrenzen s<strong>in</strong>d somit<br />

Sprünge oder Sprungziele.<br />

Vorteil dieser Aufteilung ist, dass die Module sehr kle<strong>in</strong> s<strong>in</strong>d und somit e<strong>in</strong>e sehr flexible<br />

Konfiguration ermöglicht wird. Nachteil ist allerd<strong>in</strong>gs, dass sehr viele Module entstehen und<br />

es dadurch schwieriger wird, die Aufteilung nachzuvollziehen. Dies wird zusätzlich erschwert,<br />

da diese Aufteilung kaum durch Strukturelemente <strong>in</strong> den Programmiersprachen unterstützt ist,<br />

sodass die Module ke<strong>in</strong>e expliziten Namen durch den Entwickler zugeordnet bekommen.<br />

Des Weiteren ist die Extraktion von Basisblöcken aus B<strong>in</strong>ärcode architekturabhängig, da die<br />

Sprungbefehle identifiziert werden müssen.<br />

Klassen Bei objektorientierter Programmierung bieten sich weiterh<strong>in</strong> Klassen als Grenze zur Modularisierung<br />

an. Diese Aufteilung ist nicht so fe<strong>in</strong>granular wie auf Funktionsebene. Mit dieser<br />

Modularisierungsgranulariät kann der Wunsch, nur e<strong>in</strong>e Methode e<strong>in</strong>er Klasse auszulagern oder<br />

zu parken, nicht erfüllt werden. Betrachtet man Klassen nur unter dem Gesichtspunkt der Strukturierung,<br />

so stellen sie hauptsächlich e<strong>in</strong>e Sammlung von Funktionen dar, die auf geme<strong>in</strong>samen<br />

Daten arbeiten. E<strong>in</strong>e Modularisierung <strong>in</strong> Klassen lässt sich somit auf e<strong>in</strong>e Modularisierung <strong>in</strong><br />

Funktionen abbilden. Die zusätzliche Information der Klassenzugehörigkeit gibt jedoch e<strong>in</strong>en<br />

H<strong>in</strong>weis auf e<strong>in</strong>e geme<strong>in</strong>same Datenabhängigkeit der Methoden. Dieser H<strong>in</strong>weis kann bei der<br />

Entscheidung, ob e<strong>in</strong>e Methode ausgelagert werden soll, hilfreich se<strong>in</strong>.<br />

Zusammenfassend ist festzuhalten, dass sich, je nachdem, ob die Modularisierung auf Quellcode<br />

oder B<strong>in</strong>ärcodeebene stattf<strong>in</strong>den soll, e<strong>in</strong>ige Strukturelemente leichter extrahieren lassen als andere.<br />

Allgeme<strong>in</strong> bietet jedoch e<strong>in</strong>e Modularisierung auf Ebene der Funktionen die meisten Vorteile. Es lassen<br />

sich e<strong>in</strong>ige andere Modularisierungen nachbilden und e<strong>in</strong>en Teil des Aufwands zur Identifikation oder<br />

Extraktion muss ohneh<strong>in</strong> durchgeführt werden, um geeignete Schnittstellen zu f<strong>in</strong>den. Außerdem ist<br />

diese Aufteilung durch den Softwareentwickler nachvollziehbar. Grundsätzlich ist auch e<strong>in</strong>e Mischung<br />

der genannten Modelle möglich.<br />

4.2.3.2 Ausgangsbasis: B<strong>in</strong>ärcode oder Quellcode<br />

Möchte man e<strong>in</strong>e existierende Anwendung <strong>in</strong> Teile aufteilen, stellt sich die Frage, auf welcher Ausgangsbasis<br />

man ansetzen möchte. Hier hat man die Möglichkeit den Quellcode zu analysieren oder<br />

die bereits übersetzten Dateien zu verwenden. Das generelle Vorgehen ist für beide Ausgangsformate<br />

gleich:<br />

1. Zunächst werden die Ausgangsdateien e<strong>in</strong>gelesen.<br />

2. Anschließend werden sie analysiert, um die Module zu erstellen.<br />

39

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!