Pattern

Pattern bieten Musterlösungen für wiederkehrende Probleme. Der Begriff Pattern bezeichnet in der  IT und Informatik spezielle Entwurfsmuster, also Strukturen, Modelle oder Schablonen und Muster die sich besonders gut zur Entwicklung stabiler Software als Modell nutzen lassen. 

Klassifikation für Entwurfsmuster - Pattern

Pattern-Klassifikation für EntwurfsmusterEntwurfsmuster (Pattern) lassen sich grundsätzlich in drei unterschiedliche Klassen einteilen. Die Spezialisierung der Analyse-Pattern, Test-Pattern und Design-Pattern ist hier in einem Venn-Diagramm anschaulich dargestellt. Jedes Entwurfsmuster bietet Softwareentwicklern – abhängig vom jeweiligen Verwendungszweck – besondere Eigenschaften und Vorzüge.

Was ist ein Pattern?

Ein Pattern ist ein formale Dokumentation in Form zur modellhaften Lösung eines bestimmten Problems. Dazu werden Entwurfsmuster nicht etwa erfunden, sondern leiten sich aus der wiederholten Anwendung aus erfolgreicher Praxis ab. Patternmodelle finden ebenso in der Softwarearchitektur wie in der Enterprise Architecture Management praktische Verwendung. Alle Entwurfsmuster adressieren nicht-funktionale Anforderungen, also allgemeingültige Eigenschaften die durch Spezifikationen oder Anforderungen gewünschten Eigenschaften entsprechen.

Architekturpattern als Grundlage für modernes Softwaredesign

Ursprünglich stammt das Patternkonzept aus dem Ingenieurbereich: In der Architektur wurden Entwurfsmodelle erstmalig vom US-amerikanischen Architekten und Architekturtheoretiker Christopher Alexander geprägt. Auch wenn Alexanders Konstruktionsmodelle sich auf die Bauarchitektur und die Städteplanung beziehen, lassen sich grundlegende Prinzipien und Erkenntnisse direkt auf Disziplinen wie Softwarearchitekturen und Softwareentwicklung übertragen.

Welche unterschiedlichen Pattern-Modelle gibt es?

Insbesondere für wiederholende Probleme und Aufgaben sowie zur Weiterentwicklung von Software sind Patternmodelle optimal geeignet. Solche Entwurfsmuster bieten handfeste Vorteile für die Organisation und Beschleunigung bei der Programmierung im Team und unterstützen somit gezielt die agile Entwicklung von Software.

1) Analyse-Pattern

Analyse-Pattern dienen als Blueprint zur Identifikation und Visualisierung von Abhängigkeiten um gezielt Optimierungspotential und Handlungsbedarf in IT-Landschaften zu ermitteln.

2) Design-Pattern

Design-Pattern bieten zielorientierte und allgemeingültige Muster für ein Zielbild der zu entwickelnden Soll-Architektur einer Softwarelösung oder einer komplexen IT-Landschaft. Grundsätzlich lösen Designentwürfe für Software grundlegende Probleme innerhalb eines bestimmten Anwendungskontexts.

Dabei definieren Designpattern Schemata zur Untergliederung komplexer Softwaresysteme in Teilsysteme oder stellen ideal konfigurierte Beziehungen zwischen integrierten Softwarelandschaften her. Softwaredesignmodelle berücksichtigen dabei insbesondere wiederkehrende Strukturen.

Ein konkretes Praxisbeispiel für periodische Abhängigkeiten von Software: Unterschiedliche Softwaremodule sind im Rahmen der Bilanzerstellung periodisch – also in regelmäßigen Intervallen –  in immer derselben Weise zur Erstellung des Geschäftsberichts eingebunden.

Software-Design-Pattern sind in der Regel bereits auf die Ebene von Softwarekonstrukten fokussiert, also Klassen, Objekte und objektorientierte Programmierkonzepte wie Vererbung, Aggregation und Beziehungsmanagement.

3) Planungs-Pattern / Conceptual-Pattern / Architektur-Pattern

