Design pattern

Design pattern

Entwurfsmuster (engl. design pattern) sind bewährte Lösungs-Schablonen für wiederkehrende Entwurfsprobleme der Softwarearchitektur und Softwareentwicklung. Sie stellen damit eine wiederverwendbare Vorlage zur Problemlösung dar, die in einem spezifischen Kontext einsetzbar ist. In den letzten Jahren hat der Ansatz der Entwurfsmuster auch zunehmendes Interesse im Bereich der Mensch-Computer-Interaktion gefunden. Aber auch in nicht-informatischen Bereichen findet diese Idee immer mehr Eingang.

Inhaltsverzeichnis

Geschichte

Der Architekt Christopher Alexander hatte in einer auf Vitruv zurückgehenden Tradition in den 1970er Jahren eine Sammlung von Entwurfsmustern zusammengestellt. Die Hauptaufgabe dieser Muster ist es, die Bewohner der zu bauenden Strukturen in den Entwurfsprozess einzubinden. Der designtheoretische Ansatz für Entwurfsmuster wird von Alexander bereits 1964 in Notes on the synthesis of form dargestellt. In der Architektur hat sich diese Idee jedoch bei weitem nicht so verbreitet wie später in der Softwareentwicklung.

Kent Beck und Ward Cunningham griffen 1987 die Ideen Alexanders aus der Architektur auf und entwickelten Entwurfsmuster für die Erstellung von grafischen Benutzeroberflächen in Smalltalk. Ein Jahr später begann Erich Gamma mit seiner Promotion an der Universität Zürich über die generelle Übertragung dieser Methode auf die Softwareentwicklung.

Parallel dazu arbeitete James Coplien in den Jahren 1989 bis 1991 an musterähnlichen Idiomen für C++ und veröffentlichte 1991 sein Buch Advanced C++ Idioms. Erich Gamma beendete im selben Jahr seine Promotion und ging im Anschluss in die Vereinigten Staaten. Dort brachte er 1994 zusammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch Design Patterns - Elements of Reusable Object-Oriented Software heraus, in dem 23 Entwurfsmuster beschrieben sind. Diese vier Autoren sind unter Entwicklern auch unter ihrem Spitznamen Gang of Four (Viererbande, kurz GoF) bekannt und verhalfen mit ihrem Buch den Entwurfsmustern zu ihrem Durchbruch. Gelegentlich wird GoF auch als Verweis für das besagte Buch verwendet. Anders als Alexander, der seine Muster vor allem für Laien geschrieben hat, richten sich die GoF-Muster an Softwareentwickler und nicht an Benutzer.

Anforderungen und Nutzen

Ein gutes Muster sollte

Entwurfsmuster beinhalten in der Regel Referenzen auf andere Muster. Mithilfe dieser ist es möglich, Mustersprachen zu entwickeln.

Der primäre Nutzen eines Entwurfsmusters liegt in der Beschreibung einer Lösung für eine bestimmte Klasse von Entwurfsproblemen. Weiterer Nutzen ergibt sich aus der Tatsache, dass jedes Muster einen Namen hat. Dies vereinfacht die Diskussion unter Entwicklern, da man abstrakt über eine Struktur sprechen kann. So sind etwa Software-Entwurfsmuster – im Gegensatz zu Idiomen – zunächst einmal unabhängig von der konkreten Programmiersprache.

Wenn der Einsatz von Entwurfsmustern dokumentiert wird, ergibt sich ein weiterer Nutzen dadurch, dass durch die Beschreibung des Musters ein Bezug zur dort vorhandenen Diskussion des Problemkontextes und der Vor- und Nachteile der Lösung hergestellt wird.

Andere Arten von Mustern

Die Arbeiten der Gang of Four haben viele Autoren zu weiteren Veröffentlichungen angeregt. Daraus entstand auch die Problematik, dass ein Muster sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren lässt. Vielmehr gibt es u.a. graduelle Unterschiede in der Granularität von Mustern. So wird etwa das Model-View-Controller-Muster (MVC) von einigen als Architekturmuster, von anderen (noch) als Entwurfsmuster betrachtet.

