Architekturmuster

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

Im Bereich der Softwareentwicklung sind Architekturmuster (auch: Architekturstil, engl. architectural style) 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.

Inhaltsverzeichnis

Übersicht [Bearbeiten]

Architekturmuster lassen sich in vier verschiedene Kategorien einteilen:

  1. Chaos zu Struktur (engl. 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.
  2. Verteilte Systeme: 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.
  3. Interaktive Systeme: Muster dieser Kategorie helfen, Mensch-Computer-Interaktionen zu strukturieren.
  4. Adaptive Systeme: Diese Muster unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen.

Muster aus Patterns of Enterprise Application Architecture [Bearbeiten]

Domänenlogik [Bearbeiten]

Hauptartikel: Entwurfsmuster

Data Source-Architektur [Bearbeiten]

Hauptartikel: Entwurfsmuster

Objekt-Relationale Verhaltensmuster [Bearbeiten]

Unit of Work
verwaltet eine Liste von Objekten mittels einer Business-Transaktion. Sie koordiniert das Schreiben in die Datenbank, sowie die Auflösung von Nebenläufigkeits-Problemen.[1]
Identity Map
stellt sicher, dass jedes Objekt nur einmal geladen wird, indem jedes Objekt in einer Karte (englisch: Map), meist ein assoziatives Datenfeld, gehalten wird.[1]

siehe auch: Entwurfsmuster#Objekt-Relationale Verhaltensmuster

Objekt-Relationale Strukturmuster [Bearbeiten]

Hauptartikel: Objektrelationale Abbildung

Die Abbildung objektorientierter Strukturen in relationalen Datenbanken kann auf unterschiedliche Art und Weise erfolgen. Dabei gilt es Objektbeziehungen und Vererbung in Relationen umzuwandeln.

Folgende Muster werden von Martin Fowler in Patterns of Enterprise Application Architecture erwähnt:

Identity Field
Ein Identity Field speichert ein Datenbank-ID-Feld in einem Objekt um die Zuordnung vom Objekt zu der zugehörigen Datenbankzeile zu gewährleisten.[1]
Dependent Mapping
hat eine Klasse, welche die Datenbank-Abbildung für die Unterklasse übernimmt.[1]
Embedded Value
bildet ein Objekt in mehreren Feldern der Tabelle eines anderen Objekts ab.[1]
Serialized LOB
speichert einen Graphen von Objekten durch Serialisierung als LOB in einem in einem einzelnen Datenbankfeld.[1]
Inheritance Mapper
eine Struktur um Datenbank-Mapper zu organisieren, welche die Vererbungshierarchien behandeln.

siehe auch: Relationale-Datenbank-Muster, Entwurfsmuster

Objekt-Relationales Metadaten-Mapping [Bearbeiten]

Metadata Mapping
hält Details des Objekt-Relationalen Mappings in Metadaten.
Query Object
ist ein Objekt, welches eine Datenbankabfrage repräsentiert.

Web-Darstellung [Bearbeiten]

Model View Controller (MVC)
Hauptartikel: Model View Controller
teilt die Benutzerinterface-Interaktionen in drei verschiedene Rollen.
Page Controller
ist ein Objekt, dass die Anfragen zu einer bestimmten Seite oder Aktion auf einer Webseite behandelt.
Front Controller
Hauptartikel: Front Controller
ein Controller, welcher alle Anfragen zu einer Webseite behandelt.
Template View
rendert Informationen mit Hilfe von eingebetteten Auszeichnungen in eine HTML-Vorlage.
Transform View
verarbeitet die Daten der Domäne Datenelement-für-Datenelement und transformiert diese in HTML.
Two-Step View
transformiert die Domänendaten in zwei Schritten nach HTML:
  1. Transformation in eine Logikseite (z. B. XML, JSON)
  2. Rendern der Logikseite nach HTML (z. B. mit XSLT, JavaScript)
Application Controller
ist ein zentralisierter Punkt zur Behandlung der Ansichten-Navigation und des Anwendungsflusses.

Verteilung [Bearbeiten]

Remote Facade
stellt eine grobkörnige Fassade auf feinkörnigen Objekten bereit um die Effizienz beim Transport der Daten über das Netzwerk zu verbessern.
Datentransferobjekt
Hauptartikel: Datentransferobjekt
(englisch: Data Transfer Object, DTO) ist ein Objekt, welches Daten zwischen Prozessen transportiert um die Anzahl der Methodenaufrufe zu reduzieren.

Offline Concurrency [Bearbeiten]

Optimistic Offline Lock
verhindert Konflikte zwischen konkurrierenden Transaktionen durch feststellen eines Konflikts und zurücksetzen (roll-back) der Transaktion.
Pessimistic Offline Lock
verhindert Konflikte zwischen konkurrierenden Transaktionen indem nur eine Transaktion die auf Daten zugreift zu einer bestimmten Zeit zugelassen wird.
Coarse Grained Lock
sperrt eine Menge von zusammengehörigen Objekten mit einem einzelnen Lock.
Implicit Lock
erlaubt einem Framework oder einem Layer Offline-Locks zu erhalten.

Sitzungsstatus [Bearbeiten]

Client Session State
speichert den Status der Sitzung am Klienten.
Server Session State
hält den Status der Sitzung am Server in einer serialisierten Form.
Database Session State
speichert die Sitzungsdaten in der Datenbank.

Basismuster [Bearbeiten]

Gateway
ein Objekt, welches den Zugriff zu einem externen System oder einer externen Ressource kapselt.
Mapper
ein Objekt, welches die Kommunikation zwischen zwei unabhängigen Objekten herstellt.
Layer Supertype
ein Typ welcher als Supertyp für alle anderen Typen im Layer arbeitet.
Separated Interface
definiert ein Interface in einem von der Implementierung getrennten Paket
Registry
ein bekanntes Objekt, welches andere Objekte verwenden können um gemeinsame Objekte und Services zu finden.
Value Object
ein einfaches Objekt, dessen Gleichheit ist nicht auf Identität basiert.
Special Case
eine Unterklasse die ein spezielles Verhalten für bestimmte Fälle bereitstellen.
Plugin
verlinkt Klassen während der Konfiguration anstatt während der Kompilierung.
Service Stub
löst die Abhängigkeit von problematischen Webservices während des Testens.
Record Set
ist eine Repräsentation von Tabellendaten im Arbeitsspeicher.

Anmerkungen [Bearbeiten]

  1. Das MVC-Muster wird von manchen als Entwurfsmuster eingestuft.

Referenzen [Bearbeiten]

  1. a b c d e f  Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley-Longman, Amsterdam 15. November 2002, ISBN 0321127420.

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]