Architekturmuster

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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[Bearbeiten | Quelltext bearbeiten]

Architekturmuster lassen sich in verschiedene Kategorien einteilen:

Adaptive Systeme[Bearbeiten | Quelltext bearbeiten]

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

Chaos zu Struktur (englisch Mud-to-structure)[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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. Beim MVP geht die Kommunikation nur vom Controller aus; die View ist völlig passiv.
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[Bearbeiten | Quelltext bearbeiten]

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.

Anmerkungen[Bearbeiten | Quelltext bearbeiten]

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

Literatur[Bearbeiten | Quelltext bearbeiten]

  • 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.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Command Query Responsibility Segregation