Struktur ist das A & O der Pattern-Theorie

In meinen letzten beiden Blogeinträgen zu Design Patterns habe ich einen zentralen Punkt nur am Rande behandelt, der jedoch für jegliche Art von Entwurfsmustern von großer Bedeutung ist: ihre Struktur.

Mit der Struktur von Entwurfsmustern steht und fällt ihre ganze Aussagekraft und Bedeutung. Sie ermöglicht es erst, die Patterns verstehen, verwenden und vergleichen zu können. Ohne eine geeignete Struktur können keine Muster entwickelt werden. Ist die Struktur ungenügend entwickelt, entstehen voneinander unabhängige Faustregeln, die niemals eine Pattern Language bilden können, da ihnen ein gemeinsamer Kern fehlt. Die Patternstrukturen unterscheiden sich in den einzelnen Fachbereichen – logisch, immerhin werden auch unterschiedliche Anforderungen an die Muster gestellt.

Kontext – Problem – Lösung
Christopher Alexander beschreibt in The Timeless Way of Building die Struktur von Patterns in der Architektur sehr detailliert. Demnach ist jedes Pattern eine dreiteilige Regel, welche die Beziehungen zwischen einem spezifischen Kontext, einem Problem und einer Lösung ausdrückt. Das Problem entsteht dadurch, dass unterschiedliche Kräfte in einem System wirken, welche in einem spezifischen Kontext immer wieder auftauchen und im Konflikt miteinander stehen. Die Lösung des Problems wird durch eine räumliche Struktur bzw. Gestaltung oder Anordnung erreicht, welche den Kräftekonflikt löst. Der Kontext beschreibt, wo das Kräftesystem existiert, dessen Konflikte durch ein spezifisches Pattern gelöst werden können.
Als Teil einer „Pattern language“ ist ein Pattern eine Handlungsanleitung, welche zeigt, wie die räumliche Anordnung bzw. Lösung immer wieder genutzt werden kann, um einen bestehenden Kräftekonflikt zu lösen und zwar überall dort, wo der Kontext es relevant macht. Alexander fasst das so zusammen:

„We see, in summary, that every pattern we define must be formulated in the form of a rule which establishes a relationship between a context, a system of forces which arises in that context, and a configuration which allows these forces to resolve themselves in that context.“ (Alexander, 1979, S. 253.)

Pattern-Entwicklung: einfach?
Die Struktur der Patterns ist ihr Skelett. Erst durch die Beschreibung der einzelnen Strukturelemente und ihrer Beziehungen zueinander wird es möglich, den Sinn der Muster zu verstehen. Indem man sich an eine Patternstruktur hält, können aus Praxisbeispielen Muster abgeleitet werden (wie ich es beispielsweise in meiner Diplomarbeit getan habe). Die genaue Beschreibung von Case Studys ist jedoch noch nicht mit der Entwicklung von Entwurfsmustern gleichzusetzen. Vielmehr muss eine Abstrahierung der zentralen Aussagen entlang der Patternstruktur erfolgen, damit die Muster untereinander vergleichbar und kombinierbar werden – das nur nebenbei.

Die Entwicklung von Patterns scheint also grundsätzlich relativ unproblematisch zu sein: Praxisbeispiele im Detail beschreiben, Struktur drüberstülpen und zentrale Aussagen abstrahieren – fertig! Stimmt nur leider so nicht. Denn gleich zu Beginn stellt sich die Frage nach der richtigen Struktur. Ausgehend von Christopher Alexander’s Modell (Kontext – Problem – Lösung) haben sich auch die anderen Pattern-Theorien entwickelt. Dennoch werden in unterschiedlichen Fachbereichen wie erwähnt auch unterschiedliche Anforderungen an Patterns gestellt, was natürlich auch die jeweilige Struktur beeinflusst.

GoF geht stärker ins Detail
Die Gang of Four führt für die Design Patterns in der objektorientierten Softwareentwicklung eine detailliertere Patternstruktur ein als jene, die Alexander für die Architektur vorschlägt. Damit soll ermöglicht werden, nicht nur das Endergebnis eines Entwurfsprozesses festzuhalten, sondern diesen nachvollziehbar zu machen, um ihn wiederverwenden zu können. Es ist wichtig, dass durch die Entwurfsmuster klar wird, welche Entscheidungen bei deren Entwicklung getroffen wurden und welche Vor- und Nachteile sie beinhalten. Konkrete Beispiele und damit Praxisbezug erleichtern auch hier wiederum die Verständlichkeit.

Die GoF verwendet für die Beschreibung ihrer Patterns eine strukturierende Maske:

„We describe design patterns using a consistent format. Each pattern is divided into sections according to the following template. The template lends a uniform structure to the information, making design patterns easier to learn, compare, and use.“

