WAM

Advanced Patterns and Frameworks

Advanced Patterns and Frameworks


J_ Ravi
Diese Lernkarten bieten einen Überblick über die Konzepte und Implementierungen von Werkzeugen und Materialien in der Softwareentwicklung auf Universitätsniveau. Sie behandeln Aspekte wie die Kopplung von Werkzeugen und Materialien, die Implementierung von Fachwerten, die Kommunikation zwischen Werkzeugteilen und die Komposition komplexer Werkzeuge. Zudem werden technische Automaten, Arbeitsplätze und Arbeitsumgebungen sowie Behälter und Formulare thematisiert. Diese Karteikarten richten sich an Studierende und Entwickler, die ihre Kenntnisse in der Modellierung und Umsetzung von Software-Werkzeugen vertiefen möchten.
Flashcards
19
Students
2
Language
German
Category
Computer Science
Level
University
Created / Updated
30.12.2015 / 10.04.2018

Flashcards

WAM

WAM steht für Werkzeug, Automat, Material. Dahinter versteckt sich eine komplette Entwicklungsmethodik. Der Fokus liegt aber auf den o.g. Metaphern, die sehr gut mit der XP SystemMetapherharmoniert. Nach WAM sucht man nach geeigneten Materialien, Werkzeugen und Automaten, um das System für Entwickler und Anwender verständlich zu beschreiben.

Metapher

Die Gestaltung von Softwaresystemen sollte durch eine Metapher gestützt sein. Dies erleichtert das Verständnis für den Anwender und vereinfacht das Software-Design. Eine mögliche Metapher ist die der Fabrik, der Anwender entspricht dem Bediener der Maschine, die Software entspricht der Maschine und der Workflow / Ablauf entspricht dem Fliessband. Diese Metapher ist für einen Sachbearbeiter jedoch nicht geeignet, da dieser den Kontrollfluss selbst vorgeben möchte. In der Abbildung sind weitere mögliche Metaphern abgebildet.

Fachwerte

Fachwerte sind Erweiterungen von primitiven Datentypen objektorientierter Programmiersprachen. Sie halten Informationen und sind unveränderlich, weswegen sich Fachwerte zum Beispiel für Geldbeträge anbieten: Es ergibt Sinn zwei Geldbeträge miteinander zu addieren, jedoch nicht sie zu multiplizieren. Hier ist es also angebracht einen unveränderlichen Geldbetrag als eigenen Fachwert zu behandeln und für jede Änderung an diesem einen neuen zu erstellen. Ein Fachwert kennt niemanden außer sich selbst und andere Fachwerte.

Material

Materialien sind Gegenstände, die ein Anwender im Rahmen einer Aufgabe mit einem Werkzeug bearbeitet und aus denen seine Arbeitsergebnisse bestehen. Ein Material darf andere Materialien, sowie Fachwerte benutzen und verändern, sowie neue Fachwerte erzeugen. Viele Eigenschaften von konkreten fachlichen Gegenständen, wie beispielsweise Verträgen, Formularen, Bankkonten oder Plänen, lassen sich sinnvoll auf Software-Materialien übertragen.

Werkzeug (tool)

Werkzeuge ermöglichen dem Anwender über eine grafische Benutzeroberfläche zügig und flexibel Materialien zu bearbeiten: Sie nehmen ihm lästige Routinetätigkeiten ab, indem der Benutzer einen Prozess nur noch anstößt, den die Software anschließend ausführt. Weil sich die Bedienung eines Computers jedoch grundlegend von der Bedienung manueller Werkzeuge unterscheidet, ist es notwendig, das hinter dem manuellen Werkzeug stehende Konzept von Arbeit zu erkennen. Eine direkte Abbildung (manueller) Werkzeuge in Software ist - im Gegensatz zu Materialien - daher selten sinnvoll. Ein Werkzeug kann Services, Automaten, Materialien und Fachwerte verwenden, benutzen und verändern, was bei der Implementation zu zyklischen Abhängigkeiten führen kann. Um dem vorzubeugen ist die Verbindung zweier Subwerkzeuge (ein Werkzeug, welches selbst von einem anderen Werkzeug benutzt wird) nicht linkskomparativ.

