Seminar-Layout

Download Report

Transcript Seminar-Layout

SOFA & DCUP
Software Appliances & Dynamic Component Update
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
1
Das SOFA-Project

SOFA steht für „Software Appliances“

Gründer des SOFA-Projects:
 Abteilung für Software-Entwicklung der Karls-Universität Prag,
Tschechische Republik
 Ziel: Entwicklung einer Software-Umgebung mit besonderem
Augenmerk auf die „Beziehung zwischen Software-Anbieter und
Software-Benutzer“

Aktueller Entwicklungsstand:
 Prototyp in Java 2
 Experimentelle Implementation in C++
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
2
Ziele und Prinzipien von SOFA

Dynamischer Download von Komponenten

Dynamisches Update von Komponenten zur Laufzeit (DCUP)

Komponenten-Hierarchie

Einsatz auf verteilten Systemen

Verschiedene Komponenten-Versionen parallel
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
3
SOFA Component Model

Grundlegende Eigenschaften von SOFA Applikationen sind
durch das SOFA Component Model fest definiert.

Eine SOFA Komponente besteht grundsätzlich aus:
 Provided und Required Interfaces
 Frame (black-box view)
 Architecture (gray-box view)
 Connectors
 Behaviour protocols
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
4
SOFA-Components

Primitive Component

Composed Component
 Enthält keine weiteren
Subkomponenten sondern
ist direkt implementiert
 Ausschließlich
zusammengesetzt aus
anderen Komponenten
 Enthält letztendlich alle
Funktionalitäten
 Enthält keine eigentlichen
Funktionalitäten, sondern
benutzt und kombiniert die
Funktionalitäten anderer
Komponenten
 Atomare Teile des
Baukastenprinzips
– (Analogie: LEGO-Steine)
 Baukastenprinzip
– (Analogie: Gebilde aus
LEGO-Steinen)
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
5
Frame/Black-Box-Ansicht

Das Frame ist die BlackBox-Ansicht einer
Komponente
 Inhalt der Black-Box ist nicht
bekannt, sondern nur die
Funktion
 requires und provides
Interfaces zum Verbinden
mit anderen Komponenten
Provides
Interfaces
Requires
Interfaces
Black-Box
Black-Box-Ansicht einer Komponente
 Baukastenprinzip
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
6
Architecture/Grey-Box-Ansicht
subsuming
binding

Die Architecture beschreibt
das Innere eines Frames
1
 Composed Components
bestehen aus miteinander
verknüpften
Unterkomponenten
 Einem Frame können
mehrere Architectures
zugrunde liegen
2
3
delegating
 Verschiedene Versionen
Gray-Box-Ansicht einer Composed Component
exempting
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
8
Hierarchie
While ...
If...
Then..
..
Usw.
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
9
Component Definition Language (CDL) I

CDL ist die SOFA-Sprache zur Definition von Komponenten

CDL dient zur Beschreibung von :
 Interfaces
 Frames
 Architectures
 Bindings
 Protocols

Basiert auf OMG IDL
 OMG = Object Management Group
 IDL = Interface Definition Language
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
10
Component Definition Language (CDL) II
Interface-Definition
Return-Typ: CentralPlayerServices
Name: Login
Name: login
Eingabe-Typ:
String
Frame-Definition
Name: Client
provided und required
Interfaces werden definiert
Architecture-Definition
inst = Instanzierung
Connectors werden definiert
interface Login {
CentralPlayerServices login(in string who);
};
frame Client {
provides:
Client iClient;
requires:
Login iLogin;
CentralPlayerServices iCPS;
};
architecture CUNI GameGen implements
GameGenerator {
inst GameGeneratorDBServices aGGDBS;
inst ConfigurationFileParser aConfig;
inst GameGeneratorFunctionality func;
bind func:iConfig to aConfig:iConfig;
bind func:iGGDB to aGGDBS:iGGDB;
subsume aGGDBS:iDatabase to iDatabase;
};
Sourcecode-Beispiel in CDL
(Quelle: SOFA Implementation Manual)
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
11
Type Information Repository (TIR) I

