Entwursmuster

Geschichte und Definition von Entwurfsmustern
Entwurfsmuster entsprechen einer Art Lösungsschablone. Durch diese können bekannte Lösungsansätze auf ähnliche oder verwandte Designprobleme übertragen werden. Entwurfsmuster kommen bereits in verschiedensten Disziplinen zur Anwendung. Unter anderem werden Entwurfsmuster in der Architektur, dem klassischen Software Engineering sowie der Mensch-Maschine-Interaktionsforschung angewandt (auch als HCI, Human Computer Interaktion bekannt, ). Ebenfalls gibt es Ansätze das Portaldesign oder das Expertenwissen in der Didaktik durch Muster zu dokumentieren. Für letzteres gibt es diverse Ansätze. Ursprünglich stammt der Entwurfsmusteransatz aus der Architektur. Dieser sollte dazu dienen, die Erwartungen und Begehrlichkeiten von Individuen zu erfassen und mitzuteilen. Zu diesem Zweck wurden total 253 Muster beschrieben, welche sich mit der Ausgestaltung von Konstruktionen, Gebäuden und Städten befassten. Es existieren zahlreiche Definitionen über den Entwurfsmusteransatz, welche unterschiedliche Aspekte in den Vordergrund stellen. Durch den Vergleich von insgesamt neun verschiedenen Definitionen hat Klose eine umfassende Definition verfasst, welche die wichtigsten Elemente beschreibt und diese Elemente anschliessend erläutert: „Pattern beschreiben wiederkehrende Designprobleme und den Kern ihrer Problemlösung. Das Designproblem beruht auf in bestimmten Kontexten auftretenden Systemen sich widerstrebender Kräfte. Die Lösung nutzt die Gestaltungsmöglichkeiten der jeweiligen Designdisziplin; um das sich wiederstrebende Kräftesystem optimal auszubalancieren.“ Von elementarer Wichtigkeit für die Qualität eines Entwurfsmusters ist die Art und Weise, wie die Beschreibung der Lösung erfolgt. Diese muss einerseits Anweisungen liefern, wie die Lösung einer bestimmen Problemsituation erfolgen kann. Andererseits muss diese Lösung ein geeignetes Abstraktionsniveau aufweisen. Dies ermöglicht „eine breite Anwendung in verschiedenen Anwendungsfällen“. Entwurfsmuster dokumentieren somit den Grundgedanken einer Lösung und sind von dauerhafter Gültigkeit, weil das Entwurfsmuster mit dem Entstehen neuer Möglichkeiten einer Designdisziplin im Wesentlichen gültig bleibt. Das Designproblem entsteht, weil sich einander entgegengesetzte Anforderungen berücksichtigt werden müssen. Eine Lösung sorgt für den optimalen Ausgleich dieser Anforderungen mit Hilfe von der Disziplin zur Verfügung stehenden Werkzeugen. Ein Entwurfsmuster besteht somit aus der Beziehung von entgegengesetzten Kräften, dem Kontext und einer mit Hilfe von Werkzeugen der jeweiligen Disziplin erarbeiteten Lösung. Besondere Aufmerksamkeit ist den Definitionen aus dem Bereich des Software Engineerings zu Teil kommen zu lassen, weil diese in den Vordergrund stellen, dass es sich bei Entwurfsmustern um eine Abstraktion von wirksamen Systemen handelt. Diese erfahren eine Rechtfertigung insbesondere durch eine erfolgreiche Anwendung in der Praxis.

Einteilung von Entwurfsmustern
Es gibt verschieden Möglichkeiten der Einteilung von Entwurfsmustern. Rudzki und Hammouda beschreien mögliche Klassifikationskriterien von Entwurfsmustern nach Disziplin, Domäne, Paradigma, Granularität, Zweck oder Umfang. Bei allen Definitionen ist jedoch die Wiederverwendbarkeit der Entwurfsmuster von zentraler Bedeutung. Nachfolgend werden einige Einteilungen beschrieben, um einen Einblick in bereits angewandte Klassifizierungen zu geben. Im Nächsten Unterkapitel folgt schliesslich eine umfangreichere Beschreibung der Einteilung nach Abstraktionsgrad, welche als Beispiel der Klassifikation nach Granularität dient. Gamma et al. unterteilten Entwurfsmuster für objektorientierte Software in ein zweidimensionales Klassensystem. Dabei verwendeten diese zwei Kriterien: Aufgabe und Gültigkeitsbereich. Die Aufgabe wurde in Erzeugungs- Struktur und Verhaltensmuster unterteilt, während der Gültigkeitsbereich in klassen- und objektbasierte Entwurfsmuster unterteilt wurde. Dies führte schliesslich zu sechs Ausprägungen der Kategorisierung von Entwurfsmustern. Insgesamt dokumentierten Gamma et al. schliesslich 23 Entwurfsmuster. Fowler entwickelte Entwurfsmuster im gleichnamigen Buch für Enterprise Application Architecture. Dabei wollte dieser aus der kompakten Form der Entwurfsmuster von Gamma et al. (1996) ausbrechen. Dabei wurden 51 Patterns aus 10 Kategorien beschrieben. In der Architektur wurde eine eigentliche Sprache durch Entwurfsmuster entwickelt, welche 253 Entwurfsmuster umfasst. Dabei wird eine hierarchische Organisation vorgenommen. Dies hat zur Folge, dass „sich die Patterns synergetisch zur Lösung komplexer Probleme ergänzen“. Durch diese Struktur wird die Ableitung kompletter Systeme ermöglicht.