Arbeitsumgebung (work environment)

Eine Arbeitsumgebung ist der Ort, an dem Werkzeuge, Materialien und andere Objekte bereitliegen und dömanenspezifisch arrangiert sind.

Der Arbeitsbereich, Workenvironment oder Arbeitsumgebung ist der Platz, an welchem die Materialien sowie Werkzeuge bereitliegen. Diese werden für das domänenspezifische Problem optimiert arrangiert.

Ein Arbeitsbereich kann von mehreren Benutzern geteilt werden, welche die selben Werkzeuge benötigen. Zudem stellt ein Arbeitsbereich ggf. auch Funktionen für kollaboratives Arbeiten zur Verfügung.

Die Arbeitsumgebung kann auch weitere Räume enthalten, welche vom Arbeitsplatz aus zugänglich sind.

Arbeitsplatz (work workspace)

Die Arbeitsaufgaben werden am Arbeitsplatz (Desktop Metapher) erledigt. Die Arbeitsumgebung beinhaltet weitere (öffentliche) Bereiche, die vom Arbeitsplatz aus zugänglich sind.

  • Der individuelle Arbeitsplatz ist in der Regel vor Fremdzugriff geschützt
  • In einem Ein-Benutzer System sind Arbeitsumgebung und Arbeitsplatz in der Regel identisch.

In der Arbeitsumgebung soll es Platz für den persönlichen Arbeitsplatz (Workspace) des Benutzers geben. Dieser kann vom Benutzer personalisiert werden. Gibt es unterschiedliche Arbeitskontexte, kann es angebracht sein, dass ein Benutzer mehrere individualisierbare Arbeitsplätze hat (Perspectives).

Automat (automaton)

Ein Automat ist einem Werkzeug sehr ähnlich, jedoch besitzt ein Werkzeug eine Grafische Benutzeroberfläche ein Automat jedoch nicht. Ein typisches Anwendungsfeld sind Hintergrundaktivitäten bei denen er vor Ausführung seiner Tätigkeit konfiguriert wird und anschließend ohne Interaktion mit dem Benutzer arbeitet. Beispiele für einen Automat sind z.B. die Refactoring Tools aus dem Eclipse oder das Kompilieren eines Projektes.

Behälter (Container)

Ein Behälter beinhaltet, verwaltet, ordnet und liefert Materialien. Im Eclipse wäre ein typischer Behälter ein Projekt (worin alle Materialien drin liegt)

Fachlicher Behälter

Bei fachlichen Behälter handelt es sich selbst auch um ein Material und verwenden daher das Composite-Pattern. Ein Behälter speichert, sammelt oder ordnet Materialien. Ein Container gibt Auskunft über die darin enthaltenen Materialien (z.B. Anzahl).

Ein Container kann mit samt seinem Inhalt verschoben werden (z.B. Papierkorb). Ein Behälter kann entweder nur gleichartige Materialien enthalten, oder jedoch auch unterschiedliche Materialien einer bestimmten Art (z.B. Kundendossier enthaltet Beratungen, Vermögenswerte etc.).

Ein Behälter enthält / sammeln meistens die Materialien welche für einen Arbeitsablauf benötigt werden (wieder das Beispiel eines Kunden oder Beratungsdossier). Die Behälter dienen daher der Kooperation sowie Koordination (z.B. übernehmen einer Beratung eines anderen Beraters).

Formular

Wie kann das Konzept eines Papier-Formulares in dem Modellierungsansatz abgebildet werden. Bei Formularen handelt es sich auf eine Art um ein Material, jedoch um ein spezielles. Deshalb werden diese als eigenes konzeptionelles Konzept definiert.

Sämtliche Formulare innerhalb eines Systems verhalten sich gleichartig, dadurch können generische Ansichten, Editoren, Kopierer oder Drucker erstellt werden. Dies birgt jedoch die Gefahr, dass Formularsysteme auch für die Bearbeitung von Materialien verwendet wird, obwohl ein anderer Ansatz geeigneter wäre (Hammer-Syndrom).

