17.01.2013 Aufrufe

Advanced Patterns and Frameworks

Advanced Patterns and Frameworks

Advanced Patterns and Frameworks

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!