Architekturmuster

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

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

Übersicht[Bearbeiten]

Architekturmuster lassen sich in verschiedene Kategorien einteilen:

Chaos zu Struktur (engl. Mud-to-structure)[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.

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 Veränderung, Ergänzung, Entfernung) von Daten, und Verbindungen zwischen den Filtern, sogenannte Pipes zur effizienten Weiterleitung der Daten.
Schwarzes Brett bzw. Blackboard
Ein Architekturmuster zur Bewältigung von Problemlöseprozessen. Auf dem Blackboard werden dabei von einzelnen Teilprozessen Daten in einer hierarchisch organisierten Form abgelegt. Das Blackboard 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.
Schichtenarchitektur
Trennt die Bestandteile eines Softwaresystems in aufeinander aufbauende Schichten
Domain-Driven Design und Naked Objects
Anwendungsdomänen-getriebene Herangehensweise an Architektur und Design
Data Context Interaction
Trennung von Fachobjekten (Data) Use-Cases und Algorithmen (Context) und fachlichen Rollen (Interaction).
Command Query Responsibility Segregation
Trennung des Businessmodells in Teile, die Daten holen (Query) und Teile, die Daten ändern bzw. Fachlichkeiten ausführen (Command) [1]

Verteilte Systeme[Bearbeiten]

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

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äftsprozessen durch Serviceimplementierungen abgebildet. Durch Orchestrierung von Services niedriger Abstraktionsebenen können so recht flexibel und unter Ermöglichung größtmöglicher Wiederverwendbarkeit Services höherer Abstraktionsebenen geschaffen werden.
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.
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.

Interaktive Systeme[Bearbeiten]

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

Model View Controller (MVC) und Model View Presenter
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.

Adaptive Systeme[Bearbeiten]

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

Mikrokernel
Reflexion
Dependency Injection

Anmerkungen[Bearbeiten]

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

Referenzen[Bearbeiten]

  1. Command Query Responsibility Segregation

Literatur[Bearbeiten]

  •  Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley-Longman, Amsterdam 5. November 2002, ISBN 0321127420 (http://martinfowler.com/eaaCatalog/index.html).
  •  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 3639002210.
  •  Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-orientierte Softwarearchitektur. Ein Pattern-System.. Volume 1, Addison-Wesley-Longman, Bonn 1998 (Originaltitel: Pattern-Oriented Software Architecture - A System of Patterns), ISBN 3-8273-1282-5.
  •  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 (Originaltitel: Pattern-Oriented Software Architecture - Patterns for Concurrent and Networked Objects), ISBN 978-3898641425.
  •  Michael Kircher, Prashant Jain: Pattern-Oriented Software Architecture. Patterns for Resource Management. Volume 3, Wiley, 25. Juni 2004, ISBN 978-0470845257.
  •  Frank Buschmann, Kevlin Henney, Douglas C. Schmidt: Pattern-Oriented Software Architecture. A Pattern Language for Distributed Computing. Volume 4, Wiley, 8. Mai 2007, ISBN 978-0470059029.

Weblinks[Bearbeiten]