CDL-Beschreibungen werden im Type Information Repository
(TIR) kompiliert und verwaltet

Jedes Element im TIR ist eindeutig identifiziert durch
 Seinen Namen
 Definiert in der CDL-Spezifikation
 Seine Specification Version
 Die Version eines neuen Elements wird automatisch anhand des TIR-Inhalts und
des gewählten Profiles berechnet.

Ein Profile ist eine Liste von Tupeln der Art (Name, Version)
 Bestimmt die richtige Version beim Kompilieren
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
12
Type Information Repository (TIR) II

Die Versions-Wahl beim Kompilieren geschieht nach folgenden
Prioritäten:
1) Der Entwickler hat die gewünschte Version direkt in der CDLDefinition vorgeschrieben
2) Dem Namen der Komponente wird im aktiven Profil eine Version
zugeordnet
3) Die neueste Version wird gewählt
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
13
Connectors
Zur Erinnerung:
delegating


Connectors realisieren die
Verbindungen zwischen
Interfaces
SOFA behandelt Connectors
analog zu Komponenten:
binding
 Primitve Connector
 Direkt implementiert
1
2
 Composed Connector
3
 Zusammengesetz aus primitive C.s

Drei vordefinierte Connectors:
 CSProcCall
 EventDelivery
 DataStream
subsuming
exempting
Grey-Box-Ansicht einer Composed Component
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
14
Events


Es gibt vier verschiedene Events, die bei der Kommunikation zwischen
Komponenten auftreten können
In dem von uns betrachteten Modell werden Events mit atomaren Event
Tokens behandelt:
Event Name
Event Token für Methode m
Methodenaufruf senden
!m^
Methodenaufruf empfangen
?m^
Antwort senden
!m$
Antwort empfangen
?m$
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
15
Behaviour

Eine Abfolge von Events, dargestellt durch Event Tokens, nennt man Trace
 Bsp.:
<!m^; ?m$; !n^; ?n$;>
 Ruft Methode m auf, wartet auf Return, ruft Methode n auf und wartet auf Return

Die Menge aller möglichen Traces einer SOFA Einheit nennt man
Behaviour
 Bsp. für das Interface i1 :
{<?.i1.m^; !.i1.m$>,<?.i1.n^; !.i1.n$>}
 Das Interface i1 erwartet entweder den Aufruf von Methode m oder Methode n und antwortet
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
16
Behaviour Protocols I

Da Konstrukte wie
{<?.i1.m^; !.i1.m$>,<?.i1.n^; !.i1.n$>}
nicht gut lesbar sind, gibt es Behaviour Protocols
 Behaviour Protocol des obigen Ausdrucks:
Prot-F = ?i1.m + ?i1.n
 ‚?m‘ steht abkürzend für (?m^; !m$)
 ‚+‘ bezeichnet Alternative

Behaviour Protocols werden direkt in CDL Code integriert
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
17
Zusammenfassung






Primitive & Composed Components
Frame (Black-Box) & Architecture (Grey-Box)
Component Definition Language (CDL)
Type Information Repository (TIR)
Connectors
Events & Behaviour Protocols
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
19
SOFAnodes I

Ein SOFAnode ist eine Umgebung zur
 Entwicklung
 Verteilung
 Ausführung
von SOFA Applikationen

Mehrere SOFAnodes können zu einem SOFAnet
verbunden werden
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
20
SOFAnodes II

Ein SOFAnode besteht aus max.
fünf logischen Teilen:
IN
 Template Repository (TR)
 Enthält Implementation und CDL-Code
aller Komponenten
 MADE part
 Umgebung zur Erstellung neuer
RUN
TR
MADE
Komponenten (CDL Compiler, TIR, Code
Generator)
 IN und OUT part
 Zur automatischen Verteilung von
Komponenten zwischen SOFAnodes
 RUN part
OUT
 Laufzeitumgebung
