Strukturen in der Softwareentwicklung: Architekturmuster
Architekturmuster beschreiben die grundlegende Struktur eines Softwaresystems und basieren oft auf Entwurfsmustern.
(Bild: Lu Wenjuan/Shutterstock.com)
- Rainer Grimm
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.
Beginnen wir mit einem einordnenden Überblick: Wie unterscheiden sich Architekturmuster, Entwurfsmuster und Idiome?
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.
POSA – Pattern-Oriented Software Architecture
Die fünfteilige Buchserie "Pattern-Oriented Software Architecture" (POSA) ist eine wertvolle Quelle für Architekturmuster:
- Pattern-Oriented Software Architecture, Volume 1 von Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad und Michael Stal (POSA 1)
- Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects von Douglas C. Schmidt, Michael Stal, Hans Rohnert und Frank Buschmann (POSA 2)
- Pattern-Oriented Software Architecture, Volume 3: Muster für das Ressourcenmanagement von Michael Kirchner und Prashant Jain (POSA 3)
- Pattern-Oriented Software Architecture, Volume 4: Eine Mustersprache für verteilte Programmierung von Frank Buschmann, Kevlin Henney und Douglas C. Schmidt (POSA 4)
- Pattern-Oriented Software Architecture, Volume 5: Patterns and Pattern Language von Frank Buschmann, Kevlin Henney und Dougles C. Schmidt (POSA 5)
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.
Vom (Ur-)Schlamm zur Struktur
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.
Verteilte Systeme
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.
Interaktive Systeme
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:
Event-Demultiplexing und Dispatching
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.
Concurrency Patterns
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.
Wie geht's weiter?
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)