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

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

Apr 05, 2015

Download

Documents

Kuonrat Eberle
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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