Abstraktionsgrad von Entwurfsmustern
Eine weitere Form Entwurfsmuster zu ordnen ist die Unterscheidung von Abstraktionsniveaus. Besonders bekannt ist das für Softwaresysteme bekannte Klassifikationsschema von Buschmann, Henney, und Schmidt (2007), welches zwischen „Architectural Patterns“, „Design Patterns“ und „Idiomen“ unterscheidet. Letztere sind auch als „Coding Patterns“ bekannt. Nachfolgend werden diese Begriffe anhand der Definition von Rudzki and Hammouda beschrieben. Architectural Patterns: Diese Art von Entwurfsmuster stellt ein Software System auf hohem Abstraktionsniveau dar. Architectural Patterns stellen eine System anhand von Unterkategorien dar und definieren die Beziehungen zwischen den Systemen. Ebenfalls werden die Verantwortlichkeiten der Subsysteme beschrieben. Design Patterns (Entwurfsmuster im engeren Sinn): Bei Entwurfsmustern handelt es sich um ein mittleres Abstraktionsniveau. Dabei wird auf Subsysteme und Komponenten fokussiert. Entwurfsmuster beschreiben allgemeine Lösungen in einem bestimmten Kontext. Idiome: Idiome (oder Coding Patterns) entsprechen dem niedrigsten Abstraktionsniveau. Diese fokussieren darauf Lösungen für eine bestimmte Programmiersprache darzustellen. Bei Idiomen wird auf die einzelnen Teile der Komponenten fokussiert.

Gütekriterien
Kohls hat eine Reihe von Gütekriterien für Entwurfsmuster aufgestellt, welche es bei der Erstellung derselben zu beachten gilt. Diese werden nun beschrieben: Abstraktionsgrad: Durch einen angemessenen Abstraktionsgrad wird die Wiederverwendungsmöglichkeit des Entwurfsmusters erweitert, die Verständlichkeit desselben wird aber mit zunehmendem Abstraktionsgrad gleichzeitig erschwert. Ausserdem wird die Übertragbarkeit auf andere Problemstellungen durch die Spezialisierung der Entwurfsmuster ebenfalls erschwert. Fuzzyness: Eine exakte Trennung von Strukturen ist nicht für alle Wissensdomänen möglich, jedoch wünschenswert und anzustreben. Beispielsweise sind formale Strukturen des Softwaredesigns einfacher zu gestalten als für human- und sozialwissenschaftliche Problemfelder. Granularität: Übersichtlichkeit wird durch die Unterteilung und Vernetzung von Teilproblemen erreicht. Dies erhöht ebenfalls die Wiederverwendbarkeit der Entwurfsmuster. Um dies zu erreichen, sollten Entwurfsmuster auch möglichst unabhängig voneinander sein. Komplexität des Umfelds: Der Nutzen von Entwurfsmustern steigt, je schwieriger eine Identifikation von wiederkehrenden Mustern ist. Entwurfsmuster bieten eine Hilfestellung, indem diese Komplexität reduzieren. Objektivität: Eine Unterscheidung zwischen objektiven und subjektiven Entwurfsmustern muss berücksichtig werden, alsbald Einstellungen und Überzeugungen einfliessen. Akzeptanz und Gültigkeit können durch eine möglichst objektive Herangehensweise verbessert werden. Plausibilität und Verständlichkeit: Die Formulierung der Entwurfsmuster muss verständlich verfasst sein, um Akzeptanz zu erlangen. Es gilt ebenfalls das Vorwissen und die Expertise der Adressaten in die Überlegungen miteinzubeziehen. Relevanz und Expertisegrad: Nutzen und Aufwand einer Dokumentation sind zu berücksichtigen. Besonderer Nutzen entsteht durch das zur Verfügung stellen von Expertenwissen, den dieses ist nicht jedermann intuitiv zugänglich. Strukturierung: Die Beschreibungsfelder Problem, Kontext und Forces müssen getrennt werden. Diese Komponenten stehen in einem Interaktionsverhältnis, jedoch erlaubt die Trennung eine Herangehensweise, welche differenzierte Lösungen für dasselbe Problem im Rahmen von verschiedenen Kontexten ermöglicht. Validität: Die Qualität des Entwurfsmusters zeigt sich darin, indem dieses das beschriebene Problem tatsächlich löst. Durch das Darstellen von Nachweisen aus der Praxis oder dem Ausführen von hypothetischen Einsatzfeldern kann die Glaubwürdigkeit sichergestellt werden. Vollständigkeit: Ein Entwurfsmuster muss alle Designanforderungen berücksichtigen. Diese Anforderungen stehen jedoch häufig in einem Spannungsfeld. Eine Lösung soll deshalb eine Balance dieser Anforderungen erreichen. Je mehr Lücken ein Entwurfsmuster aufweist, umso geringer ist das Nutzenpotential einzuschätzen.