Seminar „Component and Aspect Engineering“ im WS03/04 FlexiBeans / FreEvolve von Alexander...
description
Transcript of Seminar „Component and Aspect Engineering“ im WS03/04 FlexiBeans / FreEvolve von Alexander...
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 1
Seminar„Component and Aspect Engineering“
im WS03/04
FlexiBeans / FreEvolve
von Alexander Höck
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 2
Inhalt
Flexi Beans
FreEvolve
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 3
JavaBeans - Schwächen
Kommunikation nur via Events
Unterscheidung „Absender“
Keine integrierte Remote-Unterstützung
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 4
FlexiBeans: Überblick
Anpassung von JavaBeans
Ziel: Benötigte Änderungen bzgl. FreEvolve
Schnittstellen werden Ports genannt
Erweiterung um die Punkte: Shared Variable Interaction Port Names ( Absenderunterscheidung) Remote Interaction
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 5
FlexiBeans: Shared Variable Interaction (1)
Realisiert als Objekte
Zugriff über Interface
Methoden für Datenzugriff (z.B. getValue/setValue)
Component A Component B Interface
Component A Component B
Shared Object
Interface
Möglich: Implementation des Interface durch eine Komponente
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 6
FlexiBeans:Shared Variable Interaction (2) Eine Komponente muss
Shared Object instanzieren bietet Port zum „Holen“ des Objekts Konvention:
Andere Komponenten bietet Port zum „Setzen“ und „Vergessen“ des Objekts Konvention:
public <Interface> getShared<Interface>_<Port_Name>();
public setShared<Interface>_<Port_Name>(<Inteface> o);public forgetShared<Interface>(<Inteface> o);
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 7
FlexiBeans:Shared Variable Interaction (3) Problem:
Multithreading
KomponenteA
KomponenteB
SharedObject
Zeit
23readread
set(24)
set(24)
24 (statt 25)
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 8
FlexiBeans:Java Events
ähnlich wie bei JavaBeans
Kontrollfluss wird an Empfänger übergeben
zusätzlich zu JavaBeans: Benannte Ports mehrere Envent-Listener vom selben Typ
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 9
FlexiBeans:Remote Interaction Realisation via Java RMI
Folgen: Event-Quelle muss RemoteException abfangen Empfänger muss die Klasse UnicastRemoteObject erweitern
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 10
FreEvolve: Eigenschaften
Komponentenbasiert
Anpassungen zur Laufzeit möglich
Client- / Server-Architektur
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 11
FreEvolve: Anwendungen
Anwendungen bestehen aus: FlexiBeans Komponenten
Anwendungen werden definiert durch: Client-CAT Server-CAT Remote bind Dateien DCAT Dateien Benutzertabelle
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 12
FreEvolve: CAT
i_component Package.ComboBox{ required Werteliste RemoteList sharedObject; provided ValueChanged RemoteActionListener event; config_parameter Pos int; config_parameter Width int;}
Atomare Komponente i_component:
a_component Auswahl{ required Werteliste RemoteList sharedObject; provided ExitEvent RemoteActionListener event; subcomponent feld Package.ComboBox{ Pos := 100; Width := 200; } bind Werteliste - feld.Werteliste; bind ExitEvent – feld.CalueChanged;}
Komplexe Komponente a_component / s_component:
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 13
FreEvolve: CAT
Komponente 1 Komponente 2
X
required
provided
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 14
FreEvolve: Client-/Server-CAT(1)
Strukturbeschreibung Client-Seite der Anwendung
Listet die verwendeten FlexiBeans (als i_component)
Definiert (mindestens eine) komplexe Komponente
Bei Server-CAT: keine sichtbaren Komponenten
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 15
FreEvolve: Client-/Server-CAT(2)
i_component Package.ComboBox{ required Werteliste RemoteList sharedObject; provided ValueChanged RemoteActionListener event; config_parameter Pos int; config_parameter Width int;}
FlexiBean als i_component:
a_component Auswahl{ required Werteliste RemoteList sharedObject; provided ExitEvent RemoteActionListener event; subcomponent feld Package.ComboBox{ Pos := 100; Width := 200; } bind Werteliste - feld.Werteliste; bind ExitEvent – feld.CalueChanged;}
Komposition als a_component:
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 16
FreEvolve: Remote Binds
Spezifikation, wie zwei CATs verbunden sind. Normalerweise: Verbindung von Client- & Server-CAT Notwendig weil:
mehrere Ports von einem Typ möglich unverbundene Ports möglich
Format: rbind PortXYZVonTypABC – PortZYXVonTypABC;
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 17
FreEvolve: DCAT
die genannten Definitionen zusammenfügens_component Anwendung{ subcomponent anwendungsClient ClientCAT LOCAL; subcomponent anwendungsServer ServerCAT SERVER; bind anwendungsClient anwendungsServer remoteBindDatei;};
hier: Client / Server andere Konstellationen auch beschreibbar
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 18
FreEvolve: Benutzerverwaltung
Berechtigungen je DCAT-Datei je Beutzer
Menüstruktur von FreEvolve Plattform erstellt
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 19
FreEvolve: Zusammenspiel
Benutzer
A DCAT1B DCAT1A DCAT2C DCAT3
DCAT
CAT1CAT2CATA
Server CAT
FelxiBean1
Remote Bind
...
Client CAT
FlexiBean1FlexiBean2
Class Files
FlexiBean1FlexiBean2
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 20
FreEvolve: Anpassungs-API
zur Laufzeit möglich von jeder Stelle im Netzwerk/Internet Verschiedene Möglichkeiten:
direkt über API aus der Anwendung über 3D-User-Interface über Agenten
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 21
FreeVolve: Anpassung zur Laufzeit
Durch Proxy-Objekte vereinfacht
Komponente 1
Komponente 2
Proxy
Komponente 3
Problematisch: Feste Objektreferenzen
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 22
Fre
Evo
lve:
Str
uktu
r
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 23
Zusammenfassung
FlexiBeans: Erweiterung von JavaBeans Shared Objects RMI
FreEvolve: Client- / Server-Architektur Komponentenbasiert (FlexiBeans) Anpassungen zur Laufzeit Elegante Möglichkeiten zur Anpassung (3D, Agenten, 2D,...)
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 24
Quellen
Stiemerling, Oliver: Component-Based Tailorability (Dissertation)
Hinken, Ralph: Verteilte komponentenbasierte Anpassbarkeit für Groupware (Diplomarbeit)
O. Stiemerling, P. Constanza, A.B. Cremers: Object Identity and Dynamic Recomposition of Components
http://www.freevolve.org