Strukturen in der Softwareentwicklung: Architekturmuster

Architekturmuster beschreiben die grundlegende Struktur eines Softwaresystems und basieren oft auf Entwurfsmustern.

In Pocket speichern vorlesen Druckansicht

(Bild: Lu Wenjuan/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Rainer Grimm
Inhaltsverzeichnis

Architekturmuster beschreiben die grundlegende Struktur eines Softwaresystems und basieren oft auf Entwurfsmustern. Die fünf Bücher aus der Reihe "Pattern-Oriented Software Architecture" liefern wertvolle Informationen und Anregungen zum Thema Architekturmuster.

Modernes C++ – Rainer Grimm

Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Er schreibt gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne und häufig auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++.

Beginnen wir mit einem einordnenden Überblick: Wie unterscheiden sich Architekturmuster, Entwurfsmuster und Idiome?

Der Hauptunterschied zwischen Architekturmuster, Entwurfsmuster und Idiom liegt in der strukturellen Kategorisierung, die auf dem jeweiligen Umfang und Abstraktionsgrad basiert:

  • Architekturmuster beschreiben die grundlegende Struktur des gesamten Softwaresystems. Sie basieren oft auf Entwurfsmustern.
  • Entwurfsmuster definieren die Interaktion der Komponenten und konzentrieren sich auf Teilsysteme.
  • Ein Idiom ist eine Implementierung einer Architektur oder eines Entwurfsmusters in einer konkreten Programmiersprache. Eines der beliebtesten Idiome in C++ ist Resource Acquisition Is Initialization (RAII). Container, Smart Pointers und Locks bilden sie ab.

Ich möchte meine Gedanken über Architekturmuster, Entwurfsmuster und Idiome auf den Punkt bringen:

  • Die Strukturkategorien reichen von abstrakt bis konkret. Idiome sind die konkretesten.
  • Sie wirken auf der Makroebene (Architekturmuster), der Mikroebene (Designmuster) und der Programmiersprache (Idiome).
  • Architekturmuster haben das System, Entwurfsmuster die Subsysteme und Idiome die Programmiersprache im Blick.

Die fünfteilige Buchserie "Pattern-Oriented Software Architecture" (POSA) ist eine wertvolle Quelle für Architekturmuster:

Im Rahmen dieses Artikels stelle ich die sieben am häufigsten verwendeten Architekturmuster kompakt vor: Layers, Pipes-and-Filters, Broker, Model-View-Controller (MVC), Reactor, Active Object und Monitor Object.

POSA 1 gibt eine erste Klassifizierung vor.

Die folgenden Muster ermöglichen eine kontrollierte Zerlegung einer Gesamtsystemaufgabe in zusammenarbeitende Teilsysteme.

  • Schichtenarchitektur: Zerlege eine Aufgabe in Schichten. Jede Schicht hat eine bestimmte Verantwortung und erbringt einen Dienst für eine höhere Schicht.
  • Pipes and Filters: Zerlege eine Aufgabe, die eine komplexe Verarbeitung durchführen soll, in eine Reihe von separaten Elementen, die wiederverwendet werden können. Dies kann die Performanz, Skalierbarkeit und Wiederverwendbarkeit verbessern, da die Aufgabenelemente, die die Verarbeitung durchführen, unabhängig voneinander eingesetzt und skaliert werden können.

Um Systeme zu erzeugen, deren Komponenten sich in verschiedenen Prozessen oder Adressräumen befinden, lässt sich das Broker-Muster nutzen.

  • Broker: Strukturiert verteilte Softwaresysteme, die mit entfernten Dienstaufrufen interagieren. Er ist für die Koordinierung der Kommunikation, ihrer Ergebnisse und Ausnahmen verantwortlich.

Baue ein System mit Mensch-Computer-Interaktion.

  • Model-View-Controller (MVC): Unterteilt die Programmlogik einer Benutzeroberfläche in die einzelnen Komponenten Model, View und Controller. Das Model verwaltet die Daten und Regeln der Anwendung. Die View stellt die Daten dar und der Controller interagiert mit dem Benutzer.

In POSA 2 kommen weitere Klassifizierungen hinzu:

Initiieren, Empfangen, Demultiplexen und Versenden von Ereignissen in verteilten und Netzwerksystemen.

  • Reactor: Eine ereignisgesteuerte Anwendung, die mehrere Client-Anfragen gleichzeitig annehmen und an verschiedene Diensteanbieter verteilen kann.

Behandelt Fragen der Concurrent Architecture und des Designs von Komponenten, Subsystemen und Anwendungen.

  • Active Object: Trennt die Methodenausführung vom Methodenaufruf.
  • Monitor Object: Synchronisiert den Zugriff auf ein Objekt, sodass zu jedem Zeitpunkt nur eine Mitgliedsfunktion ausgeführt werden kann.

Nach diesem ersten Überblick zu den POSA-Büchern und den darin behandelten Mustern werde ich in meinem nächsten Artikel das Architekturmuster Layers näher vorstellen. (map)