Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls
Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties (Clemens Szyperski) Peter Löhr und Karl Pauls 1
Software-Komponente Is a unit of independent deployment (Autarkie) Seperated from it s environment and other components Never deployed partially Is a unit of third-party compositon (Kapselung) Sufficiently self-contained Clearly specifies what it requires and provides No (externally) observable state Cannot be disinguished from copies of it s own In any given process there will be at most one copy of a particular component Peter Löhr und Karl Pauls 2
Software-Komponente Autarkie: Eine Komponente ist für die Erbringung ihrer Funktionalität (möglichst) nicht auf die Mitwirkung anderer Komponenten angewiesen Kapselung: Funktionalität einer Komponente ist durch Schnittstelle, Spezifikation und Parameter des Komponententyps erschöpfend beschrieben Peter Löhr und Karl Pauls 3
Software-Komponente Rekursivität: System ist selbst wiederum als gekapselter Komponententyp bei der Komposition eines größeren Systems verwendbar Peter Löhr und Karl Pauls 4
Muster, Rahmenwerke, Architekturen Wiederverwendung von Design: Beständigkeit : Programmiersprachen Abstraktion: Bibliotheken (Abhängigkeiten) Spezifikation: Schnittstellen (Abhängigkeiten) Interaktionsarten: Nachrichten und Protokolle Interaktions-Architekturen: Muster Subsystem-Architekturen: Rahmenwerke System-Architekturen: Hierarchien und Schichten Peter Löhr und Karl Pauls 5
Abhängigkeiten Exemplar (Instance Level) Typ (Deployment Level) Abhängigkeit auf Dienst (Instance Dependency) Abhängigkeit auf Bibliothek (Deployment Dependency) Peter Löhr und Karl Pauls 6
Komposition Peter Löhr und Karl Pauls 7
Komposition von Komponenten Interaktion Ereignisbasiert Aufrufbasiert Pipe and Filter Abhängigkeitsauflösung Exemplar wird erzeugt Komposition z.b. Pipeline in der Unix Shell: > trans grep $1 sort Peter Löhr und Karl Pauls 8
Abstrakte Sicht Kitt: Vereinbarung der Architektur des Systems Angabe der Komponenten und ihrer Typen Interaktion zwischen ihnen Mittels geeigneter formaler Sparche (Programmiersprache, Skriptsprache, Koordinationssprache, graphische Sprache,...) Peter Löhr und Karl Pauls 9
Komposition (Am Beispiel von OSGi) Life-cycle Management: Peter Löhr und Karl Pauls 10
Komposition (Am Beispiel von OSGi) Entfernt steuerbares Rahmenwerk Komponenten können zur Laufzeit geladen werden Life-cycle Management Peter Löhr und Karl Pauls 11
Komposition (Am Beispiel von OSGi) Bekanntmachung (Manifest) enthält Meta-Daten Peter Löhr und Karl Pauls 12
Komposition (Am Beispiel von OSGi) Peter Löhr und Karl Pauls 13
Komposition (Am Beispiel von OSGi) Bundles importieren bzw. exportieren Java Packages Peter Löhr und Karl Pauls 14
Komposition (Am Beispiel von OSGi) Framework kümmert sich um Life-cycle Management Peter Löhr und Karl Pauls 15
Komposition (Am Beispiel von OSGi) Bundles importieren bzw. exportieren Dienste (Java Interfaces mit extern spezifizierter Semantik) Peter Löhr und Karl Pauls 16
Komposition (Am Beispiel von OSGi) Bundles importieren bzw. exportieren Dienste (Java Interfaces mit extern spezifizierter Semantik) Peter Löhr und Karl Pauls 17
Inversion of Control (Am Beispiel von Gravity) Life-Cycle und Abhängigkeits Verwaltung von Diensten Peter Löhr und Karl Pauls 18
Inversion of Control (Am Beispiel von Gravity) Service Component http://gravity.sf.net Peter Löhr und Karl Pauls 19
Inversion of Control (Am Beispiel von Gravity) ServiceBinder für OSGi Meta-Data in extra Datei in Bundle Cardinaltiy, policy, filter http://gravity.sf.net Peter Löhr und Karl Pauls 20
Themenkategorisierung Von einfach bis leichtgewichtig: Java Beans Magic Beans OSGi Angewandt: Eclipse Visualisierung: UML 2.0 Adaption: Gravity and Autonomous Adaption to Dynamic Availability Peter Löhr und Karl Pauls 21
Themenkategorisierung Schwergewichtig: EJB / J2EE Corba Components (CCM) und Corba Trader MS.Net - Assemblies Deployment ModulLoader Jini SmartFrog - Smart Framework for Object Groups AID Peter Löhr und Karl Pauls 22