Schematische Darstellung eines SOFAnodes
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
21
SOFAnet
0
0
RUN
TR
MADE
RUN
IN
TR
MADE
OUT
OUT
RUN
TR
IN
MADE
RUN
0
TR
MADE
0
Schematische Darstellung eines SOFAnets
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
22
Dynamic Component Update (DCUP) I

DCUP ist eine Erweiterung von SOFA-Komponenten und
ermöglicht sicheres Updaten zur Laufzeit

Eine DCUP-Komponente besteht aus zwei Teilen:
 Permanent Part
 Kein Update möglich
 Bei allen Versionen einer Komponente identisch
 Replaceable Part
 Austauschbar
 Verschiedene Versionen einer Komponente unterscheiden sich hier
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
23
Dynamic Component Update (DCUP) II

DCUP-Komponenten enthalten zwei Kontrollobjekte:
 Component Manager (CM)
 Kontrolliert den Lebenszyklus der Komponente zur Laufzeit
 Gehört zum Permanent Part der Komponente
 Der CM ist für jede Version einer Komponente gleich
 Component Builder (CB)
 Zuständig für die Inneren Abläufe der Komponente:
– Bei Primitive Components: Implementation
– Bei Composed Components: Subkomponenten
 Gehört zum Replaceable Part der Komponente
 Kann für jede Version einer Komponente unterschiedlich sein
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
24
Dynamic Component Update (DCUP) III
CMA
CBA
Replaceable Part
CMB
Permanent Part
B
Component Border
CMC
C
A
Schematische Darstellung einer DCUP-Komponente
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
CM
Component Manager
CB
Component Builder
Control Part
Functional Part
25
Prototyp in Java 2

Eine SOFA-Komponente wird in Java durch folgende Objekte
dargestellt:
 Component Manager
 Wird als erstes initialisiert
 Registriert und verwaltet die Komponente
 Verantwortlich für das dynamische Update/DCUP
 Component Builder
 Erstellt Subkomponenten und Verbindungen bei Composed Components
 Erstellt die Objekte zur Implementierung bei Primitive Components
 Weitere Objekte zur Implementierung der Funktionalität
 Nur bei Primitive Components
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
26
Deployment Descriptor

Component Deployment Descriptor (CDD)
 Beschreibt eine einzelne Komponente
 „Grundgerüst“ wird automatisch erstellt aus CDL-Definitionen
 Der Entwickler ergänzt:
 Die Versionsnummer der Komponente (Primitive)
 Die Versionsnummern der Subkomponenten (Composed)

Application Deployment Descriptor (ADD)
 Beschreibt die gesamte Baum-Hierarchie der Applikation
 Rekursiv erstellt aus dem CDD und den CDDs der
Subkomponenten
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
27
Quiescent State

Die Thread Registry im CM registriert alle threads

Quiescent State einer Komponente bedeutet
 Kein thread wird in der Komponente ausgeführt
 Die Komponente wartet nicht auf einen Aufruf durch eine andere
Komponente

Updates sind ausschließlich bei Quiescent State erlaubt
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
28
Ablauf eines dynamischen Updates

Update-Flag wird gesetzt
 Alle eingehenden Methoden-Aufrufe werden geblockt

CM wartet bis Quiescent State erreicht ist

CM ersetzt CB, Subkomponenten usw.

Update-Flag wird zurückgesetzt
 Neue Version der Komponente steht bereit
 Alle geblockten Aufrufe werden abgearbeitet
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
29
Warum Prototyp?

In dem Java-Prototyp fehlen immer noch einige Features

Im SOFAnode fehlt z.B.:
 Automatische Verteilung zwischen SOFAnodes
 TR fehlt. Stattdessen:
 Ein http-Server stellt die Komponenten-Klassen zur Verfügung
 TIR stellt die Komponenten-Spezifikationen zur Verfügung
 Speichern und Wiederherstellen des Komponenten-Status während
des dynamischen Updates und des Terminierens fehlt
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
30
Fragen zu SOFA?
Universität Bonn, Seminar „Component and Aspect Engineering“ WS 2003/2004, Tobias Rudorf
31