![Page 1: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/1.jpg)
HASSO - PLATTNER - INSTITUT
Komponentenbasierter Taschenrechner mit CORBA
Silke Kugelstadt
Torsten Steinert
![Page 2: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/3.jpg)
HASSO - PLATTNER - INSTITUT
Demonstration
Taschenrechner
![Page 4: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/7.jpg)
HASSO - PLATTNER - INSTITUT
![Page 8: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/8.jpg)
HASSO - PLATTNER - INSTITUT
![Page 9: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/9.jpg)
HASSO - PLATTNER - INSTITUT
![Page 10: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/29.jpg)
HASSO - PLATTNER - INSTITUT
Demonstration
Programmierung einer Komponente
![Page 30: HASSO - PLATTNER - INSTITUT Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert](https://reader035.vdocuments.net/reader035/viewer/2022062622/55204d6549795902118baac3/html5/thumbnails/30.jpg)
HASSO - PLATTNER - INSTITUTGrammatik
E → E + T
E → T
T → T * F
T → F
F → (E)
F → i