Unterschied Automat und Werkzeug

Bei einem Automaten gibt der Benutzer die Kontrolle über den Arbeitsablauf an den Automaten ab. Der Automat führt vordefinierte Schritte aus um zum definierten Ziel zu kommen. Daher hat der Benutzer keine Möglichkeiten in den Ablauf des Automat einzugreifen.

Technischer Automat

Ein technischer Automat stellt einen endlichen Automat dar. Typisch beim Einsatz von Gerätesteuerungen.

Probe

Eine Probe oder Sonde erlaubt eine Zustandsabfrage von Automaten. Der Gerätestatus wird dadurch zum Arbeitsplatz «transportiert». Ein Beispiel hierfür kann eine Temperaturanzeige sein.

Adjusting Tool

Ein Einstellwerkzeug erlaubt die Konfiguration eines technischen Automat.

Werkzeugkomposition

Wie baut man aus einfachen Werkzeug komplexere Werkzeuge. Die Aufteilung dient der Komplexitätsbeherrschung sowie der Erhöhung der Wiederverwendbarkeit. Das komplexe Werkzeug kann als Composite umgesetzt werden, wobei das komplexe Werkzeug einen gemeinsamen Kontext für die Subtools vorgibt.

Feedback between Toolparts

Wenn ein Subtool verwendet wird, dann kann es notwendig sein, dass das Parenttool auf Ereignisse aus dem Subtool reagieren muss. Das Subtool sollte jedoch unabhängig vom Parenttool bleiben.

Dies kann dadurch erreicht werden, dass das Subtool als observable implementiert wird. Das Parent-Tool wird als Observer registriert. Dadurch sind die Subtools unabhängig vom konkreten Parenttool.

Fachwerte Implementierungsoptionen

Wie können die eingebauten Datendypen der OO-Programmiersprachen erweitert werden. Hierfür siehe Value-Patterns. Die Fachwerte sollen als Value Objects realisiert werden. Ein Fachwert stellt kein Material dar. 

Bei der Umsetzung können sich folgende Vorgehen empfehlen:
• Immutable Domain Value Objects, ermöglicht die Anwendung von Flyweight.
• Handle-Body-Idiom: Verwenden eines Referenzcounters bei grossen Datenobjekten (shared_ptr), dadurch kann die Referenz geshared werden und wird nicht auf dem Stack kopiert.
• Fachwerttyp als Stream: Sehr grosse Werte wie Videos, Audiodateien etc. sollten als Stream bezogen werden.
• Fachwerttyp per Konfiguration: Erlauben Fachwerttype konfigurativ zu definieren. Z.B. eine Währungstabelle.

Werkzeug- und Material-Kopplung (Aspect)

Ein Aspekt (=Interface) stellt die Koppelung zwischen einem Werkzeug und einem Material dar. Da ein Werkzeug mehrere verschiedene Materialien bearbeiten kann und ein Material von verschiedenen Werkzeugen bearbeitet werden kann, besteht zwischen Material und Werkzeug eine n:m Beziehung.

Daher wird jeder unterschiedliche Nutzungsaspekt als Aspekt realisiert. Ein Aspekt stellt somit eine spezielle Nutzung eines oder mehrerer Materialien dar. Ein Aspekt definiert eine Schnittstelle auf einem Material. Materialien die einen spezifischen Aspekt unterstützen können dann von Werkzeugen für diesen Aspekt bearbeitet werden. Dadurch können Materialien verschiedene Aspekte implementieren (Interface Segragation). 

Die Werkzeuge werden gegen die Aspekte programmiert. Dadurch werden die Werkzeuge sowie Materialien für den selben Aspekt aneinander gekoppelt. Für einen Aspekt können mehrere Werkzeuge bestehen. Die Aspekte können einerseits über Vererbung oder Schnittstellen implementiert werden.

Study