Eine Systemumgebung zur Erstellung paralleler C++-Programme und deren Ausführung in heterogenen verteilten Systemen

Abstract

Factory Entwurfsmuster Der in diesem Abschnitt beschriebene Ansatz zur Realisierung der Anpassungsschicht verwendet das Abstract Factory Entwurfsmuster [34]. Die grundlegende Idee bei diesem Verfahren ist, die Abstraktionsschicht als Interface Klasse zu realisieren. Die Klasse Abstract Interface enthält somit ausschließlich rein virtuelle Methoden. Die Anpassungsschicht wird gebildet, indem für jede zu unterstützende Plattform die Methoden des definierten Interface in einer eigenen, abgeleiteten Klasse (zum Beispiel Adaptation Sys A) implementiert werden. Die Erzeugung eines entsprechenden Objekts für eine konkrete Implementierung erfolgt im Anwendungsprogramm indirekt über die Methoden einer analog organisierten Hierarchie von Factory Klassen. Dabei wird die Erzeugung eines plattformspezifischen Implementierungsobjekts der Anpassungsschicht an eine abgeleitete Klasse delegiert. In Abbildung 4.3 ist die Struktur dieser Klassenhierarchien in UML Notation dargestellt. Im Programmbeispiel 4.2 wird die Verwendung der beschriebenen Klassen gezeigt. Der in Anhang B dargestellte Programmcode weist auch Präprozessordirektiven auf. Im Gegensatz zur oben beschriebenen Präprozessormethode kommen diese jedoch nur an wenigen Stellen im Programmtext vor, im Wesentlichen um für die gewählte Plattform ein entsprechendes Factory-Objekt zu erzeugen. Dies ist unumgänglich, da grundsätzlich an einer Stelle im Programm die zu verwendende Plattform spezifiziert werden muss. 94 Designund Implementierungsaspekte Programmbeispiel 4.1 Die Präprozessormethode zur Realisierung der Anpassungsschicht #ifdef SYS_A typedef sysa_x_t X; typedef sysa_y_t Y; #endif #ifdef SYS_B typedef sysb_x_t X; typedef sysb_y_t Y; #endif class Adaptation { public: static Y syscall(X arg) { #ifdef SYS_A return ::syscall_A(arg); #endif #ifdef SYS_B return ::syscall_B(arg); #endif

Cite this paper

@inproceedings{Blochinger2002EineSZ, title={Eine Systemumgebung zur Erstellung paralleler C++-Programme und deren Ausf{\"{u}hrung in heterogenen verteilten Systemen}, author={Wolfgang Blochinger}, year={2002} }