Entwurfsmuster stammen ursprünglich aus der Architektur - und ich finde da lassen sich schöne Analogien finden; z.B. diese: Das Problem besteht darin, dass Personen vom Erdgeschoss ins weit entfernte Dachgeschoss kommen müssen (ich schätze dieses Problem tritt in der Architektur recht häufig auf) - die Schablone zur Lösung: ein vertikaler Leutetransporter! (manche Zeitgenossen nennen sowas auch "Aufzug"). Nun gibt es aber durchaus verschiedene Arten von Aufzügen - das allgemeine Konzept eines vertikalen Leutetransporters muss eben für die verschiedenen konkreten Probleme angepasst werden: Expressaufzug, wenn's schnell gehen soll; ein Lastenaufzug, wenn's schwer wird; ein gläserner Aufzug, wenn's ums Repräsentieren geht;

Was sind Muster

Bearbeiten

Ganz unabhängig für welchen Einsatzzweck eine Software geschrieben wird, treten immer wieder ähnliche (Entwurfs/Architektur-)Probleme auf: z.B. kann sich bei der Simulation einer Schaltung der Wert an einem Port ändern und mit diesem Port verbundene Bausteine müssen darüber informiert werden; oder bei einer Krankenhausverwaltungssoftware wird ein neuer Patient aufgenommen und dieser sollte doch dann bitte sofort in verschiedenen anderen Modulen auftauchen. Was haben diese beiden Probleme nun gemeinsam? In beiden Fällen soll eine Änderung an einem Objekt (Binärport bzw. Patientenverwaltung) einer Reihe von anderen Objekten (an den Port angeschlossenen Bausteinen bzw. Labormodul, Stationsmodul, Küchenmodul,...) bekanntgemacht werden. Ein Muster ist nun eine Art Lösungsschablone für bestimmte Problemklassen (schaue dir für die Lösung der Beispielprobleme mal den Beobachter an). Und natürlich ist diese Schablone für ein konkretes Problem anzupassen!

Musterkategorien

Bearbeiten
 
Übersicht über Muster in der objektorientierten Analyse und im objektorientierten Design

In der Informatik werden Muster auf unterschiedlichen Abstraktionsebenen verwendet.

Muster der objektorientierten Analyse (OOA):

  1. Archetypmuster: Domänenspezifische Analysemuster. zB Analysemuster für die Medizintechnik, Automobilindustrie, etc.
  2. Analysemuster: Muster zur Analyse von Geschäftsprozessen (Business Processes) und Geschäftsfällen (Business Cases) - also immer wiederkehrende Tätigkeiten in der OOA

Muster im objektorientierten Design (OOD):

  1. Architekturmuster: Dies sind Muster der höchsten Ebene. Sie thematisieren die grundlegende Organisation und Interaktion zwischen den Komponenten einer Anwendung.
  2. Entwurfsmuster: Diese Muster spezialisieren sich auf Themen des Entwurfes. Sie sind das Hauptthema dieses Buches.
  3. Idiome: Sind programmiersprachenspezifische Muster und auf niedrigster Abstraktionsebene. Sie zeigen auf, wie Aspekte von Komponenten oder Beziehungen untereinander mit den programmiersprachspezifischen Eigenschaften dargestellt oder implementiert werden können.

Weitere Muster: Es gibt noch eine Vielzahl weiterer in der SW-Entwicklung relevante Muster. Hier zu erwähnen sind:

  • Antimuster: "worst practice" - In der Realität (häufig) auftretende Muster, welche oberflächlich vielleicht brauchbar erscheinen, jedoch in der Anwendungspraxis scheitern.
  • Datenbank-Entwurfsmuster

Unterschied zwischen Entwurfsmuster und Klassen

Bearbeiten

Ein Muster beschreibt die allgemeine Lösung einer abstrakten Problemstellung. Beispiel: den vertikalen Transport von Menschen/Gütern. Die Klasse hingegen ist die Umsetzung einer konkreten Problemstellung. Beispiel: Ein gläserner Aufzug für maximal sechs Personen.

Wozu werden Muster verwendet?

Bearbeiten

Ein Muster ist ein allgemeiner Lösungsansatz für eine bestimmte Sorte von Problemstellungen. Durch Verwendung des richtigen Musters muss man dieselbe oder ähnliche Aufgaben nicht mehrfach lösen (das Rad nicht zweimal erfinden). Dadurch kann nicht nur Entwicklungszeit eingespart, sondern auch die Kommunikation unter den Entwicklern vereinfacht werden. Der konsequente Einsatz von Mustern hilft den Code besser zu verstehen und erleichtert somit die Weiterentwicklung und Wartung bestehender Software.

Architektur- und Entwurfsmuster sind:

  • "best practice", haben sich also in der Praxis bewährt
  • lösen wiederkehrende Entwurfsprobleme
  • können helfen, Designfehler zu verhindern
  • sind plattform- und programmiersprachenunabhängig (Aber nicht unbedingt paradigmenunabhängig. Die in diesem Buch behandelten Muster sind großteils für objektorientierte Programmierung ausgelegt.)

Wie werden Muster angewandt

Bearbeiten

Patternsprache

Bearbeiten

Stichwort UML

Siehe auch

Bearbeiten
  • Muster - Entwurfsmuster-Auswahl
Bearbeiten

Wikipedia: Entwurfsmuster (Definition)