Mustersprache

Eine Mustersprache ist eine Methode, um gute Entwurfspraktiken oder Muster nützlicher Organisation in einem Fachgebiet zu beschreiben. Der Begriff wurde vom Architekten Christopher Alexander geprägt und durch sein 1977 erschienenes Buch A Pattern Language populär gemacht.

Eine Mustersprache kann auch ein Versuch sein, die tiefere Weisheit dessen auszudrücken, was die Lebendigkeit in einem bestimmten Bereich des menschlichen Strebens durch eine Reihe miteinander verbundener Muster bringt. Altivierung ist ein Platzhalterbegriff für „die Qualität, die keinen Namen hat“: ein Gefühl der Ganzheit, des Geistes oder der Gnade, das zwar in unterschiedlicher Form, präzise und empirisch überprüfbar ist. Einige Befürworter dieses Design-Ansatzes behaupten, dass gewöhnliche Menschen es verwenden können, um sehr große, komplexe Designprobleme erfolgreich zu lösen.

Was ist ein Muster?
Wenn ein Designer etwas entwirft – sei es ein Haus, ein Computerprogramm oder eine Lampe – müssen sie viele Entscheidungen treffen, wie sie Probleme lösen können. Ein einzelnes Problem ist mit seinem typischen Platz (der Syntax) dokumentiert und verwendet (die Grammatik) die am häufigsten und anerkannteste Lösung, die in freier Wildbahn gesehen wird, wie die Beispiele in Wörterbüchern. Jeder solcher Eintrag ist ein einzelnes Entwurfsmuster. Jedes Muster hat einen Namen, einen beschreibenden Eintrag und einige Querverweise, ähnlich einem Wörterbucheintrag. Ein dokumentiertes Muster sollte erklären, warum diese Lösung in den Kontexten des Musters gut ist.

Elementare oder universelle Muster wie „Tür“ oder „Partnerschaft“ sind vielseitige Ideale des Designs, entweder als Erfahrung oder zur Verwendung als Komponenten in der Praxis, explizit beschrieben als ganzheitliche Lösungen der Kräfte in wiederkehrenden Kontexten und Umständen, ob in der Architektur, Medizin, Softwareentwicklung oder Regierungsführung usw. Muster könnten erfunden oder gefunden und untersucht werden, wie zum Beispiel die natürlich vorkommenden Muster des Designs, die menschliche Umgebungen charakterisieren.

Wie bei allen Sprachen hat eine Mustersprache Wortschatz, Syntax und Grammatik – aber eine Mustersprache gilt für eine andere komplexe Aktivität als die Kommunikation. In Mustersprachen für das Design zerfallen die Teile auf diese Weise:

Die Sprachbeschreibung – das Vokabular – ist eine Sammlung von benannten, beschriebenen Lösungen für Probleme in einem Interessensgebiet. Diese werden Entwurfsmuster genannt. So beschreibt zum Beispiel die Sprache für Architektur Dinge wie: Siedlungen, Gebäude, Räume, Fenster, Riegel usw.
Jede Lösung enthält eine Syntax, eine Beschreibung, die zeigt, wo die Lösung in ein größeres, umfassenderes oder abstrakteres Design passt. Dies verbindet die Lösung automatisch mit einem Netz anderer benötigter Lösungen. Zum Beispiel haben Räume Möglichkeiten, um Licht zu bekommen, und Wege, um Leute hinein und heraus zu bekommen.
Die Lösung enthält eine Grammatik, die beschreibt, wie die Lösung ein Problem löst oder einen Vorteil erzeugt. Wenn der Vorteil nicht benötigt wird, wird die Lösung nicht verwendet. Vielleicht kann dieser Teil des Designs leer gelassen werden, um Geld oder andere Ressourcen zu sparen; Wenn die Menschen nicht warten müssen, um ein Zimmer zu betreten, kann eine einfache Tür einen Warteraum ersetzen.
In der Sprachbeschreibung, der Grammatik und der Syntax wird ein Index (häufig mit einem alphabetischen Index von Musternamen) zu anderen benannten Lösungen indexiert, sodass der Designer schnell von einer Lösung zu verwandten, benötigten Lösungen denken und sie auf logische Weise dokumentieren kann. In Christopher Alexanders Buch A Pattern Language sind die Muster in abnehmender Reihenfolge nach Größe mit einem separaten alphabetischen Index.
Das Netz von Beziehungen im Index der Sprache bietet viele Wege durch den Entwurfsprozess.
Dies vereinfacht die Konstruktionsarbeit, da Designer den Prozess von jedem Teil des Problems, das sie verstehen, starten und auf die unbekannten Teile hinarbeiten können. Zur gleichen Zeit, wenn die Mustersprache für viele Projekte gut funktioniert hat, gibt es Grund zu der Annahme, dass sogar ein Designer, der das Designproblem nicht vollständig versteht, den Designprozess abschließen wird, und das Ergebnis wird verwendbar sein. Zum Beispiel müssen Skifahrer, die nach drinnen kommen, Schnee verschütten und Ausrüstung lagern. Die unordentlichen Schnee- und Stiefelreiniger sollten draußen bleiben. Die Ausrüstung muss gepflegt werden, daher sollten die Racks innen sein.

