| Typ | Konzept |
|---|---|
| Quellen | Quelle - Effektive Softwarearchitekturen Quelle - Recherche - Softwarearchitektur heute 2026 |
| Erstellt | 2026-09-27 |
| Aktualisiert | 2026-09-27 |
| Tags | softwarearchitektur, architekturstil, architekturmuster, schichten, ports-und-adapter, cqrs, rest, mvc |
Ein Architekturstil fasst gemeinsame Merkmale einer Klasse von Systemen zusammen und gibt Regeln für die Zerlegung in Bausteine und Verbindungen vor, etwa Pipes und Filter, Schichten, Ports und Adapter, Client-Server, Publish-Subscribe oder REST. Architekturmuster sind konkrete Ausprägungen eines Stils.
Überblick
Nach Tabelle 4.3 des Buches (Quelle - Effektive Softwarearchitekturen, S. 104):
| Stil | Idee | Muster |
|---|---|---|
| Datenfluss | Folge von Operationen auf Daten | Batch-sequenziell, Pipes und Filter |
| Datenzentriert | gemeinsamer zentraler Datenbestand | Repository, Blackboard |
| Hierarchisch | Bausteine auf verschiedenen Ebenen | Master-Slave, Schichten, Ports und Adapter |
| Verteilt | Bausteine über ein Netz verbunden | Client-Server, CQRS, Broker, Peer-to-Peer |
| Ereignisbasiert | unabhängige Bausteine, Kommunikation über Ereignisse | Publish-Subscribe, Message-Queue, Message-Service |
| Interaktionsorientiert | Systeme mit Bedienoberfläche | Model-View-Controller, Presentation Model |
Die wichtigsten Muster
- Batch-sequenziell: Verarbeitungsschritte laufen nacheinander, Zwischenergebnisse liegen als Dateien vor. Bei Banken und Versicherungen noch immer verbreitet. Einfache Aufteilung, aber ein externer Baustein muss Steuerung und Fehlerbehandlung übernehmen (S. 105–106).
- Pipes und Filter: Filter verarbeiten Datenströme, Pipes verbinden sie. Filter lassen sich austauschen und parallelisieren. Beispiel ist das Migrationssystem M&M, bei dem eine Datenbank die Pipe bildet (arc42, S. 367).
- Repository und Blackboard: Bausteine arbeiten auf gemeinsamen Daten. Beim Blackboard tragen Wissensquellen schrittweise zu einer Lösung bei; eine Steuerung wählt, wer als Nächstes darf (S. 109–110).
- Master-Slave: Ein Master verteilt Arbeit an gleichartige Slaves und fasst die Ergebnisse zusammen, gut für Verfügbarkeit und Zuverlässigkeit (S. 111–112).
- Schichten: Eine Schicht bietet der darüber liegenden Dienste an und kapselt ihre Details. Nur höhere Schichten dürfen tiefere benutzen. Klassisch sind Präsentation, Applikation, Fachdomäne und Infrastruktur (S. 112). Problem: Fachlogik sickert in Applikations- und Präsentationsschicht; zudem ruft die Fachdomäne die Datenbank auf, und so dringen technische Details in die Fachlichkeit (S. 115).
- Ports und Adapter (hexagonale Architektur): Alistair Cockburns Präzisierung von 2005. Die Fachdomäne liegt innen und definiert Ports (Schnittstellen). Adapter aussen verbinden sie mit Datenbank, Oberfläche oder Fremdsystemen. Die Abhängigkeiten zeigen immer nach innen. Robert Martins Clean Architecture ist dasselbe Zwiebelmodell (S. 115–116).
- Client-Server: Clients fragen Dienste bei einem bekannten Server an, synchron. Flexibel und klar getrennt, aber aufwendiger und fehleranfälliger (S. 119).
- CQRS (Command Query Responsibility Segregation, Abschnitt von Oliver Wolf): Schreiben (Commands) und Lesen (Queries) werden getrennt, bis hin zu eigenen Datenmodellen mit voraggregierten Lesedaten. Die Idee geht auf Bertrand Meyer zurück. Strikte Konsistenz ist oft gar nicht nötig: Die Daten auf dem Bildschirm eines Sachbearbeiters sind ohnehin schnell veraltet (S. 119–120). Oft kombiniert mit Event Sourcing, bei dem der Zustand aus der Folge der Ereignisse entsteht.
- Broker: Ein Vermittler leitet Anfragen an die richtigen Server, der klassische Fall ist CORBA (S. 121).
- Peer-to-Peer: gleichberechtigte Knoten ohne zentralen Server (S. 122).
- Ereignisbasiert: Bei Publish-Subscribe melden sich Empfänger für Ereignisse an, der Sender kennt sie nicht. Message-Queues puffern Nachrichten; Message-Services stellen Zustellung und Routing als eigenen Dienst bereit (S. 123–125). Die Integrationsmuster dazu beschreiben Hohpe und Woolf.
- Model-View-Controller: Model mit Daten und Fachfunktionen (unabhängig von der Oberfläche), View für die Anzeige, Controller für die Eingaben. Die Teile halten sich über Benachrichtigungen konsistent, oft mit dem Beobachter-Muster (Entwurfsmuster). Im Web muss der Controller wegen HTTP aufgeteilt werden (S. 126).
- Presentation Model: Zustand und Verhalten der Oberfläche liegen in einer eigenen, testbaren Klasse; die View spiegelt sie nur (S. 127–129). Heute sind Varianten wie MVVM verbreitet.
REST
Abschnitt von Stefan Tilkov (S. 130–132). Roy Fielding beschrieb in seiner Dissertation die „Architektur des Web“. Die Regeln:
- Client-Server;
- Ressourcen mit eindeutiger Adresse (URI);
- einheitliche Schnittstelle mit den HTTP-Verben;
- Repräsentationen, etwa HTML oder JSON;
- zustandslose Kommunikation;
- in einer „echten“ REST-Architektur Hypermedia: Links in der Antwort sagen dem Client, was er als Nächstes tun kann.
Die meisten populären REST-Schnittstellen lassen den Hypermedia-Teil weg. REST hat SOAP/WSDL im Web als Standardlösung abgelöst.
Das Buch zitiert HTTP/1.1 nach RFC 2616. Diese Norm wurde im Juni 2014 durch RFC 7230 ff. und im Juni 2022 durch RFC 9110 („HTTP Semantics“, STD 97) abgelöst. Dazu kommen die versionsspezifischen RFC 9112 (HTTP/1.1), 9113 (HTTP/2) und 9114 (HTTP/3). CORBA, das Beispiel für Broker, wurde mit Java 11 (2018, JEP 320) aus dem JDK entfernt (Quelle - Recherche - Softwarearchitektur heute 2026).
An die Stelle von CORBA traten Message-Broker wie Kafka oder RabbitMQ und in Kubernetes Service Meshes. Nicht per Recherche geprüft.
Das Blackboard-Muster kennt dieses Wiki schon aus der KI der 2000er-Jahre, als Architektur wissensbasierter Systeme (Wissensrepräsentation damals und heute). Die Kombination aus Schichten und Features in Angular ist eine Frontend-Variante hierarchischer Stile (Angular-Architektur).
Verwandt
- Softwarearchitektur – Stile als Ausgangspunkt des Entwurfs
- Entwurfsmuster – Muster im Kleinen
- Entwurfsprinzip – Prinzipien, die Stile umsetzen
- Microservices – verteilter Stil mit Organisationsfolgen
- Domain-Driven Design – Fachdomäne als Kern von Ports und Adaptern
- Reaktive Programmierung – ereignisbasiert im Kleinen
- Skalierung – verteilte Stile skalieren horizontal
