Advanced Patterns and Frameworks
Advanced Patterns and Frameworks
Advanced Patterns and Frameworks
Verwandeln Sie Ihre PDFs in ePaper und steigern Sie Ihre Umsätze!
Nutzen Sie SEO-optimierte ePaper, starke Backlinks und multimediale Inhalte, um Ihre Produkte professionell zu präsentieren und Ihre Reichweite signifikant zu maximieren.
<strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong><br />
WAM: Framework Konstruktion<br />
Quelle: Prof. Heinz Züllighoven:<br />
Das objektorientierte Konstruktionsh<strong>and</strong>buch<br />
SS 2005<br />
Peter Sommerlad
Historie<br />
� Wie baut man <strong>Frameworks</strong> für fachliche<br />
(GUI-) Applikationen?<br />
� ein erfolgreicher Ansatz: WAM<br />
� GEBOS, C++ System für Banken (D)<br />
� UBS WAM-Team (bis ca. '99)<br />
� Projekte von Züllighoven und Mitarbeitern<br />
� Eclipse !<br />
� siehe www.jwam.de als Java Inkarnation<br />
� Quelle Züllighoven: Objektorientiertes<br />
Konstruktionsh<strong>and</strong>buch<br />
� neuer als Heinz Züllighoven: Object-oriented<br />
Construction H<strong>and</strong>book (2005)<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 2
Anwendungsbereich WAM<br />
� Applikationen für Sachbearbeiter bzw.<br />
"Knowledge Worker"<br />
� Arbeitsfluss nicht strikt vorgegeben<br />
� Reichhaltige L<strong>and</strong>schaft von Aufgaben<br />
� Mensch braucht Kontrolle über Abläufe<br />
� er weiss am besten, was wie zu erledigen ist<br />
� kreative Freiheit notwendig<br />
� Flexibilität der Arbeit<br />
� neue Aufgaben und Abläufe<br />
� rascher W<strong>and</strong>el der externen Anforderungen<br />
� unterstützende Software muss flexibel<br />
erweiterbar und anpasspar sein Framework!<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 3
Leitbild/Metapher<br />
� Die Gestalt von Softwaresystemen sollte<br />
durch ein Leitbild/eine Metapher geprägt<br />
sein.<br />
� bringt konzeptuelle Einheitlichkeit<br />
� erleichtert Verständnis für Anwender<br />
� vereinfacht Software Design<br />
� Beispiel: Fabrik-Metapher<br />
� Anwender:<br />
� Maschinen-Bediener<br />
� Software:<br />
� Maschine<br />
� Zusammenarbeit:<br />
� Fliessb<strong>and</strong>/Workflow<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 4
Leitbild WAM<br />
Experten-Arbeitsplatz<br />
� typische Umgebung eines Sachbearbeiters<br />
Hamburger Sparkasse<br />
Datum, Unterschrift<br />
Kontonummer BLZ<br />
Kreditinstitut<br />
Empfänger<br />
Verwendungszweck<br />
Betrag<br />
Überweisungen<br />
Vertrag<br />
Kundenakten<br />
Rechner<br />
Post-Its<br />
Wiedervorlagemappe<br />
Formulare<br />
Accounts<br />
Agenda<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 5<br />
Stift<br />
Stapel
Guiding<br />
Metaphor<br />
Leitbilder für Software<br />
(Guiding Metaphors)<br />
Object Worlds Virtual worlds<br />
populated with<br />
active objects (e.g.<br />
agents)<br />
Direct Manipulation Manipulating<br />
working objects like<br />
using our h<strong>and</strong>s<br />
Factory Guiding <strong>and</strong><br />
controling work in<br />
an assembly line<br />
like fashion<br />
Expert Workplace Supporting experts<br />
in their work by<br />
creating a work<br />
environment with<br />
adequate equipment<br />
Design Goal Role of Users Role of<br />
Developers<br />
Originators of initial<br />
orders; triggers<br />
Independent<br />
workers, acteurs<br />
Creators of mini<br />
worlds<br />
Constructors of<br />
artefacts<br />
Machine operators Machine<br />
constructors <strong>and</strong><br />
machine fitters<br />
Experts Tool designers,<br />
work place<br />
designers<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 6
Leitbild WAM<br />
� Expertenarbeitsplatz<br />
mit<br />
� Arbeitsbereich (workspace)<br />
auf dem<br />
� Materialien (materials)<br />
� Akten, Agenda, Formulare,...<br />
mit<br />
� Werkzeugen (tools)<br />
� Stift, Rechner, Mappen, ...<br />
bearbeitet werden. Zusätzlich<br />
� Automaten für repetitive Abläufe<br />
� Kopierer, Shredder, Belegscanner<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 7
Material (material)<br />
� Materialien sind (virtuelle) Gegenstände, die<br />
schliesslich zum Arbeitsergebnis werden.<br />
� Materialien werden mit Werkzeugen und<br />
Automaten bearbeitet<br />
� Materialien repräsentieren domänenspezifische<br />
Konzepte<br />
� Materialien müssen für eine spezifische<br />
Aufgabe geeignet sein.<br />
� Oft können Eigenschaften (nicht-computerisierter)<br />
Arbeitsgegenstände auf Software-Materialien<br />
übertragen werden.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 8
Werkzeug (tool)<br />
� Ein Mensch kann mit Hilfe eines Werkzeugs<br />
Materialien bearbeiten oder anschauen um<br />
eine bestimmte Aufgabe durchzuführen.<br />
� Ein Werkzeug unterstützt wiederkehrende<br />
Tätigkeiten.<br />
� Ein Werkzeug kann für verschiedene<br />
Aufgaben nützlich sein.<br />
� Ein Werkzeug wird benutzt und wieder zur<br />
Seite gelegt.<br />
� Ein Software-Werkzeug ermöglicht den<br />
interaktiven Umgang mit Arbeitsgegenständen<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 9
Arbeitsumgebung & -platz<br />
work environment - workspace<br />
� Eine Arbeitsumgebung ist der Ort,<br />
an dem Werkzeuge, Materialien und <strong>and</strong>ere<br />
Objekte bereitliegen und dömanenspezifisch<br />
arrangiert sind.<br />
Desktop<br />
Metapher<br />
� Die Arbeitsaufgaben werden am Arbeitsplatz<br />
erledigt. Die Arbeitsumgebung beinhaltet weitere<br />
(öffentliche) Bereiche, die vom Arbeitsplatz aus<br />
zugänglich sind.<br />
� Der individuelle Arbeitsplatz ist in der Regel vor<br />
Fremdzugriff geschützt<br />
� In einem Ein-Benutzer System sind<br />
Arbeitsumgebung und Arbeitsplatz in der Regel<br />
identisch.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 10
Automat<br />
(automaton)<br />
� Ein Automat erledigt Routineaufgaben, die vorab<br />
festgelegt werden können und immer wieder<br />
identisch ablaufen.<br />
� Ein Automat benutzt und bearbeitet Materialien<br />
und liefert ein definiertes Resultat.<br />
� Normalerweise arbeiten Automaten im<br />
Hintergrund, sobald sie für die Arbeitsumgebung<br />
konfiguriert wurden.<br />
� Menschlicher Eingriff beschränkt sich dann auf das<br />
Starten eines Automaten oder die Abfrage des<br />
Zust<strong>and</strong>s.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 11
Behälter<br />
Container<br />
� Ein Behälter beinhaltet, verwaltet, ordnet<br />
und liefert Materialien.<br />
� normalerweise besitzt er dazu ein<br />
Inhaltsverzeichnis.<br />
� Man kann gleichartige Objekte oder eine<br />
definierte Menge unterschiedlicher Objekte<br />
in einem Behälter speichern.<br />
� Behälter repräsentieren oft einen<br />
Arbeitsablauf und sammeln die dazu<br />
gehörenden Objekte.<br />
� Damit dienen sie Kooperation und Koordination<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 12
WAM <strong>Patterns</strong><br />
Originalversion deutsch<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 13
WAM <strong>Patterns</strong><br />
modernere Version english<br />
Design-<strong>Patterns</strong><br />
Konzept-<strong>Patterns</strong><br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 14
Database<br />
GUI<br />
connection<br />
Message broker<br />
Architekturmodell mit<br />
Layers (JWAM)<br />
Domain-specific<br />
application<br />
Domain container<br />
Host<br />
encapsulation<br />
Domain values Testing<br />
Work environment<br />
Technology<br />
H<strong>and</strong>ling <strong>and</strong><br />
presentation<br />
Component model Design by Contract MOP<br />
Material<br />
construction<br />
Tool<br />
construction<br />
Desktop<br />
Registry<br />
Forms<br />
Language extensions<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 15
Influencing<br />
factors<br />
leitmotiv<br />
domain knowledge<br />
user groups<br />
pilot<br />
organisations<br />
WAM Entwicklungsprozess<br />
Dokumente<br />
Glossaries<br />
System<br />
Visions<br />
documentation<br />
guidelines<br />
Scenarios<br />
Prototypes<br />
Development<br />
documents<br />
design<br />
guidelines<br />
programming<br />
guidelines<br />
Meta documents<br />
Concept<br />
Model<br />
Cooperation<br />
Pictures<br />
Purpose<br />
Tables<br />
design<br />
patterns<br />
Project<br />
documentation<br />
project<br />
agreement<br />
protocols<br />
identified<br />
requirements<br />
base lines<br />
project stages<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 16
H<strong>and</strong>ling<br />
& Presentation<br />
guiding metaphor &<br />
design metaphors<br />
Application<br />
domain<br />
analysis<br />
Entwicklungsmodell<br />
aus [Züllighoven2005]<br />
Model of<br />
application<br />
domain<br />
architecture &<br />
design patterns<br />
design<br />
design<br />
guidelines<br />
Model of<br />
application system<br />
usage<br />
model<br />
design<br />
model<br />
framework<br />
& libraries<br />
implementation<br />
model<br />
Technology<br />
used<br />
technology<br />
of system basis<br />
system<br />
basis<br />
application<br />
system<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 17
WAM Konzeptpatterns<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 18
Zusammenhang Werkzeug<br />
und Material<br />
� Wie teilen wir ein interaktives Anwendungssystem so<br />
in Komponenten auf, dass ein Anwender seine<br />
Aufgaben je nach Arbeitssituation erledigen kann?<br />
� Komponenten sollen fachlich motiviert sein.<br />
� Erkennbarer Zusammenhang mit den bereits am<br />
Arbeitsplatz vorh<strong>and</strong>enen Gegenständen bestehen<br />
� Übertrage die Metaphern WAM auf ein<br />
Anwendungssystem.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 19
Use Case<br />
Model<br />
System-<br />
Grenze<br />
Use<br />
Cases<br />
Zusammenhang Werkzeug<br />
und Material (Lösung)<br />
� Modelliere ein Anwendungssystem aus<br />
Anwendersicht im Kern als eine sinnvolle<br />
Ansammlung von Materialien und Werkzeugen,<br />
die dazu geeignet sind, die verschiedenen<br />
Aufgaben an einem Arbeitsplatz zu erledigen.<br />
� lege fest, welche der bisherigen Aufgaben vom<br />
zukünftigen System unterstützt werden sollen und<br />
welche weiterhin konventionell zu erledigen sind.<br />
� Die zu unterstützenden Aufgaben definieren den<br />
Kontext der jeweiligen Arbeitszusammenhänge, in<br />
denen Benutzer je nach Situation mit geeigneten<br />
Werkzeugen die entsprechenden Materialien<br />
bearbeiten.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 20
Materialentwurf<br />
� Wie können wir die wesentlichen Materialien in der<br />
Applikationsdomäne identifizieren?<br />
� Materialien sind konzeptuelle Elemente<br />
� Design der Materialklassen muss<br />
� Materialien sind<br />
� abfragbar, manipulierbar, eingebettet<br />
� Fokussiere beim Materialentwurf auf die fachliche<br />
Domäne<br />
� Aufgaben des Menschen definieren die Funktionalität der<br />
notwendigen Materialien<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 21
Werkzeutentwurf<br />
� Wie modelliert man ein geeignetes Werkzeug?<br />
� Domänenfunktionalität<br />
� Aussehen, Bildschirmrepräsentation<br />
� Wiederholende Tätigkeiten in der Domäne prägen<br />
Werkzeuge<br />
� Ein Werkzeug vereinfacht die Tätigkeit, aber<br />
automatisiert sich nicht vollständig<br />
� Werkzeuge unterstützen kurze zusammenhängende<br />
Aufgaben, die jeweils algorithmisch implementiert<br />
werden können<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 22
Material<br />
Werkzeugentwurf<br />
Beispiel<br />
Werkzeugname<br />
Behälter<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 23
Werkzeuge<br />
Trade-offs<br />
� Ein Werkzeug sollte den Arbeitsprozess nicht<br />
unnötig vorgeben oder einschränken<br />
� Jede Teilfunktionalität eines Werkzeugs<br />
sollte jederzeit benutzbar sein<br />
� nicht-modal, ausser man informiert den<br />
Anwender geeignet über den Werkzeug-<br />
Zust<strong>and</strong><br />
� Werkzeuge sollten nicht zu gross werden<br />
� Kohäsion!<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 24
Werkzeug<br />
Design-Charakteristiken<br />
� Ein Werkzeug hat Identität, Namen und eine<br />
graphische Repräsentation<br />
� Werkzeuge zeigen eine Sicht (View) auf das aktuell<br />
bearbeitete Material und gibt unmittelbares Feedback<br />
über die Veränderung des Materials.<br />
� Das Material wird nie verdeckt!<br />
� Solange es benutzt wird, bleibt das Werkzeug im<br />
Blick.<br />
� Ausnahme: Materialarrangement auf dem Arbeitsplatz<br />
(nur Mauszeiger)<br />
� Das Werkzeug bietet die möglichen H<strong>and</strong>habungen<br />
zur unterschiedlichen Bearbeitung des Materials an.<br />
� Werkzeuge haben ein "Gedächtnis" und können<br />
Einstellungen speichern.<br />
� Einstellungen und Stati werden dem Benutzer angezeigt.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 25
Arbeitsumgebung<br />
� Wie schafft man einen Ort an dem Menschen mit<br />
Werkzeugen Materialien bearbeiten können?<br />
� Gestaltung eines Softwaresystems mit räumlicher<br />
Dimension zum<br />
� organisieren der Gegenstände<br />
� zurgechtlegen, ordnen und ablegen<br />
� Modelliere den Arbeitsbereich explizit.<br />
� Erlaube Personalisierung<br />
� biete einen Ort wo Werkzeuge, Materialien und <strong>and</strong>ere<br />
benötigte Dinge ihren Platz haben<br />
� Das Raumkonzept aus der Domäne wird als konzeptuelle<br />
Einheit im Design auch zur Abtrennung repräsentiert<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 26
Aufgaben und Rollen der<br />
Arbeitsumgebung<br />
� Ort für persönliche Arbeit<br />
� mein Arbeitsbereich (Schreibtisch)<br />
� Ort für Werkzeuge und Materialien<br />
� Arrangement durch Benutzer konfigurierbar<br />
� Organisieren von Arbeit<br />
� Stapel (CH:Biege:-) von zu bearbeitenden Materialien<br />
� Ort für die Zusammenarbeit<br />
� Dinge für <strong>and</strong>ere bereitlegen zur Kooperation<br />
� gemeinsam genutzte Orte (Mappen, Ablagen, Postfächer)<br />
� Darstellungsproblematik des Ortsbegriffs<br />
� Ortsbegriff muss abgebildet werden<br />
� UNIX hierarchische Namensräume (erster Ortsbegriff: Home<br />
directory)<br />
� Desktop Implementierungen (heute schwach gegenüber den<br />
Möglichkeiten einer Ortsrepräsentation)<br />
� bleibt schwierige Aufgabe<br />
� unterschiedliche Arbeitskontexte<br />
� multiple Desktops, konfigurierte Desktops<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 27
Fachliche Behälter<br />
(Container)<br />
Material Design<br />
Container Form<br />
� Wie kann man Sammlungen von verw<strong>and</strong>ten<br />
Objekten und ihre Verwaltung organisieren?<br />
� (Manager Pattern by Peter Sommerlad :-)<br />
� Representiere Sammlungen als Container<br />
� können auch als Materialien angesehen werden<br />
� welches Pattern?<br />
� speichern, sammeln, ordnen Materialien<br />
� Verwalten gespeicherte Materialien und geben<br />
Auskunft über diese (z.B. wie viele)<br />
� Container können zusammen mit ihren<br />
Materialien an <strong>and</strong>ere Orte verschoben werden<br />
� Container unterstützen Kooperation und Koordination<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 28
Formulare (Form)<br />
� Wie kann das Konzept eines (Papier-) Formulars in<br />
den Modellierungsanzatz eingebracht werden?<br />
� reicht es aus, Formulare als spezielles Material zu<br />
modellieren oder haben sie eigene besondere<br />
Charakteristiken?<br />
� Formulare sind konzeptuell eigenständig, weil sie<br />
spezielle Materialien darstellen<br />
� alle Formulare verhalten sich gleichartig<br />
� Formular-Editor<br />
� Formular-Viewer<br />
� Formular-Kopierer<br />
� Formular-Drucker<br />
Achtung:<br />
Hammer Syndrom!<br />
� können generisch realisiert und genutzt werden<br />
� effizienz, nicht für jedes Material einzeln programmiert<br />
� Abkürzung für "CRUD" Materialien, ohne weitere<br />
Funktionalität (Kombination ist möglich)<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 29
Automat<br />
� Wie kann man Routineaktivitäten, die keinen<br />
menschlichen Eingriff benötigen und definierte<br />
Ergebnisse liefern, bereitstellen?<br />
� unter welchen Bedingungen kann eine solche Aktivität<br />
automatisiert werden bei WAM?<br />
� sich wiederholende Routinetätigkeiten werden als<br />
Automat implementiert.<br />
� Automaten operieren auf Materalien analog zu<br />
Werkzeugen.<br />
� Automaten werden vom Benutzer konfiguriert und<br />
gestartet, dann<br />
� laufen sie ohne Unterbruch bis sie ihr Resultat berechnet<br />
haben.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 30
Abgrenzung<br />
Werkzeug und Automat<br />
� Werkzeug ist für<br />
Benutzer Mittel zum<br />
Zweck<br />
� Einsatz abhängig vom<br />
Arbeitsfortschritt<br />
� Aktionen auf Material in<br />
beliebiger Reihenfolge<br />
aktivierbar<br />
� Einzeloperation atomar<br />
und unmittelbar für<br />
Benutzer<br />
� Benutzer hat Kontrolle<br />
über Arbeitsfortgang<br />
� Benutzer gibt Kontrolle<br />
über Arbeitsfortschritt an<br />
den Automaten ab<br />
� Fixe Vorgegebene<br />
Arbeitsschrittfolge durch<br />
den Automaten<br />
implementiert<br />
� Kein Eingriff in den<br />
Ablauf durch den<br />
Benutzer<br />
� "fire <strong>and</strong> forget"<br />
� Eher "kleine" Automaten<br />
� kapseln technische<br />
Schnittstellen<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 31
Automat Diskussion<br />
� Es gibt einen Grenzbereich zwischen<br />
Werkzeug und Automat, sowie zwischen<br />
Automat und dem neueren Konzept des<br />
Domain Service Provider.<br />
� "Grosse" Automaten tendieren dazu, zu<br />
komplex zu konfigurieren zu sein und damit<br />
Aufgaben zu übernehmen, die man besser<br />
mit einem Werkzeug realisiert.<br />
� Konfiguration des Automaten selbst als<br />
Werkzeug<br />
� grosse Automaten wiedersprechen der<br />
Philosophie des selbstbestimmten Arbeitsplatz<br />
� Bedienung der Automaten?<br />
� Start ja, aber auch Reset, Restart?<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 32
Domain Service Provider<br />
neueres Konzept<br />
� Wie kann man wiederverwendbare<br />
Geschäftslogik gestalten, die unabhängig<br />
von Interaktion und Repräsentation ist?<br />
� Nutzen unabhängig von Arbeitsplatztypen,<br />
Vertriebs/Nutzungs-Kanälen oder Technologien<br />
� Integriere unterschiedliche<br />
Nutzungsszenarien in einem Domain Service<br />
Provider als gemeinsame Infrastruktur<br />
� Dienst für verschiedene Anwendertypen<br />
� Fasst gemeinsam benötigte Dienste zusammen<br />
z.B. Kunde und Bankberater nutzen Konten des Kunden<br />
(Internet, Bankomat, Schalter), Zugang sollte nur einmal<br />
implementiert werdenmüssen<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 33
Domain Service Provider<br />
Diskussion<br />
� Einfache zentrale Sammlungen von Arbeitsobjekten<br />
qualifizieren sich nicht als Domain Service Provider<br />
� kein Domänenwissen gekapselt<br />
� Management von Materialsammlungen mit<br />
Domänenbezug sind <strong>and</strong>ererseits geeignete<br />
K<strong>and</strong>idaten für Domain Service Provider<br />
� z.B. Kontoverwaltung, Car Pool Management<br />
� Geschäftstransaktionen, die von verschiedenen<br />
Akteuren ausgelöst werden, sind gute K<strong>and</strong>idaten für<br />
D-S-P.<br />
� Organisationsübergreifende Workflows<br />
� Funktionssammlungen sind keine D-S-Ps<br />
� z.B. Steuerkalkulator<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 34
und der Rest?<br />
� Technischer Automat<br />
� klassischer Zust<strong>and</strong>sautomat für<br />
Geräte(steuerungen)<br />
� Sonde (engl. Probe)<br />
� Zust<strong>and</strong>sabfrage für technischen Automat<br />
� Gerätezust<strong>and</strong> wird zum Arbeitsplatz<br />
transportiert<br />
� Einstellwerkzeug<br />
� Spezialwerkzeug für technische Automaten zur<br />
Wartung und Steuerung.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 35
WAM Entwurfsmuster<br />
� Wie implementiert man nun das ganze<br />
sinnvoll?<br />
� bisher nur Konzeptuelle WAM <strong>Patterns</strong> für die<br />
Modellierung kennengelernt<br />
� GOF <strong>Patterns</strong> und <strong>and</strong>ere vorausgesetzt<br />
� Spezialitäten von WAM berücksichtigt<br />
� Framework für die Gestaltung eines<br />
Arbeitsbereichs als Ergebnis<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 36
WAM <strong>Patterns</strong><br />
Originalversion deutsch<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 37
WAM <strong>Patterns</strong><br />
modernere Version english<br />
Design-<strong>Patterns</strong><br />
Konzept-<strong>Patterns</strong><br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 38
Werkzeug- und Material-<br />
Kopplung (Aspect)<br />
� Wie kann man sicherstellen, dass Werkzeuge und<br />
Materialien zusammen passen<br />
� nicht nur 1:1, sondern n:m<br />
� Rerpäsentiere jede unterschiedliche Nutzung eines<br />
Materials durch einen separaten Aspekt des Materials<br />
� Aspekte sind Schnittstelle(n) des Materials<br />
� Material muss Aspekt erfüllen um mit einem bestimmten<br />
Werkzeug bearbeitet zu werden<br />
� Aspekte erlauben es unterschiedliche Schnittstellen und<br />
Protokolle zu kombinieren<br />
� Klassischer Fall des ??? Prinzips<br />
� welches SE-Prinzip ist es?<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 39
Werkzeug- und Material-<br />
Kopplung (Aspect)<br />
� Werkzeuge werden gegen Aspekt<br />
programmiert<br />
� Mehrere Materialien können den gleichen<br />
Aspekt realisieren<br />
� Mehrere Werkzeuge können gegen den<br />
gleichen Aspekt realisiert werden<br />
�Polymorphie der Werkzeuge und Materialien<br />
abhängig vonein<strong>and</strong>er!<br />
� Welche OO-Design bzw.<br />
Implementierungsalternativen gibt es?<br />
� Für den Anfang auf Abtrennung der Aspekte verzichten<br />
� beim Prototypenbau oder Spikes<br />
� erst später Refactoring!<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 40
Tool uses interface Aspect<br />
Material implements Aspect<br />
Aspekte über Vererbung<br />
oder Interfaces<br />
Tool uses Aspect<br />
Material inherits Aspect<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 41
Tool<br />
Aspekte über Adapter oder<br />
Decorator<br />
Aspect<br />
AspectImpl<br />
� Delegation statt Vererbung<br />
Material<br />
� geringere Kopplung, Nutzen in Java bedingt<br />
� Materialklassen einfacher, aber ggf. viele AspectImpl<br />
Klassen<br />
� Decorator bietet noch mehr Möglichkeiten<br />
� kann Problem der AspectImpl Klassen abschwächen,<br />
braucht aber wieder Vererbung<br />
� Instanziierung über Factories oder Builder ggf.<br />
aufwendig<br />
� Identitätsverlust der Materialien und Komplexität<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 42
Trennung von Funktion und<br />
Interaktion<br />
� Wie kann man das Prinzip der "separation of<br />
concerns" beim Werkzeugdesign umsetzen?<br />
� Werkzeuge haben eine H<strong>and</strong>habungs- und<br />
Visualisierungsschnittstelle (Interaktion)<br />
� Werkzeuge haben innere Funktionalität zur<br />
Materialbearbeitung (Funktion)<br />
� Zur Werkzeugimplementierung trenne es<br />
grundsätzlich konzeptionell in<br />
� Funktionsteil (FP – function part)<br />
� Interaktionsteil (IP – interaction part)<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 43
Trennung von Funktion und<br />
Interaktion - Diskussion<br />
� Designalternativen<br />
� eine Komponente, zwei Schnittstellen<br />
� einfacher für Prototypen, frühe Entwicklung<br />
� analog Model-View-Controller Pattern<br />
� für "ausgereiftere" komplexe Werkzeuge<br />
� "dünne" Interaktionskomponente<br />
� neue Anforderungen durch Benutzung<br />
ungeachtet der eigentlichen Funktion sind<br />
typisch<br />
� Portierung auf unterschiedliche Oberflächen<br />
� separate Funktionskomponente<br />
� bessere Testbarkeit für Funktionskomponente<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 44
Werkzeugkomposition<br />
� Wie baut man komplexe Werkzeuge, die aus<br />
einfacheren Werkzeugen zusammengesetzt<br />
sind?<br />
� Aufteilung dient der Komplexitätsbeherrschung<br />
� Wiederverwendung von Werkzeugbausteinen<br />
ist natürlicher Bedarf von OO Entwicklern<br />
� Zerlege komplexe Werkzeuge in Teile. Das<br />
Kombinationswerkzeug bietet einen<br />
gemeinsamen Kontext für die eingebetteten<br />
Werkzeuge<br />
� aka: Composite auf Werkzeuge anwenden.<br />
� Fördert Wiederverwendung<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 45
� Sub-Werkzeug<br />
Werkzeugtypen bei<br />
Werkzeugkomposition<br />
Tool<br />
Sub Tool<br />
Simple Tool Combination Tool<br />
� kann in <strong>and</strong>ere eingesetzt werden<br />
� Kontext-Werkzeug<br />
Context Tool<br />
Tool<br />
Composition<br />
� bettet Sub-Werkzeug(e) mit gemeinsamen Kontext ein<br />
� Kombi-Werkzeug – Domänenelement in Benutzung<br />
� Einfach-Werkzeug<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 46
:Sub<br />
Functionality<br />
Feedback between<br />
Tool Parts<br />
� Wie kann man sicherstellen, dass ein Sub-<br />
Werkzeuge unabhängig vom Kontext-<br />
Werkzeug bleiben und trotzdem das Kontext-<br />
Werkzeug über Zust<strong>and</strong>sänderungen der<br />
Sub-Werkzeuge Rückkopplung erhält?<br />
:Context<br />
Functionality<br />
:Sub<br />
Functionality<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 47
1. User Actions 7. Program Reactions<br />
2. System<br />
Events<br />
Tool<br />
3. Operations<br />
4. Operations<br />
:InteractionPart<br />
:FunctionalPart<br />
:Material<br />
6. Update of Presentation<br />
5. Events<br />
Rückkopplung zwischen<br />
Funktion und Interaktion<br />
� Wie können wir die Trennung im<br />
Werkzeug zwischen Funktion und<br />
Interaktion implementieren, so dass<br />
bei der Änderung der Interaktion der<br />
Funktionsteil möglichst nicht<br />
angepasst werden muss?<br />
� Umsetzung von Trennung Interaktion<br />
Funktion<br />
� Teile Werkzeug in<br />
Interaktionskomponente (IAK, IP) und<br />
Funktionskomponente (FK, FP)<br />
� IAK kennt und nutzt FK, aber FK kennt<br />
IAK so wenig wie möglich.<br />
� Zur Umsetzung braucht es einen<br />
Feedback Mechanismus.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 48
Feedback FK-IAK<br />
Implementierung IAK<br />
� IAK verarbeitet (System/Windows) Events<br />
� Präsentationsereignisse selbst interpretiert<br />
(z.B. Scrolling)<br />
� Applikationsspezifische Ereignisse an FK<br />
� IAK verwendet Interaktionstypen<br />
(interaction forms)<br />
� abbildung auf window toolkit elemente<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 49
Feedback FK-IAK<br />
Implementierung FK<br />
� Funktionskomponente(FK, functional part-FP)<br />
� implementiert Domänenfunktionalität<br />
� bietet Abfragefunktion für IAK über eigenen<br />
internen Zust<strong>and</strong> und den des bearbeiteten<br />
Materials.<br />
� verwaltet Arbeitszust<strong>and</strong> und Werkzeug-<br />
"Gedächtnis" abhängig von Benutzeraktionen<br />
und Materialzust<strong>and</strong><br />
� greift auf ein bestimmtes Material (über den<br />
Aspekt) zu<br />
� Verändert Material<br />
� Verwaltet Arbeitskontext zwischen Materialien<br />
und dem Werkzeug (Konsistenzerhaltung)<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 50
Trennung von H<strong>and</strong>habung<br />
und Präsentation<br />
� Wie kann die Interaktionskomponente (IAK)<br />
möglichst unabhänig vom User Interface<br />
Toolkit gestalten?<br />
� Kapsle die Arten unterschiedlicher Manipulation<br />
als Interaktionstypen (IAT - interaction forms)<br />
� Erstelle die IAK anh<strong>and</strong> der Interaktionstypen<br />
� IAK tauscht mit IAT nur Domänendaten aus<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 51
Trennung von H<strong>and</strong>habung<br />
und Präsentation (2)<br />
� Presentation Forms (PF) implementieren die<br />
spezifische Repräsentation und Interaktion der<br />
Interaktionstypen/interaktion forms für den Benutzer<br />
� PFs kapseln die Widgets eines GUI Tookits<br />
� PFs werden ausserhalb eines Werkzeugs verwaltet, sind<br />
aber mit den Interaktionsformen des Werkzeugs<br />
gekoppelt<br />
� Je nach Toolkit, können die Widgets direkt die PFs<br />
darstellen, extra Programmieraufw<strong>and</strong> für PFs ist nicht<br />
nötig.<br />
DeviceEditor<br />
<br />
FillIn<br />
JTextFieldPF<br />
JTextField<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 52
Rückkopplung zwischen<br />
Interaktionstypen (IAT) und<br />
Interaktionskomponente (IAK)<br />
� Wie können wir Interaktionstypen mit der<br />
Interaktionskomponente koppeln?<br />
� Interaktionstypen sollen generisch sein und nicht von der<br />
Interaktionskomponente abhängen.<br />
� Gleichartige Interaktionstypen können unterschiedliche<br />
fachlichen Aktionen auslösen<br />
� unterschiedliche Interaktionstypen können die gleiche<br />
fachliche Aktion auslösen<br />
� Nutze das<br />
.............. Pattern<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 53
Fachwerte<br />
Values again :-)<br />
� Wie kann man die eingebauten einfachen<br />
Datentypen der OO-Programmiersprache um<br />
Benutzerdefinierte Fachwerte ergänzen?<br />
� Wertesemantik statt OO-Referenzsemantik<br />
� siehe letzte Vorlesung.<br />
� Implementiere Klassen für Fachwerte als<br />
Value Object.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 54
Fachwerte<br />
Implementierungsoptionen<br />
� Fachwertklassen (�)<br />
� Immutable Domain Value Objects (�)<br />
� mit Anwendung des Flyweight Design <strong>Patterns</strong> um<br />
Speicher zu sparen<br />
� H<strong>and</strong>le-Body Idiom um Speicher bei "grossen"<br />
Fachwertobjekten zu sparen (C++)<br />
� Referenzzähler erlaubt freigabe von nicht mehr<br />
referenzierten Fachwertobjekten (bei Flyweight nicht<br />
ohne weiteres möglich)<br />
� Fachwerttyp als Stream<br />
� für sehr grosse Werte, die von externen Quellen(DB)<br />
abhängen<br />
� Fachwerttyp per Konfiguration<br />
� eine "Basisklasse", mehrere Konfigurationen<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 55
Fachliche (und Technische)<br />
Behälter<br />
� Technische Behälter sind heute in<br />
Programmiersprachen/Umgebungen gut genug<br />
eingebaut<br />
� e.g. C++ STL, Java Collections<br />
� Wie modellieren wir fachlich motivierte Behälter als<br />
besonderes Material, das <strong>and</strong>ere Materialien<br />
enthalten kann und ein Ordnungsprinzip für diese<br />
definiert?<br />
� Implementiere einen Fachbehälter als eigenständiges<br />
Domänenobjekt<br />
� stellt eine Art Material dar<br />
� hat spezielle Operationen (add, enumerate)<br />
� hat zusätzliche fachliche Constraints oder Operationen<br />
im Gegensatz zu technischen Behältern<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 56
Fachbehälter<br />
Implementierungsoptionen (1)<br />
� vorh<strong>and</strong>ene Collection Klasse verwenden<br />
� z.B. in C++ Container concept implementieren und auf<br />
vorh<strong>and</strong>enen passenden container delegieren<br />
� oder direkt Collection Klasse nutzen<br />
� typedef oder Vererbung (in Java)<br />
� gespeicherte Materialien laden (3 Ansätze)<br />
� enthaltene Materialien nur per Identifikator<br />
(Inhaltsverzeichnis)<br />
� Werkzeug bezieht Materialschlüssel und sorgt sich selbst<br />
um das "laden" des Materials, hinzufügen und löschen<br />
direkt auf dem Behälter möglich<br />
� Bei Benutzung wird Material vom Behälter automatisch<br />
"nachgeladen"<br />
� Container verwaltet Material-Proxies, die erst beim<br />
Zugriff das Material laden (Lazy Aquisition pattern)<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 57
Fachbehälter<br />
Implementierungsoptionen (2)<br />
� Inhaltsverzeichnisse für Fachbehälter<br />
� z.B. Produktangebot<br />
� Inhaltsverzeichnisse als eigenständiges<br />
Material<br />
� Vorteil: einheitliches Konzept für Anwender<br />
� Inhaltsverzeichnis als Fachwert<br />
� einfacher, aber kein automatischer Update<br />
� z.B. Ordnerliste in Explorer (F5!)<br />
� Materialbearbeitung nur ausserhalb eines<br />
Behälters (oder direkt innerhalb)<br />
� Transportmetapher: bewege Material in<br />
Arbeitsbereich, bevor es bearbeitet werden<br />
kann<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 58
Form System<br />
(Formularsystem)<br />
� Wie können (viele) Formulare günstig in<br />
einer Applikation bereitgestellt werden?<br />
� Formular: Dialog oder auch Papierform<br />
� Baue (oder benutze) ein generisches<br />
Formularsystem, das mit einem<br />
Formulareditor leicht neue Formulare<br />
erstellen lässt.<br />
� Bausteine: Formular, Formularschablone,<br />
Formularelement, Elementlisten, Felder<br />
� Felder (und Listen) auf Fachwerte beziehen<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 59
Formularsystem<br />
� Beispiel für ein Formularsystem<br />
� und einen Editor<br />
Welche<br />
<strong>Patterns</strong>?<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 60
Formularsystem<br />
Diskussion<br />
� kann grosse Vereinfachungen bringen<br />
� weniger Programmieraufw<strong>and</strong><br />
� leichte Erweiterbarkeit und Anpassbarkeit<br />
� kann Materialkonzept untergraben<br />
� alles wird mit Formularen gelöst<br />
� Typsicherheit wird untergraben (alles String)<br />
� Evolution kann bedeuten vom Formular weg<br />
hin zum Werkzeug zu entwickeln<br />
� Material und Werkzeug zuerst sehr einfach -><br />
Formular<br />
� später mehr Funktionalität -> Werkzeug<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 61
Automatons in Embedded<br />
Systems<br />
� Wie kann man ein Embedded System mit<br />
einem technischen Automat an ein WAM<br />
Anwendungssystem koppeln?<br />
� embedded Systeme haben oft<br />
Echtzeitanforderungen<br />
� sollten nicht zu sehr "gestört" werden<br />
� Kommunikation notwendig, da eigener<br />
Prozessraum<br />
� Kopple Echtzeitsysteme asynchron an und<br />
verwende Sonden um mit ihm zu<br />
kommunizieren<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 62
Automaten in Embedded<br />
Systemen<br />
Probe<br />
Interaction<br />
Functionality<br />
Automaton Automaton<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 63
1. Registering<br />
2. Adjusting<br />
3. Announce<br />
Process<br />
ToolFP Automaton<br />
Proxy<br />
register()<br />
changeSettings()<br />
tell()<br />
probing<br />
Probe<br />
sendEvent()<br />
receipt<br />
sendEvent()<br />
receipt<br />
Automaton<br />
Proxy<br />
receiveEvent()<br />
Local<br />
Broker<br />
Event<br />
Event<br />
Event<br />
Entry<br />
constructor()<br />
Observer<br />
Proxy<br />
changeSettings()<br />
probing<br />
Automaton<br />
tell()<br />
probe<br />
produced<br />
data
Tool Process Automaton Process<br />
Tool FP<br />
ChangeValue()<br />
0<br />
Automaton Proxy<br />
SendPackage()<br />
1<br />
Broker Proxy<br />
SendEvent()<br />
2<br />
4<br />
3<br />
Broker Process<br />
Event Queue<br />
Event Event<br />
ReceiveEvent()<br />
ChangeValue()<br />
ReceivePackage()<br />
5<br />
Call<br />
Automaton<br />
7 8<br />
6<br />
Entry<br />
Broker Proxy<br />
Return from Call<br />
9<br />
10
Domain Services<br />
SOA<br />
Service-oriented<br />
Architecture<br />
� Wie implementiert man Fachfunktionalität,<br />
die über unterschiedliche Oberflächen<br />
genutzt werden kann?<br />
� unterschiedliche Arbeitsplätze<br />
� unterschiedliche Technologie (desktop, web, ...<br />
� Kombiniere Funktionalität und Wissen über<br />
einen Dienst ohne auf die Art des User<br />
Interface einzugehen in einen Domain<br />
Service<br />
� Dieser Dienst wird bereitgestellt<br />
� davon verwaltetes Material wird im Service<br />
gekapselt<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 66
Desktop<br />
RMI<br />
Domain Service<br />
Beispiel Helpdesk<br />
HTML-<br />
Client<br />
Servlets<br />
HTTP<br />
Domain Service Helpdesk<br />
Queries in<br />
registry<br />
WML-<br />
Client<br />
Servlets<br />
WAP<br />
HTTP<br />
Email-<br />
Client<br />
Email-<br />
Gateway<br />
SMTP<br />
POP3<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 67
Domain Service<br />
� Schnittstelle ist wertorientiert (Values again!)<br />
� Schnittstelle beantwortet fachliche Anfragen<br />
� Clients delegieren normierte Subtasks an den<br />
Service<br />
� Kapselt Material und Implementierung der<br />
fachlichen Interaktionen damit<br />
� Macht keine Annahmen über das<br />
Interaktionsmodell und die Darstellung für<br />
den Benutzer<br />
� unterstützt multi-user und Verteilung<br />
� sollte Zust<strong>and</strong>s- und Session Konzept haben<br />
� + sollte Autorisierungskonzept haben!!!<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 68
Frontend / Client<br />
Workplace Type<br />
Interaction<br />
Service<br />
Domain<br />
Service<br />
Service Architektur:<br />
logische Schichten<br />
Server<br />
Server<br />
Backend /<br />
ERP-System<br />
Frontend<br />
represents <strong>and</strong><br />
interacts<br />
Interaction Service<br />
selects <strong>and</strong><br />
translates<br />
Domain Service<br />
encapsulates<br />
domain knowledge<br />
Backends<br />
encapsulate<br />
the data<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 69
Arbeitsumgebung<br />
Environment<br />
� Wie kann die Arbeitsumgebung<br />
implementiert werden, so dass sie alle<br />
Arbeitsplätze abstrahiert?<br />
� Wie kann die Arbeitsumgebung die Kopplung<br />
der geeigneten Werkzeuge und Materialien<br />
unterstützen?<br />
� Nutze eine Klasse für den Aufbau der<br />
Arbeitsumgebung.<br />
� beinhaltet workspace (Arbeitsplatz) in dem<br />
man alle notwendigen Objekt arrangieren kann<br />
� workspace beinhaltet fix verfügbare Behälter<br />
mit Basisobjekten<br />
� Schablonen, Werkzeugkasten, Papierkorb<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 70
Arbeitsumgebung<br />
Environment<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 71
Zusammenfassung und<br />
Ausblick<br />
� WAM bietet viele Konzepte für die<br />
Modellierung und Implementierung<br />
interaktiver Systeme<br />
� auch wenn JWAM nur ein paar wenige<br />
Infrastrukturkonzepte bietet lebt der<br />
grundsätzliche Ansatz<br />
� Projekte von Prof. Züllighoven und Mitarbeitern<br />
� Eclipse (Kernleute sind bei OTI im Eclipse-<br />
Team)<br />
� Meiner Meinung nach ist WAM ein Mittel um<br />
Eclipse und dessen RCP konzeptuell besser<br />
zu verstehen und in eigenen Projekten<br />
einzusetzen<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 72
Q-Feedback<br />
� Hallo, es steht vom 3.6. bis 10.6. ein<br />
Formular für Sie zur Bewertung der<br />
Vorlesung zur Verfügung.<br />
� https://qfeedback.hsr.ch/<br />
� Bitte ehrlich ausfüllen!<br />
� Auswertung wird für Sie zugänglich sein.<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 73
Literatur/Quellen<br />
� Züllighoven et al: Das objektorientierte<br />
Konstruktionsh<strong>and</strong>buch, dpunkt 1999<br />
� Züllighoven et al: Object-oriented<br />
Construction H<strong>and</strong>book<br />
� www.jwam.org<br />
� Vielen Dank an Prof. Züllighoven für die<br />
Bereitstellung der Diagramme aus dem<br />
Object-oriented Construction H<strong>and</strong>book<br />
WAM: Werkzeug, Automat und Material <strong>Advanced</strong> <strong>Patterns</strong> <strong>and</strong> <strong>Frameworks</strong> 74