Aufgrund der hohen Dynamik und Heterogenität in verteilten Systemen ist die Entwicklung von Applikationen für solche Systeme aufwendig und schwierig. Daher ist eine Vielzahl von Werkzeugen entstanden, welche den Anwendungsentwickler bei seiner Tätigkeit unterstützen. Anhand der Art der Unterstützung lassen sich diese Werkzeuge in die drei Klassen Middleware- Systeme, Komponentensysteme und Koordinationssprachen unterteilen.
Es gibt mehrere Koordinationssysteme, die verschiedene dieser Werkzeuge zu einem Gesamtentwicklungssystem integrieren. Dieses ermöglicht es dann, verteilte Applikation durch Komposition heterogener Komponenten zu entwickeln. Um eine Erweiterbarkeit zu unterstützen, besitzt ein solches Entwicklungssystem i.a. eine Schichtenarchitektur. D.h., eine Applikation wird zuerst von einer speziellen, Applikationsklassen-abhängigen Schicht auf eine allgemeine Schicht abgebildet und diese dann auf das Zielsystem. Bei diesem Ansatz werden allerdings die Zielsystem-spezifischen Eigenschaften vor dem Entwickler verborgen, da sie i.a. nicht in der Zwischenschicht repräsentiert werden können. Dadurch können diese Fähigkeiten, die evtl. Potenzial für eine höhere Leistung der Applikation besitzen, nicht genutzt werden.
In dieser Arbeit wird der modular erweiterbare Rahmen ECL vorgestellt, der die Erstellung von oben beschriebenen Entwicklungssystemen mit einem zugehörigen Laufzeitsystem ermöglicht. Der Rahmen enthält keine Beschränkungen bzgl. der unterstützbaren Zielsysteme und Koordinationsparadigmen und eignet sich damit als Grundlage für beliebige Applikationsklassen.
Die Freiheit von Beschränkungen ergibt sich daraus, dass ECL kein allgemeines semantisches Modell besitzt, auf das alle Erweiterungen abgebildet werden müssen. Die einzige Einschränkung ist syntaktisch und besteht aus dem Einsatz einer Architekturbeschreibungssprache, so dass eine verteilte Applikation stets als statische Software-Architektur darstellbar ist.
Der Rahmen wird durch die Kombination mit Erweiterungsmodulen zu einem Entwicklungssystem, mit dem ein Applikationsentwickler verteilte Applikationen unter Einsatz eines grafischen Editors implementieren kann. Ein Erweiterungsmodul kann sowohl bestimmte Zielsysteme als auch bestimmte Koordinationsparadigmen unterstützen.
Hierfür enthält ein Erweiterungsmodul sowohl syntaktische als auch semantische Erweiterungen, die in den Rahmen integriert werden. Die syntaktischen Erweiterungen bestehen aus neuen Typen für Architekturelemente. Die semantischen Erweiterungen liegen in Form von Java-Klassen vor. Diese werden benutzt, um eine Applikationsarchitektur zu einem Geflecht von Java-Objekten zu übersetzen, welche dann zur Laufzeit die Koordination der einzelnen Applikationskomponenten durchführen.
Bei der Erstellung neuer Erweiterungsmodule können unter Einsatz von Vererbungsmechanismen vorhandene Erweiterungsmodule benutzt werden. Dies ermöglicht die Erstellung abstrakter Module, welche ein allgemeines Koordinationsparadigma unterstützen. Anhand verschiedener konkreter Implementierungen wurden Erfahrungswerte gewonnen, die als Entwurfsrichtlinien formuliert wurden.
Die allgemeine Praxistauglichkeit des System für den Anwendungsentwickler wurde anhand mehrerer Fallstudien evaluiert. Diese stammen aus zwei Applikationsklassen: verteilte Informations- und Kontrollsysteme und rechenintensive numerische Applikationen.
Es konnte demonstriert werden, dass sich aufgrund der komfortablen grafischen Entwicklungsumgebung der Entwicklungsaufwand für den Applikationsentwickler deutlich reduziert, da er sich nur wenig mit technischen Implementierungsdetails beschäftigen muss. Der durch den Einsatz des Systems zusätzlich auftretende Rechen- und Kommunikationsaufwand war bei allen Fallstudien vernachlässigbar.
The dynamic and heterogeneous nature of distributed systems makes the development of distributed applications a difficult task. Various tools, such as middleware systems, component systems, and coordination languages, offer support to the application developer at different levels.
There are several coordination systems that integrate such tools into a complete environment to build applications from heterogeneous components. To achieve extensibility they usually have a layered architecture: An application is first mapped to a middle layer and then to a target system. But this approach hides the specific features of a target system from the developer, as they are not represented in the middle layer, and often induces additional run-time overhead.
In this thesis the extensible coordination framework ECL is introduced that allows developers to build efficient distributed applications which exploit the specific features of the target systems. The framework can support every coordination paradigm and, thus, is not restricted to any application domain. The framework is free of any restrictions because it is not bound to a specific semantic model. The only restriction is syntactical: an architecture description language is used as middle layer. Every distributed application in ECL is represented by a static software architecture.
In combination with extension modules the framework becomes an integrated development environment for distributed applications. The developer can use a graphical editor to compose an application from components and to adapt the single components. An extension module can support specific application domains as well as specific target systems and generic coordination paradigms.
An extension module contains syntactical and semantical extensions which are integrated into the framework. The syntactical extensions consists of new architecture element types. The semantical extensions are Java classes. These classes are used to compile an application given as software architecture to a set of interconnected Java objects. At runtime this set of objects perform the coordination of the single application components.
A new extension module can reuse existing modules using inheritance mechanisms. This allows the developer to create an abstract extension module that contains a generic coordination paradigm. Experiences were gained through the implementation of several modules. They were used to formulate a set of guidelines for the design of extension modules.
The benefits of the system for the application developer was evaluated by several case studies. These studies belong to two different application domains: distributed information and control systems, and computationally intensive applications. It was shown that, because of the comfortable graphical environment, the effort for the implementation of distributed applications could be significantly reduced. This is because using the system the developer only must know the principles of the used systems. He does not need to know all the technical details. In addition, the additional computation and communication overhead of the ECL system was negligible in all case studies.