Planungs-Pattern, Conceptual-Pattern oder Architektur-Pattern bieten Muster um die Lücken zwischen dem Ist- und dem Soll-Zustand der gewünschten Designarchitektur zu ermitteln und Planungsszenarien zu definieren um diese Lücken zu schließen. Konzeptionelle Entwurfsmuster berücksichtigen dabei stets den spezifischen Kontext einer Anwendungsdomäne. Ein erforderlicher Zwischenschritt zur planerischen Entwurfsgestaltung ist die Dokumentation von Fachbegriffen und Sachzusammenhängen die sich im Anwendungskontext ergeben.

Architekturpattern berücksichtigen insbesondere die strukturelle Organisation eines Unternehmens und deren IT-Landschaft. Des weiteren bieten diese Schemata zur idealen Anbindung von Softwaresystemen. Oftmals liefern Softwarearchitekturmodelle vordefinierte Funktionalitäten für Subsysteme und deren Verantwortlichkeiten.

Darüber hinaus  liefern Softwarearchitekturpattern Regeln und Richtlinien zur Organisation in Bezug auf Software und Unternehmenseinheiten, ein konkretes Anwendungsbeispiel hierfür ist die Definition eines Berechtigungskonzepts für Mitarbeiter zur Nutzung unterschiedlicher Softwarekomponenten.

4) Coding-Pattern / Software-Pattern / Programming-Pattern

Coding-Pattern auch als Software-Pattern oder Programming-Pattern bezeichnet, bieten Softwareentwicklern in der Praxis bewährte Methoden für die Programmierung. Codingpattern sind weiterführende Entwurfsmuster der tieferen Ebene und somit in der Regel bereits spezifisch auf eine Programmiersprache ausgelegt. Dabei beschreiben solche Programmingpattern wie bestimmte Funktionen ideal implementiert sind oder wie sich spezielle Funktionen einer bestimmten Programmiersprache optimal nutzen lassen.

Wie Entwurfsmuster entstehen und formuliert werden

Patternmodelle und Entwurfsmuster werden nicht erfunden, sondern leiten sich aus der wiederholten Anwendung aus erfolgreicher Praxis ab.

Goldene Regeln für den Entwurf von Pattern:

  1. Erfinde keine Pattern, sondern…
  2. Lass Patternentwürfe aus guter Beobachtung und Analyse heraus entstehen, erkenne und adaptiere erfolgreiche Muster.
  3. Gestalte das Patternmodell einfach und klar.
  4. Behalte die Patternstruktur bei.
  5. Veröffentliche das Pattern und mach das Wissen über dein Entwurfsmuster für jeden zugänglich.

Pattern: Lösungen für wiederkehrende Probleme

Insbesondere für wiederholende Probleme sind Softwarepattern für ein idealtypisches Vorgehen optimal geeignet. Dabei bieten sich insbesondere für die Softwareentwicklung folgende Vorteile:

  • Konzeptionelle Integrität
  • Konsistenz
  • Einheitlichkeit (Uniformity)
  • Einfachheit (Simplicity)

4 Prinzipien für den Patternentwurf:

  1. Entwickle nützliche Kompositionen und Strukturen
  2. Dokumentiere und verbreitete strukturiert etabliertes Wissen 
  3. Bündle Strategien und Methoden in Packages
  4. Verwende Wissen + Code erneut 

Beim Entwurf von Pattern als Entwurfsmuster ist zu berücksichtigen, wie sich das entworfene Modell über die Zeit und über unterschiedliche Domänen nutzen lässt.

Gezielt Repositories zur Entwicklung von Pattern nutzen!

Patternmodelle lassen sich ideal weiterentwickeln und pflegen wenn die Entwicklung unter den beteiligten Sotfwareentwicklern über ein Repository wie beispielsweise GitHub organisiert ist.

Jetzt lesen: Warum Softwarearchitektur unverzichtbar für erfolgreiche Projekte und die Entwicklung guter Software ist! 

Ähnliche Einträge

Zum Glossar

Neuer Artikel!