Im Bereich der Softwareentwicklung sind Architekturmuster (auch Architekturstil, englisch architectural pattern) in den Arten von Mustern auf oberster Ebene einzuordnen. Im Gegensatz zu Entwurfsmustern oder Idiomen bestimmen sie nicht ein konkretes (meist kleines oder lokales) Teilproblem, sondern die grundlegende Organisation und Interaktion zwischen den Komponenten einer Anwendung.

Übersicht

Architekturmuster lassen sich in verschiedene Kategorien einteilen:

Adaptive Systeme

Diese Muster unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen.

Chaos zu Struktur (englisch Mud-to-structure)

Diese Muster sollen helfen, die Vielzahl der Komponenten und Objekte eines Softwaresystems zu organisieren. Die Funktionalität des Gesamtsystems wird hierbei in kooperierende Subsysteme aufgeteilt.

Command Query Responsibility Segregation
Trennung des Businessmodells in Teile, die Daten holen (Query), und Teile, die Daten ändern bzw. Fachlichkeiten ausführen (Command)[1]
Data Context Interaction
Trennung von Fachobjekten (Data), Anwendungsfällen, Algorithmen (Context) sowie fachlichen Rollen (Interaction).
Domain-driven Design und Naked Objects
Anwendungsdomänen-getriebene Herangehensweise an Architektur und Design
Pipes und Filter
Schematischer Aufbau des Pipes und Filter Musters
Beschreibt die Struktur für Systeme, die Datenströme verarbeiten. Das System wird durch mehrere unabhängige Einheiten strukturiert: Verarbeitungsschritte, sogenannte Filter, mit einer Umwandlung (beispielsweise Ergänzung, Entfernung, Veränderung) von Daten und Verbindungen zwischen den Filtern, sogenannte Pipes, zur effizienten Weiterleitung der Daten.
Schichtenarchitektur
Trennt die Bestandteile eines Softwaresystems in aufeinander aufbauende Schichten
Schwarzes Brett (Blackboard)
Ein Architekturmuster zur Bewältigung von Problemlösungsprozessen. Auf dem Schwarzen Brett werden dabei von einzelnen Teilprozessen Daten in einer hierarchisch organisierten Form abgelegt. Das Schwarze Brett ist nun in der Lage, andere Teilprozesse von der Ablage oder Änderung dieser Daten zu benachrichtigen. Dies ermöglicht eine nahezu parallele Arbeitsweise der Teilprozesse.

Interaktive Systeme

Muster dieser Kategorie helfen, Mensch-Computer-Interaktionen zu strukturieren.

Model View Controller (MVC), Model View Presenter und Remote Presentation Model
Model View Controller
[notes 1] teilen die Benutzerinterface-Interaktionen in drei verschiedene Rollen. Das Modell enthält die darzustellenden Daten und die Geschäftslogik. Es ist von Präsentation und Steuerung unabhängig. Die View ist für die Darstellung der benötigten Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennt sowohl ihre Steuerung (Controller) als auch das Modell, dessen Daten sie präsentiert, ist aber nicht für die Weiterverarbeitung der vom Benutzer übergebenen Daten zuständig. Die Steuerung (Controller) nimmt von der View Benutzeraktionen entgegen, wertet diese aus und agiert entsprechend.
Presentation-Abstraction-Control (PAC)
Ein Architekturmuster zur Strukturierung von interaktiven Softwaresystemen. Dabei werden diese derart in Teile zerlegt, dass jeder Teil genau eine Aufgabe des Systems anbietet. Damit wird eine hohe Flexibilität des Systems erhalten und man muss sich nur darum kümmern, dass diese Teile zu einem funktionierenden Ganzen zusammengesetzt werden und auch zusammenarbeiten.

Verteilte Systeme

Diese Kategorie unterstützt die Verwendung verteilter Ressourcen und Dienste in Netzwerken, wie z. B. die Orchestrierung. Zwei weitere Modelle ('Mikrokernel' und 'Pipes und Filter') unterstützen Verteilung zweitrangig.

Client-Server
Beschreibt eine weitere Möglichkeit, Aufgaben und Dienstleistungen innerhalb eines Netzwerkes zu verteilen. Die Aufgaben werden von Programmen erledigt, die in Clients und Server unterteilt werden. Der Client kann auf Wunsch eine Aufgabe vom Server anfordern, der Server beantwortet die Anforderung.
Peer-to-Peer
Bezeichnet eine Möglichkeit, Aufgaben und Dienstleistungen innerhalb eines Netzwerkes zu verteilen. Dabei sind alle Computer gleichberechtigt und können sowohl Dienste in Anspruch nehmen als auch zur Verfügung stellen. Ebenso können die Netzwerkteilnehmer abhängig von ihrer Qualifikation in verschiedene Gruppen eingeteilt werden und spezifische Aufgaben übernehmen.
Serviceorientierte Architektur (SOA)
Ein Architekturmuster für verteilte Systeme, um Dienste von IT-Systemen zu strukturieren und zu nutzen. Durch Zusammensetzen (Orchestrierung) werden damit Geschäftsprozesse durch Dienstimplementierungen abgebildet. Durch Orchestrierung von Diensten niedriger Abstraktionsebenen können so recht flexibel und unter Ermöglichung größtmöglicher Wiederverwendbarkeit Dienste höherer Abstraktionsebenen geschaffen werden.
Edge Computing
Dezentrale Datenverarbeitung am Rand des Netzwerks, der sogenannten Edge. Damit wird die immer größer werdende Rechenleistung der Endgeräte wie Mobiltelefone dazu genutzt, Berechnungen beim Anwender zu machen, um damit Bandbreite zu sparen und die Reaktionszeit zu reduzieren.

Anmerkungen

  1. MVC und MVP wird von manchen als Entwurfsmuster eingestuft.

Literatur

  • Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley-Longman, Amsterdam 2002, ISBN 0-321-12742-0 (martinfowler.com).
  • Jonathan Ufer: Architekturmuster und das Verstehen von Informatiksystemen. Eine Analyse und Unterrichtsbeispiele für die Sekundarstufe II. vdm Verlag Dr. Müller, Saarbrücken 2008, ISBN 3-639-00221-0.
  • Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Softwarearchitektur. Ein Pattern-System. Band 1. Addison-Wesley-Longman, Bonn 1998, ISBN 3-8273-1282-5 (englisch: Pattern-Oriented Software Architecture - A System of Patterns.).
  • Frank Buschmann, Michael Stal, Hans Rohnert, Douglas Schmidt: Pattern-orientierte Software-Architektur. Muster für nebenläufige und vernetzte Objekte. Volume 2. dpunkt.verlag, 2002, ISBN 978-3-89864-142-5 (englisch: Pattern-Oriented Software Architecture - Patterns for Concurrent and Networked Objects.).
  • Michael Kircher, Prashant Jain: Pattern-Oriented Software Architecture. Patterns for Resource Management. Volume 3. Wiley, 2004, ISBN 978-0-470-84525-7.
  • Frank Buschmann, Kevlin Henney, Douglas C. Schmidt: Pattern-Oriented Software Architecture. A Pattern Language for Distributed Computing. Volume 4. Wiley, 2007, ISBN 978-0-470-05902-9.

Einzelnachweise

  1. Command Query Responsibility Segregation