"Modellbasiertes Prototyping objektorientierter, heterogener

Werbung
14.06.1996
0+
LUISAuskunftsebene
0+ 0+
Dokument
Dokmappe
0+
1+
Raumbezug
0+
hat
1+
1+
Fachobjekt = 0+
Umweltobjekt hat
Kontext
1+
Zeitbezug
Kontext
0+
Verlauf
2+
LUIS.
Situation
0+ 1 Zeitpunkt
hat
Das Tycoon-System
1+
0+
hat
Kontext
FIS Luft.
Situation
0+ 1
Zeitpunkt
zum
0+
0+ 0+
betrifft betrifft betrifft
…
0+
FISEbene
Immission
0+
Schadstoff
0+
1+
1+
0+
Meßstelle
mißt
FVEbene
Susanne Busse
4. Zusammenfassung; Ausblick
0,1
Raumbezug
Fachverfahren
Immissionskataster
Brandenburg
!
3. Software-Architektur-Komponenten heterogener, verteilter
Informationssysteme
Darstellung
!
2. Transformation struktureller objektorientierter
Informationsmodelle in TL-Komponenten
beschreibt
erlaubt
LUIS-Objekt
1+
0+
1
1+
!
1. Ziele der Arbeit
Diplomarbeit
Metainformation
!
"Modellbasiertes Prototyping
objektorientierter, heterogener, verteilter
Informationssysteme
auf der Basis des Tycoon-Systems"
Das RAUS-Modell
.
Fachverfahren
Luftgütemeßnetz
Ziel der Arbeit:
Tycoon =
Typed Communicating Objects in Open
Environments
Beschreibung der typischen Architekturkomponenten heterogener, verteilter
Informationssysteme zur Transformation
objektorientierter Informationsmodelle
:
1. Transformation struktureller objektorientierter Informationsmodelle in
TL-Komponenten
Objekte der Applikation
• Ausnutzung vorhandener
Spracheigenschaften
Generische Tycoon Bibliotheken
SQL
C
NeWS
…
• Entwicklung der Bibliothek ’OO’
weitere
externe
Dienste
Charakteristika:
• Objektmanagement
• Persistenz- und Mobilitätsunterstützung
• TL als sprachlichen Rahmen
Typsicherheit; Interoperabilität
• Anbindung und Integration externer
Datenbestände
• Beispiel-Szenario: LUIS
• Offenheit; Add-On-Ansatz
Susanne Busse
2. Entwurf typischer SoftwareArchitektur-Komponenten
14.06.1996
Susanne Busse
14.06.1996
…
ApplClassObject
Class
0+
0+
Subklasse
…
• Gliederung von Interfaces in Benutzergruppen
Susanne Busse
1
1
Object
• Mehrfachvererbung auf intensionaler
Ebene
Susanne Busse
• Redefinitionen
besitzt
• Spezialisierung kovarianter Methoden
Extension
Problembereiche:
1+
• Spezialisierung → Subtypisierung
0+
• Assoziation → objektwertige Attribute
Die Bibliothek ’OO’
• Extensionsverwaltung → Mengenverwaltung
(Klassenobjekt zur Instanzverwaltung)
verwaltet ApplicationClass
0+
1
• Objektspezifikation → Recordtyp
ApplicationObject
• Klasse
classManager
verwaltet von
ClassManager
1
0+
OO
• Objekt → Recordwert
14.06.96
Objektmodell → TL-Komponenten
14.06.1996
interface Class
import :Object :Iter
export
Let ObjAdm(ObjT <:Object.T InitT <:Ok)
<:Object.T = Record
new(:InitT) :ObjT
clone(:ObjT) :ObjT
fromObject(:Object.T :InitT) :ObjT
equal(:ObjT :ObjT) :Bool
equalCurry(:ObjT)(:ObjT) :Bool
elements() :Iter.T(ObjT)
lookupObject(:Object.T) :ObjT
remove(:Object.T) :Ok
end
interface Object
export
Let T = Record end
new() :T
idEqual(:T :T) :Bool
idEqualCurry(:T)(:T) :Bool
end
classMgr :Record
new(ObjT <:Object.T InitT <:Ok
name :String
art :Abstrakt
superclasses :Array(Generalisierung)
fromfun :Fun(:Object.T :InitT) :ObjT
clonefun :Fun(:Object.T :ObjT) :ObjT
equalfun :Fun(:ObjT :ObjT) :Bool
removefun :Fun(:ObjT) :Ok
) :ObjAdm(ObjT InitT)
remove(name :String) :Ok
display() :Ok
end
Susanne Busse
14.06.1996
Susanne Busse
14.06.1996
Beispiel
Object.T
LUIS-Objekt
Name: string
Objekttyp
$search:
string → set of
Class
LUIS-Objekt
Class(LUISObjekt.T)
verwaltet
LUIS-Objekt.T
LUIS-Objekt.Klasse
0+
1
Name
search
Dokmappe
Thema: string
LUIS-Objekt.klasse
Dokmappe.T
verwaltet
0+
1
Class(Dokmappe.T)
Thema
Dokmappe.klasse
Susanne Busse
Susanne Busse
• Verteilungstransparenz
Registrierung
Adressverwaltung
Let ObjAdresse = Tuple
host :Host
portNumber :Int
end
• Servertransparenz
Semantische Metainformation
Diensterbringerauswahl
Typmanagement
Dienstrealisierung
• Abstraktion von den Diensttypen
Syntaktische Metainformation
Dynamische Formulierung der Dienstanfrage
Susanne Busse
Dienstanbieter
Kommunikationskomponente
Verzeichnisdienst
Ziel: Unterstützung von Transparenz für eine
mögliche Abstraktion von der
Verteiltheit seitens der Anwendung
Kommunikationskomponente
Kommunikationskomponente
Anfrage
Dienstvermittler
Dienstnachfrager
Anwendung
Dienstebeschreibung
Offene verteilte Systeme
14.06.1996
Objektmanagement
14.06.96
14.06.1996
Susanne Busse
14.06.1996
Anfragenbearbeitung
Objektmanager
Client
Diensterbringer
Meta-Anfrage
Diensterb.adr.
a) Metainformationsverwaltung
Anfrage
Anfrage-Ergebnis
Objektmanager
Client
Diensterbringer
Meta-Anfrage
b) Remote Execution Engine
Anfrage
Ergebnis
Ergebnis
Client
Objektmanager
Meta-Anfrage
c) Diensterbringerverwaltung
Diensterb.objekt
Anfr.bearbeitung
Susanne Busse
14.06.1996
Let Trader <:Object.T = Record
registrate(Dyn Diensttyp <:Object.T
adr :ObjAdresse) :Ok
get(Dyn Diensstyp <:Object.T) :Iter.T(ObjAdresse)
end
let new() :Trader = begin
Let Entry = Tuple
dienstT :DynType
server :set.T(ObjAdresse)
end
let diensteMarkt = dictionary.new(:Entry …)
record
let registrate(Dyn Diensttyp <:Object.T
adr :ObjAdresse) = begin
let dTyp = typeRep_new(:Diensttyp)
try
let entry = dictionary.get(diensteMarkt dTyp)
set.insert(entry.server adr)
else
dictionary.insert(diensteMarkt
tuple dTyp set.create(… adr …) end)
end
end
let get(Dyn Diensstyp <:Object.T) = begin
let entry = dictionary.get(diensteMarkt
typeRep_new(:Diensttyp))
set.elements(entry.server)
end
end end
Susanne Busse
Anbindung und Integration
externer Datenbestände
14.06.1996
Integrationsklassen
ObjT
KeyT
ObjT
InitT
Integrator
Anbindung:
Class
…
…
• "Wrapperobjekte"
• allgemeine Spezifikationssprache für die
generische Formulierung von Anfragen
Integration:
Integrator(ObjT KeyT)
equal
equalCurry
lookupObject
lookupKey
elements
keyElements
remove
• "Integrationsobjekte" bzw. "-klassen"
1
equal
equalCurry
lookupObject
remove
Class(ObjT KeyT)
new
clone
fromObject
equal
equalCurry
elements
lookupObject
remove
• Bsp.: Objektklassen des FIS Luft
let new(ObjT <:Object.T KeyT <:Ok
name
:String
newObject :Fun(:Object.T :KeyT) :ObjT
newAll
:Fun() :Iter.T(KeyT)
keyEqual :Fun(:KeyT :KeyT) :Bool
getKey
:Fun(:ObjT) :KeyT
removefun :Fun(:ObjT) :Ok
) :IntegratorT(ObjT KeyT)
• Objektidentität
• Extensionsverwaltung
• Objekterzeugung
Susanne Busse
14.06.1996
Susanne Busse
14.06.1996
Zusammenfassung
let new(…) = begin
let clonefun(newid :Object.T from :ObjT) :ObjT =
raise class.userError with … end
let equalfun(o1 :ObjT o2 :ObjT) :Bool =
keyEqual(getKey(o1) getKey(o2))
let classobj = class.classMgr.new(:ObjT :KeyT
name
tuple_case konkret of Class.Abstrakt end
array end
newObject clonefun equalfun removefun)
extend object.new() with
let equal = class.equal
let equalCurry = class.equalCurry
let lookupObject = class.lookupObject
let lookupKey(k :KeyT) =
try iter.any(classobj.elements()
fun(o :ObjT) :Bool
keyEqual(getKey(o) k)
else classobj.new(k)
end
let elements() = iter.map(newAll()
fun(k :KeyT) :ObjT lookupKey(k))
let keyElements = newAll
let remove = class.remove
end
end
Susanne Busse
• objektorientierte Konzepte unter Ausnutzung der TLSpracheigenschaften integrierbar
• Bibliothek ’OO’ zur Unterstützung des Transformationsprozesses
Typische Software-Architekur-Komponenten
heterogener, verteilter Informationssysteme
Dienstnutzung
Diensterbringung
Objektmanagement
NamensTypDiensteTrading management
verwaltung verwaltung
Kommunikationsdienst
• Anbindung und Integration externer Informationsbestände mit generischen Objektklassen
• zur Behandlung der Verteiltheit:
Anpassung des Objektmodells;
Verwendung zusätzlicher Sprach- und Systemeigenschaften
14.06.1996
Ausblick
• Einbeziehen dynamischer Aspekte
• weitere Architekturkomponenten und
ihre Beziehungen
• Benutzerinteraktion
• Sicherheitsaspekte
• …
• Frameworks
• weitergehende Validierung anhand
einer prototypischen Realisierung
• Erweiterung des Szenarios
• plattformübergreifende Betrachtungen
• Kopplung mit anderen Plattformen
• Vergleich anderer Software-Architekturen
Susanne Busse
Objektmodell → TL-Komponente
14.06.1996
Susanne Busse
14.06.1996
Herunterladen