Architekturmuster
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:
- 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.
- Pipes und Filter
- Schwarzes Brett bzw. Blackboard
- Schichtenarchitektur
- 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).
- 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.
- Interaktive Systeme: Muster dieser Kategorie helfen, Mensch-Computer-Interaktionen zu strukturieren.
- 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]
Data Source-Architektur [Bearbeiten]
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]
-
Sequenzdiagramm einer Identity Map
siehe auch: Entwurfsmuster#Objekt-Relationale Verhaltensmuster
Objekt-Relationale Strukturmuster [Bearbeiten]
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)
- 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
- 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:
- Transformation in eine Logikseite (z. B. XML, JSON)
- 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
- (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.
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]
Referenzen [Bearbeiten]
- ↑ 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]
- Fachgruppe Software-Architektur. Deutsche Gesellschaft für Informatik (GI), abgerufen am 31. März 2013.