Strukturelemente der GoF
Folgende Strukturelemente führen sie ein, anhand derer Patterns entwickelt und beschrieben werden:

  • Pattern Name and Classification
    Der Name des Musters ist sehr wichtig, da er dessen wesentlichen Gehalt und dessen Besonderheit beschreibt. Außerdem geht er in das Entwurfsvokabular über und sollte deshalb eindeutig sein.
  • Intent
    Hier wird die Frage nach dem Zweck des Musters gestellt: Was macht es? Welches spezifische Problem löst es?
  • Also Known As
    Hier werden andere, für dasselbe Muster gebräuchliche Namen genannt.
  • Motivation
    Hier wird ein Szenario geschildert: Die Darstellung eines Problems und dessen Lösung dient dazu, die folgenden, abstrakteren Abschnitte leichter zu verstehen.
  • Applicability
    Es werden die Situationen genannt, in welchen das Pattern angewendet werden kann (Kontext).
  • Structure
    Hierbei handelt es sich um ein Diagramm, das die Klassen im Muster grafisch veranschaulicht (OOS-spezifisch).
  • Participants
    Hier werden die am Muster beteiligten Klassen, Objekte und ihre Zuständigkeiten beschrieben.
  • Collaborations
    Wie arbeiten die Klassen/Objekte zur Erfüllung der Aufgabe zusammen?
  • Consequences
    Ein bedeutender Abschnitt: Es geht darum, welche Vor- und Nachteile das Muster hat, wie das Muster seine Ziele erreichen will und welche Systemstrukturen unabhängig voneinander variiert werden können.
  • Implementation
    Es werden Fallen, Tipps und Techniken beschrieben, die bei der Implementierung des Musters von Bedeutung sein können.
  • Sample Code
    Beispielhafte Codefragmente.
  • Known Uses
    Praxisbeispiele, in denen das Muster zur Anwendung kommt (möglichst aus unterschiedlichen Bereichen).
  • Related Patterns
    Es wird ein Bezug zu anderen Entwurfsmustern hergestellt: Welche Unterschiede gibt es zwischen den Mustern und welche Kombinationen sind möglich?
Struktur für Social Media Patterns
Der Grund, warum ich diese Patternstruktur hier im Detail aufliste, ist, dass ich mir Gedanken darüber mache, wie eine solche Struktur für Entwurfsmuster in der Webkommunikation ausschauen könnte.
In meiner Diplomarbeit habe ich die dreiteilige Alexander’sche Patternstruktur verwendet, um Muster für die Onlinekommunikation von Unternehmen zu entwickeln. Dabei handelte es sich allerdings mehr um einen Versuch, der nicht den Anspruch erheben sollte, als eigenständige Theorie der Webkommunikation zu gelten. Vielmehr ging es darum, zu ergründen, ob die Patterntheorie überhaupt zur Beschreibung von Onlinekommunikation geeignet ist. Für die von mir entwickelten Muster funktionierte die Beschreibung anhand von Kontext – Problem – Lösung gut. Meine Social Media Patterns haben so eine einheitliche Struktur und werden dadurch leicht anwend- und verstehbar. Allerdings sind sie auch sehr allgemein gehalten – die Entwicklung von Subpatterns hätte den Rahmen der Arbeit gesprengt.

Die Patternstruktur in der objektorientierten Softwareentwicklung ist für mich deshalb interessant, weil sie eine größere Zahl an erklärenden Elementen umfasst und so auch eine genauere bzw. kategorisiertere Beschreibung der Muster zulässt. Einfacher gesagt: Durch eine detailliertere Struktur müsste es theoretisch leichter werden, Entwurfsmuster zu entwickeln.

Für die Entwicklung von Social Media Patterns könnten folglich einige hilfreiche Aspekte der Design Pattern Struktur in abgewandelter Form übernommen werden. Die Beschreibung von Kontext, Problem und Lösung nach Alexander bliebe zwar aufrecht. Hinzukommen könnten allerdings weitere strukturierende Kategorien, wie beispielsweise erklärende Szenarien und Praxisbeispiele, in denen das Muster zur Anwendung kommt („Motivation“ und „Known Uses“) und für die Zielerreichung sinnvolle Tools sowie deren etwaiges Zusammenwirken. Ebenfalls nützlich könnte es sein, Tipps für die Implementierung zu geben sowie auf häufige Fehler bei der Anwendung der Muster aufmerksam zu machen („Implementation“). Die Aufzählung von verwandten Patterns und Subpatterns erleichterte einerseits die Auswahl des geeigneten Musters und zeigte andererseits Kombinationsmöglichkeiten auf („Related Patterns“). Hier würde auch der Bezug zum großen Ganzen, der Pattern Language, hergestellt.

Voraussetzung für eine Pattern Language in der Webkommunikation
Ich denke, dass der erste Schritt, um eine Pattern Language für die Webkommunikation zu generieren, die Entwicklung einer passenden Musterstruktur sein muss. Sie ist deshalb essentiell, weil nur so eine umfassende und detaillierte Beschreibung, ein ganzheitliches Verständnis und die sinnvolle Anwendung der Patterns erreicht werden kann. Dabei sollte sie sich auf der einen Seite nicht in Details verlieren und damit Allgemeingültigkeit verunmöglichen. Andererseits darf sie auch nicht zu breit angelegt sein und damit an Eindeutigkeit und Klarheit verlieren sowie wichtige Unterschiede verschleiern. Obwohl ich noch nicht sicher bin, wie eine solche Struktur für Social Media Patterns im Detail aussehen muss, ist mir klar, dass die Entwicklung einer solchen Struktur das A und O einer jeden erfolgreichen Pattern-Theorie ist und der Entwicklung von Entwurfsmustern immer vorausgeht.

Literaturhinweis:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Elements of Reusable Object-Oriented Software. Addison Wesley 1995. ISBN 0-201-63361-2.
Christopher Alexander: The Timeless Way of Building. Oxford University Press. New York 1979. ISBN 0195024028.
.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s