HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten...

30
HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert

Transcript of HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten...

Page 1: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

Komponentenbasierter Taschenrechner mit CORBA

Silke Kugelstadt

Torsten Steinert

Page 2: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTInhalt

• Motivation• Demonstration des Taschenrechners• Grobarchitektur• Implementierung des Clients• Implementierung der Komponenten• Entwurfsmuster• Erweiterungsmöglichkeiten• Vergleich mit anderen Komponentenframeworks• Live Implementierung einer neuen Komponente

Page 3: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

Demonstration

Taschenrechner

Page 4: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTMotivation

• Grundfunktionen

• Hinzufügen / Entfernen von Komponenten

• Mehrfachfaden (Multi-Threading)

• Verteilungstransparenz

• Einfache Bedienbarkeit

• Einfache Erweiterbarkeit

Page 5: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTAnforderungsspezifikation

• Taschenrechner mit Grundfunktionen

• Hinzufügen von Funktionseinheiten zur Laufzeit

• Client / Server Architektur– Taschenrechner als Client– Jede Komponente als Server

Page 6: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTArchitektur

Client (View und Controller)

Model + Parser

Komponente Komponente Komponente

CORBA ORB

Manager Worker

Page 7: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

Page 8: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

Page 9: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

Page 10: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTClient

• Arithmetische Ausrücke

• Eingabe einer Sequenz von Token

• Umwandlung in einen Ableitungsbaum

• Auswerten des Ableitungsbaumes

Page 11: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

GUI Model

addToken(3)

addToken(+)

addToken(4)

evaluate()

Manager

evaluate()

Worker 1 Worker 2

evaluate(3) evaluate(4)

setResult() setResult()

evaluate(+)

setResult()result

notify()

Client : Auswertung lokal

Page 12: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

GUI Model

addToken(sin)

addToken(pi)

evaluate()

Manager

evaluate()

Worker 1

evaluate(pi)

setResult()

evaluate(sin)

result

result

notify()

Komponente A

getValue0()

getValue1()

Komponente B

setResult()

result

Client : Auswertung remote

Page 13: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTAbleitungsbaum

Beispiel : ((3 * 4) + (7 / 2))

+

/*

3 4 7 2

Page 14: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTClient : Parallelität

Entwurfsmuster : Master – Worker

• 10 Worker Threads– Unabhängige Auswertung einer Expression

• 1 Manager Thread– Verteilt die auszuwertenden Expression auf die

Worker Threads

Page 15: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTClient : Parallelität 2

Manager

Worker Worker Worker Worker Worker

Master – Worker

Page 16: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTMonitor Konzept

• Manager und Worker sind als Monitor implementiertGegenseitig ausschließender Zugriff (mutual

exclusion)Kapselt StatusZugriff nur über veröffentlichte Methoden

Page 17: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTKomponenten

• Komponenten stellen neue Funktionen zur Verfügung. – 0 – Stellige (Konstanten)– 1 – Stellige (z.B. sin)– 2 – Stellige (z.B. x ^ y)

Page 18: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTKomponenten : IDL

module Calculator { interface Component { readonly attribute string description;

readonly attribute unsigned long countFun0; readonly attribute unsigned long countFun1; readonly attribute unsigned long countFun2;

string getNameFun0(in unsigned long index); string getNameFun1(in unsigned long index); string getNameFun2(in unsigned long index);

double getValue0(in unsigned long index); double getValue1(in unsigned long index, in double p1); double getValue2(in unsigned long index, in double p1, in double

p2); Component create(); };};

Page 19: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTEinschränkungen

• Funktionen mit mehr als 2 Parameter

• Einstellungen für Komponenten (z.B. rad -> deg bei Trigonometrischen Funktionen)

• Erweiterungen außerhalb des Funktionsparadigmas

Page 20: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTEntwurfsmuster : Singleton

NameServer Client Komponente A

list

Referenzen

getDescription()

Beschreibung

create()

Referenz auf A

countFun0()

. . . . .

Page 21: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

NameServer Client Komponente A

list

Referenzen

getDescription()

Beschreibung

create()

Referenz auf BcountFun0()

. . . . .

Komponente B

new Component()

Nicht -Singleton

Page 22: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTVerwendete Entwurfsmuster

• Beobachtermuster

• Model – View – Controller

• Singleton

• Factory

• Proxy

• Monitor

• Manager - Worker

Page 23: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTTests

• Modultests– einzelne Module mit JUnit testen

• Integrationstests– gesamte Anwendung mit einem GUI-Tester

testen, z.B. • Abbot

• Pounder

• Jemmy Module

Page 24: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTModultests mit JUnit

• Für jede zu testende Java Klasse eine Testklasse schreiben

• In jeder Testklasse mehrere Testfälle implementieren

• Tests regelmäßig automatisch ablaufen lassen

Page 25: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTIntegrationstests

• Wenn einzelne Module funktionieren, dann die gesamte Anwendung testen

• Dazu wird ein GUI Testtool benötigt

• Aus Zeitgründen noch nicht implementiert

Page 26: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTFrameworkvergleich

• Von CORBA verwenden wir lediglich den transparenten, entfernten Objektaufruf und den Nameserver.

• DCOM, .NET etc bieten diese Funktionalität auch an

Eine Entwicklung mit diesen anderen Frameworks ist also auch denkbar.

Page 27: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTErweiterungen

• Parser Einschränkungen : Parameter 2

• Flyweight Muster bei großen Formeln

• Verwendung von POAs um u.a. folgende Dinge zu erreichen :– Persistenz– Automatisches starten von Komponenten

Page 28: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTLiteratur

• Gerald Brose et al : „Java Programming with CORBA“

• Gamma et al „Entwurfsmuster“• Jeff Magee, Jeff Kramer : „Concurrency“• Schmidt et al : „Pattern – Oriented Software

Architecture“• www.jacorb.org• www.junit.org

Page 29: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUT

Demonstration

Programmierung einer Komponente

Page 30: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert.

HASSO - PLATTNER - INSTITUTGrammatik

E → E + T

E → T

T → T * F

T → F

F → (E)

F → i