ModellBasierteAnwend..

Werbung
Anwendungen aus Modellen
Michael Löwe
Forschungskolloquium
der FHDW,Hannover
Hannover, 21. Februar 2005
Inhalt

Modell basierte Anwendungsentwicklung (MbA)
 Die Standardarchitektur (Persistenzgenerator)
–
–
–

Das Modell
–
–
–
–
–
–
–

Die Datenbank
Der Applikationsserver
Der View
Einfache, Mengen-wertige, indizierte und transiente Attribute
Server und Connections
Observer
Active Objects
Singletons
Exceptions
Visitoren
Entwicklungsmöglichkeiten
21. Februar 2005
FHDW-MDA
2
MbA



Ein zentrales fachliches Modell
Ableitung der Architektur aus dem Modell
Konsistente Umsetzung des Modells
– in alle beteiligten Komponenten
– über alle beteiligte Schnittstellen

Aber: Details in den speziellen Komponenten und Sprachen
– Adäquate Benutzeroberflächen
– Nutzung vorhandener Entwicklungswerkzeuge
– Performanzverbesserung in der Datenbank

Kein Round-Trip aber ein „iterativer Wasserfall“
21. Februar 2005
FHDW-MDA
3
Die Standardarchitektur
Klient
Klient
Klient
Klient
Single-User-Anwendung: Java
Offene Schnittstelle: XML-RPC
AnwendungsServer
Multi-User-Anwendung: Java
„Geschlossene“ Schnittstelle: JDBC
Datenbank
21. Februar 2005
Relationale Datenbank: Oracle
FHDW-MDA
4
Die Datenbank
Prozedurale Schnittstelle
für jede Klasse (PL/SQL)
Eine Tabelle pro
Vererbungshierarchie
Konsistenz der
Tabelleninhalte
zum Modell
Meta-Tabellen für
Klassen und Vererbung
21. Februar 2005
FHDW-MDA
5
Der Anwendungsserver
Web-Server (XML-RPC)
Java-Anwendung
Mehrbenutzerfähigkeit
durch Multi-Threading
Objekt-weises Nachladen aus
der Datenbank nach Bedarf
Cache Management
Zweifache Indirektion
JDBC-Facaden
Oracle-Thin-Client
Derzeit eine Verbindung
21. Februar 2005
FHDW-MDA
6
Der View
Standardoberfläche
(Swing, SWT, etc.)
Server Stubs ohne Cache
Server Connections
(Refresh Threads)
21. Februar 2005
Objekt-weises Nachladen
vom Server nach Bedarf
Dynamische Verbindung
(Garbage Collector beim Server)
FHDW-MDA
7
Das Modell






Klassen, abstrakte Klassen und Interfaces
Spezielle Server- und Exception-Klassen
Einfach-Vererbung und Mehrfach-Implementierung
Basistypen: Integer und String
Einfache, mengen-wertige, indizierte und transiente
Attribute
(Abstrakte) Operationen mit
– Deklaration von Exceptions
– Einfachen und Mengen-wertigen Rückgabetypen
21. Februar 2005
FHDW-MDA
8
Klassen und Attribute
Konkrete Klasse. Erzeugt statische Factorymodel model1 {
Methode mit allen Basisattributen
class MyClass {
Bzgl. Spezialisierung maximale Klasse.
Integer integer;
Erzeugt statische Suche nach Objektidentität
String string;
Attribute zu Basistypen.
indexed Integer iIndex;
indexed String sIndex; Indizierte Attribute nur zu Basistypen.
transient Integer tInteger; Erzeugt statische Suchfunktionen
MyClass myClass;
Transiente Attribute.
MyClass ** myClasses; Werden nicht in Datenbank abgelegt
}
Mengen-wertige Attribute.
}
In speziellen Collections verwaltet:
„add“, „iterator“ und „remove“ über Iterator
21. Februar 2005
FHDW-MDA
9
Server und Connections
model model1 {
class MyClass {
Integer integer;
.....
model model1 {
server MyClass {
Integer integer;
.....
model model1 {
server Server {
...}
server MyClass {
Integer integer;
.....
21. Februar 2005
Server Klasse. Alle Objekte dieser Klassen
können mit ihren Operationen Schnittstellenobjekte zum Klient sein.
Erhalten zwei Methoden „hasChanged“ für das
„Refresh“ des Klienten und „initialize“ zur
Initialisierung nach der Erzeugung.
Server Klasse Server. Die Objekte sind mit ihren
Operationen die primäre Schnittstelle zum
Anwendungsserver.
Erhalten implizit die Attribute „user“ und
„password“.
FHDW-MDA
10
Observer
class Observer {
observe Observee observee;
}
Class Observee {
ObsInterface * Subj
Integer contents;
update()
}
Observer
SubjInterface
register(ObsInterface obs)
deregister(ObsInterface obs)
update()
Observee
ObserverObservee
observee_update()
Automatische Registrierung durch
„setter“ bzw.
„add“ und „remove“ bei **
21. Februar 2005
FHDW-MDA
11
Active Objects
model model4 {
Invoker
CMD
server Server{
handleResult(CMD cmd)
execute()
MyClass myClass;
handleException(CMD cmd, Exception exc)
}
MyInter
active interface MyInter{
myOp1()
void myOp1();
myOp1(Invoker invoker)
void myOp2();
myOp2()
}
myOp2(Invoker invoker)
class MyClass
implements MyInter{
*
MyInterCMD
MyClass
Server
}
asynchron
}
MyOp1CMD
21. Februar 2005
MyOp2CMD
FHDW-MDA
receiver
12
Singletons
model model5 {
server Server{
MyClass myClass;
}
active interface MyInter{
void myOp1();
void myOp2();
}
singleton class MyClass
implements MyInter{
}
}
21. Februar 2005
Singleton Klasse MyClass.
Keine Suche nach Objektidentität mehr.
Keine Factory-Methode mehr.
Dafür: Beschaffung des Singleton-Objekts
mit Aufruf einer Initialisierungsoperation bei
der Instantiierung.
FHDW-MDA
13
Exceptions





Operationen können beliebige Exceptions „schmeißen“
(ggf. Kennzeichnung mit extern).
Operationen in Servern können nur interne Exceptions
„schmeißen“.
Interne Exceptions werden in der Datenbank abgelegt.
Interne Exceptions werden zum View übertragen.
Syntax:
exception myException {...} statt
class myException {...}
21. Februar 2005
FHDW-MDA
14
Visitoren
model model7 {
MyClass2Visitor (3 x handle)
server Server{}
class MyClass1{}
class MyClass2 extends MyClass1 {}
MyClass1Visitor (3 x handle)
class MyClass3 extends MyClass1 {}
class MyClass4 extends MyClass2 {}
MyInt2Visitor (2 x handle)
class MyClass5 extends MyClass2 {}
interface MyInt1{}
interface MyInt2 extends MyInt1{}
MyInt1Visitor (1 x handle)
class MyClass6 implements MyInt1 {}
class MyClass7 implements MyInt2 {}
class MyClass8 implements MyInt2 {}
}
Standard-„accept“-Methoden
21. Februar 2005
FHDW-MDA
15
Entwicklungsmöglichkeiten

Anschluss von Stored-Procedures
– Generierung der Java-Methoden und Oracle-Pakete
– Paketrümpfe mit geschütztem Bereich
– Behandlung von Seiteneffekten aufwändig (zweifache
Indirektion über Proxis)

Mehrere Datenbankverbindungen
 Mehrere Modelle
 Mehrere Server
21. Februar 2005
FHDW-MDA
16
Herunterladen