Viele Muster bilden eine Sprache
Genauso wie Wörter grammatikalische und semantische Beziehungen zueinander haben müssen, um eine gesprochene Sprache nützlich zu machen, müssen Entwurfsmuster in Position und Gebrauchsordnung zueinander in Beziehung gesetzt werden, um eine Mustersprache zu bilden. Christopher Alexanders Arbeit beschreibt einen Zerlegungsprozess, in dem der Designer ein Problem hat (vielleicht eine kommerzielle Aufgabe), eine Lösung auswählt und dann neue, kleinere Probleme entdeckt, die sich aus der größeren Lösung ergeben. Gelegentlich haben die kleineren Probleme keine Lösung und eine andere größere Lösung muss ausgewählt werden. Letztendlich sind alle verbleibenden Designprobleme klein genug oder routiniert genug, um von den Bauherren improvisiert zu werden, und das „Design“ ist getan.

Die tatsächliche Organisationsstruktur (hierarchisch, iterativ usw.) liegt je nach Problem im Ermessen des Designers. Dies ermöglicht einem Designer, ein Design zu erkunden, ausgehend von einem kleinen Teil. Wenn das passiert, ist es für einen Designer üblich zu erkennen, dass das Problem tatsächlich Teil einer größeren Lösung ist. An diesem Punkt wird das Design fast immer ein besseres Design.

In der Sprache muss daher jedes Muster seine Beziehungen zu anderen Mustern und zur Sprache als Ganzes anzeigen. Dies gibt dem Konstrukteur, der die Sprache verwendet, eine große Orientierungshilfe bezüglich der verwandten Probleme, die gelöst werden müssen.

Der schwierigste Teil eines externen Experten, der eine Mustersprache anwendet, ist tatsächlich eine zuverlässige, vollständige Liste der zu lösenden Probleme zu erhalten. Natürlich sind die Menschen, die am besten mit den Problemen vertraut sind, die Leute, die ein Design brauchen. Daher befürwortete Alexander die Improvisation vor Ort durch betroffene, befähigte Benutzer als eine wirkungsvolle Möglichkeit, sehr praktikable großangelegte Ausgangslösungen zu bilden, den Nutzen eines Designs zu maximieren und die Nachbesserung zu minimieren. Der Wunsch, die Nutzer von Architektur zu befähigen, war in der Tat, was Alexander dazu veranlasste, ein Mustersprachenprojekt für die Architektur durchzuführen.