Beispiele für Muster, welche keine Entwurfsmuster sind:

  • Analysemuster charakterisieren typische Fälle der Anforderungsanalyse.
  • Architekturmuster beschreiben typische Softwarearchitekturen.
  • Idiome sind unterhalb der Ebene des Entwurfs bei der Programmierung auftretende Muster.
  • Kommunikationsmuster beziehen sich auf die Kommunikationswege zwischen Personen einer Organisation.
  • Organisationsmuster beschreiben Elemente der Strukturen von Organisationen.
  • Antimuster beschreiben, "wie man es nicht machen sollte."

Antimuster

Wo Entwurfsmuster in der Software-Entwicklung allgemein übliche und bekannte Lösungsansätze sind, um Probleme zu lösen, so sind Anti-Patterns Negativ-Beispiele von bereits durchgeführten Lösungen, die Hinweise darauf geben, welche Fehler vermieden werden sollten.

Nachdem bei der Software-Entwicklung immer mehr von positiven Erfahrungen von erfolgreich abgeschlossenen Aufgabenstellungen profitiert wurde, konzentrierte man sich auch darauf, die Negativbeispiele, also wiederkehrende Fehler bei der Software-Entwicklung, zu identifizieren und zu dokumentieren.

Liste von Mustern

Erzeugende Muster Strukturelle Muster Verhaltensmuster Weitere Muster
Abstract Factory (Abstrakte Fabrik) Adapter Chain of Responsibility (Zuständigkeitskette) Business Delegate
Builder (Erbauer) Composite (Kompositum) Command (Kommando) Data Access Object
Factory Method (Fabrikmethode) Bridge (Brücke) Interpreter Data Transfer Object (Datentransferobjekt)
Prototype (Prototyp) Decorator (Dekorierer) Iterator Dependency Injection
Singleton (Einzelstück) Facade (Fassade) Mediator (Vermittler) Inversion of Control
  Flyweight (Fliegengewicht) Memento Model View Controller
  Proxy (Stellvertreter) Null Object (Nullobjekt) Model View Presenter
    Observer (Beobachter) Plugin
    State (Zustand) Fluent Interface
    Strategy (Strategie)  
    Template Method (Schablonenmethode)  
    Visitor (Besucher)  

Siehe auch

Literatur

  • Erich Gamma, Richard Helm, Ralph E. Johnson: Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software, Addison Wesley, München 2004, ISBN 3-8273-2199-9
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Elements of Reusable Object-Oriented Software. Addison Wesley, 1995, ISBN 0-201-63361-2
  • Wolfgang Pree: Design Patterns for Object-Oriented Software Development. Addison Wesley, ACM Press, August 1994, ISBN 978-0201422948
  • Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Entwurfsmuster von Kopf bis Fuß (Ein Buch zum Mitmachen und Verstehen), O'Reilly, Köln 2006, ISBN 3-89721-421-0
  • Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksfahl-King, Shlomo Angel: Eine Muster-Sprache. Städte, Gebäude, Konstruktion. Löcker, Wien 1995, ISBN 3-85409-179-6
  • Christopher Alexander: Notes on the synthesis of form, Harvard University Press, Cambridge 1964, ISBN 978-0674627512
  • Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Softwarearchitektur. Ein Pattern-System. Addison-Wesley-Longman, Bonn 1998, ISBN 3-8273-1282-5

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Design pattern — A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise. The idea was introduced by the architect Christopher Alexander in the field of architecture[1] …   Wikipedia

  • Design Pattern — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Design pattern — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Design Pattern — Entwurfsmuster (engl. design pattern) sind bewährte Lösungs Schablonen für wiederkehrende Entwurfsprobleme der Softwarearchitektur und Softwareentwicklung. Sie stellen damit eine wiederverwendbare Vorlage zur Problemlösung dar, die in einem… …   Deutsch Wikipedia

  • Design pattern (computer science) — In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for …   Wikipedia

  • Design pattern Servant — Servant is a design pattern used to offer some functionality to a group of classes without defining that functionality in each of them. A Servant is a class whose instance (or even just class) provides methods that take care of a desired service …   Wikipedia

  • Design pattern — …   Википедия

  • design pattern — noun A general solution to a variety of similar problems …   Wiktionary

  • Software design pattern — In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a… …   Wikipedia

  • Interaction design pattern — In interaction design/HCI, an interaction design (ID) pattern is a general repeatable solution to a commonly occurring usability or accessibility problem in interface design or interaction design.See design pattern (disambiguation page) and… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”