Noch vor kurzem drehte sich die Diskussion zur "Objektorientierung" um die richtige Wahl der Implementierungssprache oder um die Eigenschaften des Objekt-Paradigmas [10]. Spätestens seit dem Erscheinen der "Entwurfsmusterbibel" der Gang of Four (GoF) [5] hat sich ein neues Thema etabliert und die Diskussion auf eine höhere Ebene verlagert. Es geht nicht mehr um das Handwerkszeug, sondern um die vergleichende Bewertung und den Einsatz von Mikro-Architekturen. Der oft ausbleibende Erfolg beim Einsatz objektorientierter Konzepte scheint mit Mustern erreichbar: Vielfach erprobte und von Experten entworfene Lösungsstrategien können in eigenen Entwürfen eingesetzt werden.
Was also sind Entwurfsmuster? Unter dem Begriff "Muster" assoziiert man eine Vorlage, nach der etwas hergestellt wird, ein beispielhaftes Vorbild oder eine regelmäßige Struktur. In der Softwaretechnik bezeichnet ein Muster, angelehnt an [5], ein Problem-Lösungs-Paar. Der hinreichend verallgemeinerten Darstellung eines immer wiederkehrenden Entwurfsproblems wird eine praxiserprobte Lösung gegenübergestellt. Beispiele dienen der Illustration des abstrahierten Problems. Diese Dualität legt die Kräfte offen (Randbedingungen und Konsequenzen) und zeigt den Weg vom Problem zur Lösung. Sie führt so zu den eigentlichen Fragen, vor die sich der Entwerfer gestellt sieht. Der wohl bekannteste Vertreter ist das in [7] erstmalig vorgestellte MVC-Muster. (Hierzu auch eine Muster-Definition von James O. Coplien und etwas über den "Vater der Muster").
Muster haben eine literarische Form: Im Zentrum steht die Beschreibung mit Worten anhand einer festen Gliederung [5]. Strukturierte Grafik kann zur Verdeutlichung eingesetzt werden. Formalismen spielen eine untergeordnete Rolle. Die Kenntnis von Musterbüchern (Pattern Languages [1]) kann die Produktivität des Entwerfers erhöhen. Diese Kenntnis kann durch das Lesen der Bücher allein aber nicht erlangt werden. Die praktische Erprobung des Wissens ist ausschlaggebend. Muster müssen in ihrem Potential aber auch in ihren Restriktionen verstanden sein, um sie erfolgreich einzusetzen. Je mehr Muster der Entwerfer verstanden hat, desto häufiger wird er Musterkandidaten in seinen Problemen erkennen.
Generell kann zwischen fachlichen und technischen Mustern unterschieden werden. Fachliche Muster stammen aus der Analyse - die Abstraktion grundlegender fachlicher Eigenschaften [3]. Ein Beispiel ist die Buchung: der Transfer einer Teilmenge als Transaktion. Technische Muster haben direkten Bezug zur Implementierung (z. B. Composite) oder zur Systemarchitektur (z. B. MVC).
Was sind Muster nicht? Goldgräberstimmung herrscht in so manchen Köpfen - das Wissen aus dem eigenen Problembereich soll in die Musterform gebracht werden. An dieser Stelle ist aber Vorsicht angebracht: schnell ist das mächtige Konzept verwässert, die Musterinflation droht. Die Idee der Muster sollte nicht als schlichte Repräsentationsform mißbraucht werden. Der Musterautor muß sich immer die Frage stellen: Ist der Inhalt so allgemeingültig, daß aus der Form viele verschiedene Lösungen in unabhängigen Problembereichen abgeleitet werden können? Muster sind ein Destillat aus zahllosen konkreten Beispielen. Es gilt: Je kompakter eine Mustersprache, desto leichter erlernbar und desto mächtiger ist sie.
Diese Ausführungen sollten Sie nicht abschrecken, den eigenen Problembereich auf Musterkandidaten hin zu untersuchen. Es gibt noch viele Muster zu entdecken, und Sie werden sicherlich fündig. Muster müssen reifen: Eine erste Niederschrift (Muster-Vorlagen) sollte zunächst in der Praxis erprobt und mit anderen diskutiert werden (Pattern-Mailing-Liste), die Ergebnisse in Revision und Vervollständigung der Musterbeschreibung einfließen. Erweist es sich als nicht "mustergültig" genug, löschen Sie es!
Im Gegensatz zur Entdeckung neuer Muster steht die Verwendung der Musterform als Dokumentationsmittel. Ausgehend von der Ausprägung eines Musters in einem Entwurf wird sie als syntaktisches und semantisches Gerüst zur Begründung einer Entwurfsentscheidung herangezogen.