Designprobleme in einem Kontext
Ein wichtiger Aspekt von Entwurfsmustern ist es, die Schlüsselideen zu identifizieren und zu dokumentieren, die ein gutes System von einem schlechten System (das ein Haus, ein Computerprogramm oder ein alltägliches Gebrauchsobjekt sein kann) unterscheiden und bei der Gestaltung der Zukunft helfen Systeme. Die in einem Muster ausgedrückte Idee sollte allgemein genug sein, um in sehr unterschiedlichen Systemen in ihrem Kontext angewendet zu werden, aber immer noch spezifisch genug, um eine konstruktive Anleitung zu geben.

Die verschiedenen Situationen, in denen die Probleme und Lösungen, die in einem Muster behandelt werden, gelten, werden als Kontext bezeichnet. Ein wichtiger Teil jedes Musters ist es, diesen Kontext zu beschreiben. Beispiele können weiter veranschaulichen, wie sich das Muster auf sehr unterschiedliche Situationen bezieht.

Zum Beispiel adressiert Alexanders Muster „A PLACE TO WAIT“ Bushaltestellen auf die gleiche Weise wie Warteräume in einer Operation, während sie immer noch hilfreiche und konstruktive Lösungen vorschlägt. Das „Gang-of-Four“ Buch Design Patterns von Gamma et al. schlägt Lösungen vor, die unabhängig von der Programmiersprache und der Anwendungsdomäne des Programms sind.

Dennoch können die Probleme und Lösungen, die in einem Muster beschrieben werden, auf der einen Seite hinsichtlich Abstraktion und Allgemeinheit und auf der anderen Seite in Bezug auf Spezifität variieren. Am Ende hängt das von den Vorlieben des Autors ab. Aber selbst ein sehr abstraktes Muster enthält normalerweise Beispiele, die von Natur aus absolut konkret und spezifisch sind.

Muster können auch variieren, wie weit sie sich in der realen Welt bewährt haben. Alexander gibt jedem Muster eine Bewertung von Null, ein oder zwei Sterne, was zeigt, wie gut sie in realen Beispielen bewiesen sind. Es wird allgemein behauptet, dass alle Muster mindestens einige existierende reale Beispiele benötigen. Es ist jedoch denkbar, noch nicht implementierte Ideen in einem musterartigen Format zu dokumentieren.

Die Muster in Alexanders Buch variieren auch in ihrem Maßstab – einige beschreiben, wie man eine Stadt oder ein Viertel baut, andere befassen sich mit einzelnen Gebäuden und dem Inneren von Räumen. Alexander sieht die kleinskaligen Artefakte als konstruktive Elemente der Großwelt, so dass sie mit einem hierarchischen Netzwerk verbunden werden können.

Kräfteausgleich
Ein Muster muss die Probleme charakterisieren, die es lösen soll, den Kontext oder die Situation, in der diese Probleme auftreten, und die Bedingungen, unter denen die vorgeschlagenen Lösungen empfohlen werden können.

Oft entstehen diese Probleme aus einem Konflikt unterschiedlicher Interessen oder „Kräfte“. Ein Muster entsteht als ein Dialog, der dann hilft, die Kräfte auszugleichen und schließlich eine Entscheidung zu treffen.

Zum Beispiel könnte ein Muster ein kabelloses Telefon vorschlagen. Die Kräfte wären die Notwendigkeit zu kommunizieren und die Notwendigkeit, andere Dinge gleichzeitig zu erledigen (Kochen, Inspizieren des Bücherregals). Ein sehr spezifisches Muster wäre nur „WIRELESS TELEPHONE“. Allgemeinere Muster wären „WIRELESS DEVICE“ oder „SECONDARY ACTIVITY“, was darauf hindeutet, dass eine Nebentätigkeit (wie Telefonieren oder das Untersuchen der Hosentaschen) sich nicht auf andere Aktivitäten auswirken sollte.

Obwohl die Kräfte im „SECONDARY ACTIVITY“ -Muster ziemlich unspezifisch in ihrem Kontext sind, sind sie denen in „WIRELESS TELEPHONE“ sehr ähnlich. Somit können die konkurrierenden Kräfte als Teil des Wesens eines Entwurfsmusters gesehen werden, das in einem Muster ausgedrückt wird.

Muster enthalten ihre eigenen Gründe
Normalerweise enthält ein Muster eine Begründung, die sich auf bestimmte Werte bezieht. Für Christopher Alexander ist es am wichtigsten, über die Leute nachzudenken, die mit einem Stück Architektur in Kontakt kommen. Einer seiner Schlüsselwerte ist es, dass sich diese Menschen lebendiger fühlen. Er spricht von der „Qualität ohne Namen“ (QWAN).

Allgemeiner gesagt, könnten wir sagen, dass ein gutes System von denjenigen, die es benutzen sollen, oder – noch besser – von allen Menschen, die es betrifft, angenommen, begrüßt und freudig als Bereicherung des täglichen Lebens angenommen werden sollte. Zum Beispiel bespricht Alexander bei der Diskussion eines Straßencafés die möglichen Wünsche eines Gastes, erwähnt aber auch Leute, die einfach vorbeilaufen.

Dasselbe gilt für technische Geräte wie Telefone und Autos, für soziale Strukturen wie ein Team, das an einem Projekt arbeitet, oder für die Benutzeroberfläche eines Computerprogramms. Die Eigenschaften eines Softwaresystems könnten zum Beispiel bewertet werden, indem beobachtet wird, ob Benutzer ihre Zeit damit verbringen, mit dem System Spaß zu haben oder damit zu kämpfen.

Indem wir uns auf die Auswirkungen auf das menschliche Leben konzentrieren, können wir Muster erkennen, die unabhängig von wechselnden Technologien sind, und so „zeitlose Qualität“ (Alexander) finden.

Generische Struktur und Layout
Normalerweise wählt der Autor einer Mustersprache oder -sammlung eine generische Struktur für alle darin enthaltenen Muster und bricht diese in generische Abschnitte wie Kontext, Problembeschreibung, Lösung usw. auf.

Christopher Alexanders Muster zum Beispiel bestehen jeweils aus einem kurzen Namen, einer Bewertung (bis zu zwei ‚*‘ Symbolen), einem sensibilisierenden Bild, der Kontextbeschreibung, der Problemstellung, einem längeren Textteil mit Beispielen und Erklärungen, einer Lösung Aussage, eine Skizze und weitere Referenzen. Diese Struktur und das Layout wird manchmal als „Alexandrian Form“ bezeichnet.

Alexander verwendet ein spezielles Textlayout, um die verschiedenen Abschnitte seiner Muster zu markieren. Zum Beispiel sind die Problembeschreibung und die Lösungsaussage fett gedruckt, wobei letzterer immer das Schlüsselwort „Therefore:“ vorangestellt ist. Manche Autoren verwenden stattdessen explizite Bezeichnungen, was zu einem gewissen Grad an Redundanz führt.

Sinnvolle Namen
Wenn Design von einem Team erstellt wird, bilden die Musternamen ein Vokabular, das sie teilen können. Dies macht es notwendig, dass Musternamen leicht zu merken und sehr anschaulich sind. Einige Beispiele aus Alexanders Arbeiten sind WINDOW PLACE (hilft zu definieren, wo Fenster in einen Raum gehen sollen) und A PLACE TO WAIT (dient zum Beispiel dazu, die Eigenschaften von Bushaltestellen und Krankenhauswarteräumen zu definieren).

Aggregation in einem assoziativen Netzwerk (Mustersprache)
Eine Mustersprache, wie sie von Alexander entwickelt wurde, enthält Links von einem Muster zum anderen. Wenn man versucht, ein Muster in einem Projekt anzuwenden, wird ein Designer auf andere Muster gedrängt, die in seinem Kontext als hilfreich betrachtet werden.

In Alexanders Buch werden solche Links im „references“ -Teil gesammelt und im „context“ -Teil des verlinkten Musters wiedergegeben – also ist die Gesamtstruktur ein gerichteter Graph. Ein Muster, mit dem in den „Referenzen“ verlinkt wird, adressiert normalerweise ein Problem von niedrigerem Maßstab, das als ein Teil des Problems mit höherem Maßstab vorgeschlagen wird. Zum Beispiel hat das Muster „PUBLIC OUTDOOR ROOM“ einen Verweis auf „STAIR SITZE“.

Auch ohne die Musterbeschreibung tragen diese Links, zusammen mit aussagekräftigen Namen, eine Botschaft: Wenn man einen Ort außerhalb der Zeit baut („PUBLIC OUTDOOR ROOM“), sollte man ihn über Treppen, wo Leute sitzen können, umgeben („STAIR SEATS „). Wenn Sie ein Büro planen („WORKSHOPS AND OFFICES“), sollten Sie Arbeitsbereiche in kleinen Gruppen („SMALL WORKING GROUPS“) einrichten. Alexander argumentiert, dass die Verbindungen im Netzwerk sogar noch aussagekräftiger sind als der Text der Muster selbst.

Die Links in Alexanders Buch führen eindeutig zu einem hierarchischen Netzwerk. Alexander zieht eine Parallele zur Hierarchie einer Grammatik – das ist ein Argument dafür, dass er von einer Mustersprache spricht.

Die Idee der Verknüpfung ist unter Musterautoren allgemein akzeptiert, obwohl die semantische Logik hinter den Links variieren kann. Einige Autoren, wie Gamma et al. Verwenden Sie in Design Patterns nur wenig Musterverknüpfung – möglicherweise, weil es für ihre Musterkollektion nicht sehr sinnvoll war. In diesem Fall sprechen wir eher von einem Musterkatalog als von einer Mustersprache.

Verwendung
Alexander ermutigte Leute, die sein System benutzten, um seine Sprache mit eigenen Mustern zu erweitern. Um dies zu ermöglichen, konzentrieren sich seine Bücher nicht ausschließlich auf Architektur oder Bauingenieurwesen; er erklärt auch die allgemeine Methode der Mustersprachen. Das ursprüngliche Konzept für das Buch A Pattern Language war, dass es in Form eines 3-Ring-Binders veröffentlicht werden würde, so dass Seiten später leicht hinzugefügt werden könnten; das erwies sich als unpraktisch beim Publizieren. Der Mustersprachenansatz wurde verwendet, um Fachwissen in verschiedenen Bereichen zu dokumentieren. Einige Beispiele sind Architekturmuster, Informatikmuster, Interaktionsdesignmuster, pädagogische Muster, soziale Handlungsmuster und Gruppenerleichterungsmuster. Der Mustersprachenansatz wurde auch als ein Weg zur Förderung der zivilen Intelligenz empfohlen, indem er hilft, Aktionen für verschiedene Menschen und Gemeinschaften zu koordinieren, die gemeinsam an signifikanten gemeinsamen Problemen arbeiten. Alexanders Vorgaben, sowohl Mustersprachen zu verwenden als auch neue zu schaffen, bleiben einflussreich und seine Bücher werden von Experten in nicht verwandten Bereichen referenziert.

Es ist wichtig zu beachten, dass Notationen wie UML oder die Symbolsammlung des Flussdiagramms keine Mustersprachen sind. Sie könnten enger mit einem Alphabet verglichen werden: Ihre Symbole könnten verwendet werden, um eine Mustersprache zu dokumentieren, aber sie sind keine Sprache für sich. Ein Rezept oder eine andere sequentielle Folge von Schritten, die zu befolgen sind, mit nur einem korrekten Pfad von Anfang bis Ende, ist ebenfalls keine Mustersprache. Der Prozess des Entwerfens eines neuen Rezepts könnte jedoch von der Verwendung einer Mustersprache profitieren.

Einfaches Beispiel für ein Muster
Name: SchokoladenChipRatio
Kontext: Sie backen Schokoladenkekse in Kleinserie für Familie und Freunde
Betrachten Sie diese Muster zuerst: SugarRatio, FlourRatio, EggRatio
Problem: Ermitteln Sie das optimale Verhältnis von Schokoladenstückchen zu Keksteig
Lösung: Beachten Sie, dass die meisten Menschen Schokolade als den besten Teil des Schokoladenkekses betrachten. Beachten Sie auch, dass zu viel Schokolade verhindern kann, dass der Keks zusammenhält, was seine Attraktivität verringert. Da Sie in kleinen Chargen kochen, sind die Kosten keine Überlegung. Verwenden Sie daher die maximale Menge an Schokoladenstückchen, die zu einem wirklich stabilen Keks führt.
Als nächstes betrachten wir: NutRatio oder CookingTime oder FreezingMethod

Ursprung
Christopher Alexander, ein Architekt und Autor, prägte den Begriff Mustersprache. Er benutzte es, um auf allgemeine Probleme der Planung und des Baus von Gebäuden und Städten hinzuweisen und wie sie gelöst werden sollten. Die Lösungen, die in diesem Buch vorgeschlagen werden, enthalten Vorschläge, die von der Art und Weise der Strukturierung von Städten bis zur Platzierung von Fenstern in einem Raum reichen.

Der Rahmen und die Philosophie des „Pattern Language“ -Ansatzes wurde zunächst in dem Buch A Pattern Language populär, das in den späten 1970er Jahren von Christopher Alexander und fünf Kollegen am Center for Environmental Structure in Berkeley, Kalifornien, geschrieben wurde. Während A Pattern Language 253 „Patterns“ vom ersten Pattern, „Independent Regions“ (das allgemeinste) bis zum letzten, „Things from Your Life“ enthält, geht Alexanders Buch The Timeless Way of Building mehr in die Motivation und den Zweck ein der Arbeit. Die folgenden Definitionen von „pattern“ und „pattern language“ werden von A Pattern Language paraphrasiert:

„Ein Muster ist eine sorgfältige Beschreibung einer immerwährenden Lösung für ein wiederkehrendes Problem innerhalb eines Gebäudekontextes und beschreibt eine der Konfigurationen, die einem Gebäude Leben einhaucht. Jedes Muster beschreibt ein Problem, das in unserer Umgebung immer wieder auftritt und dann beschreibt die Kernlösung für dieses Problem, so dass Sie die Lösung millionenfach nutzen können, ohne es zweimal gleich zu machen. “

Eine Mustersprache ist ein Netzwerk von Mustern, die sich gegenseitig ansprechen. Muster helfen uns, Erkenntnisse und Wissen über Design zu behalten und können in Kombination verwendet werden, um Lösungen zu schaffen.

Anwendungsdomänen
Christopher Alexanders Idee wurde in anderen Disziplinen übernommen, oft viel stärker als die ursprüngliche Anwendung von Mustern in der Architektur, wie im Buch A Pattern Language dargestellt. Zu den jüngsten Beispielen gehören Software-Design-Muster im Software-Engineering und allgemeiner Architekturmuster in der Informatik sowie Interaktionsdesignmuster. Pädagogische Muster werden verwendet, um gute Praktiken im Unterricht zu dokumentieren. Das Buch Befreiende Stimmen: Eine Mustersprache für die Kommunikationsrevolution, das 136 Muster zur Nutzung von Information und Kommunikation zur Förderung von Nachhaltigkeit, Demokratie und positivem sozialen Wandel enthält, wurde 2008 zusammen mit einer Website mit noch mehr Mustern veröffentlicht. Das Deck „Group Works: Eine Mustersprache für das Leben in Meetings und anderen Versammlungen“ wurde 2011 veröffentlicht. Kürzlich wurden auch Muster in das Design von Systemarchitekturen eingeführt. Schachstrategie und Taktik beinhalten viele Muster vom Öffnen bis zum Schachmatt.

Ward Cunningham, der Erfinder des Wikis, verfasste gemeinsam mit Michael Mehaffy ein Referat, in dem er argumentierte, dass es enge Beziehungen zwischen Wikis und Mustersprachen gibt und dass Wikis „tatsächlich als Werkzeuge entwickelt wurden, um Muster effizienter zu teilen und zu verändern“.