Schichtenmodell

Schichtenmodelle - auch als Schichtenarchitekturen bezeichnet - definieren Prinzipien zur Strukturierung von Software-Architekturen. Die hierarchische Strukturierung von Schichten ist ein häufig angewendetes Muster der Architektur. Jeder Schicht ist dabei ein bestimmter Aspekt zugeordnet - das kann eine Teil-Funktionalität, eine geschlossene Komponente oder auch eine Klasse sein. Das Ziel der Schichtenmodelle ist es, die Komplexität von Software-Systemen besser strukturieren und letztendlich auch reduzieren zu können, woraus dann eine Maximierung der Kohäsion einzelner Schichten resultiert. Bekannte Schichtenmodelle sind die Three-Tier-Architecture oder Mehr-Schichten-Architekturen (Multi-Tier-Architecture).

Im Zusammenhang mit Schichtenmodellen spricht man auch von mehrschichtigen Modellen. Das Ziel dieser Modellierung ist es, gleichartige Gesichtspunkte oder Betrachtungsweisen hinsichtlich der Problemstellung zu bündeln und möglichst kohäsiv (d.h. zusammenhängend) einer Schicht zuzuordnen. Gleichartige Gesichtspunkte - auch Aspekte genannt -können sich an der geplanten Funktionalität, an in sich geschlossenen Problemstellungen oder auch im Hinblick auf die objektorientierte Programmierung an komplexeren Klassen orientieren. Die Kopplung zwischen den Schichten sollte u.a. unter dem Aspekt der Wartbarkeit von Software gering gehalten werden, um so die Abhängigkeiten untereinander zu minimieren. Der Zugriff der Schichten untereinander ist hierarchisch organisiert; dabei können die Aspekte einer Schicht immer nur auf die Aspekte darunter-liegender Schichten zugreifen. Hier wird auch der Begriff des Dependency Inversion Principle - dem Abhängigkeits-Invertierungs-Prinzip - verwendet, der ursprünglich beim objektorientierten Entwurf von Software die Abhängigkeit von Modulen beschreibt.

Weiterhin unterscheidet man sogenannte Strikte Schichtenmodelle und bezeichnet damit den Fall, das innerhalb des Modells keine Schichten übersprungen werden dürfen. Dies hat jedoch eine eingeschränkte Performance des Software-Systems zur Folge; andererseits ergeben sich Vorteile hinsichtlich besserer Wartbarkeit, Änderbarkeit und Portabilität. Schichtenmodelle werden anhand der Anzahl der Schichten unterschieden. Dabei sind ausgerichtet auf den spezifischen Anwendungsfall unterschiedlichste Modelle gebräuchlich.

UML-Notation für Zwei-Schichten-Architektur. Jede Schicht wird als Paket interpretiert.

UML-Notation für Zwei-Schichten-Architektur. Jede Schicht wird als Paket interpretiert

Ein frühes Modell der Gestaltung von Software-Systemen ist die Zwei-Schichten-Architektur (Two-Tier-Architectur). Den Zusammenhang der Schichten zeigt die Abbildung. Dabei integriert die obere Anwendungsschicht die Benutzeroberfläche und gleichfalls die fachliche Umsetzung der Aufgabenstellung. Darunter liegt dann die separierte Datenhaltungsschicht zur Aufnahme der Daten. Aus Sicht eines Anwendungssystems ist dieses Konzept aufgrund seiner Integrität von Benutzeroberfläche und Fachkonzept nachteilig, weil Änderungen recht aufwändig sein können. Sehr wohl kann dieses Modell aber auf Client-Server-Architekturen umgesetzt werden.

UML-Notation für Drei-Schichten-Architektur

UML-Notation für Drei-Schichten-Architektur

Bei der Erstellung von Software-Architekturen werden heute vielfach Drei-Schichten-Architekturen (Three-Tier-Architecture) verwendet. Dabei werden die grafische Benutzeroberfläche ( GUI) und das eigentliche fachliche Konzept separiert. Darunter liegt dann wiederum die Datenhaltungsschicht.

Da es noch vielfältige weitere Möglichkeiten zur Definition von Schichtenmodellen gibt, spricht man in diesem Zusammenhang auch von mehrschichtigen Software-Architekturen; die Art und Anzahl der Schichten ist letztendlich nicht beschränkt. Ein mögliches Beispiel zeigt die nebenstehende Abbildung. Dabei zeigen sich die Schichten für:

  • Präsentation: GUI, Ein- und Ausgabe,
  • Applikation: Koordination von Workflows, Transformation von Daten,
  • Fachkonzept: Umsetzung der fachlichen Anforderungen,
  • Business- Infrastruktur: grundlegende, allgemein verwendbare fachliche Funktionen,
  • Technische Services: höhere technische Dienste wie persistente Speicherung und Datensicherheit,
  • Basis-Dienste: niedrigere technische Dienste wie Thread-Verwaltung, Datenbank und Netzwerk.
UML-Notation für Mehr-Schichten-Architektur

UML-Notation für Mehr-Schichten-Architektur

Als allgemeine Ziele zur Realisierung eines effizienten Schichtenmodells lassen sich zusammenfassen;

Wiederverwendbarkeit Dazu benötigt jede Schicht eine klar zugeordnete Aufgabe und diesbezügliche Schnittstellen.

Wartbarkeit Entwickelt wird auf die eindeutige Schnittstelle hin. Das bedeutet, dass sich die interne Organisation einer Schicht ändern kann, nur die Schnittstelle muss unverändert bleiben.

Portabilität System- oder hardwareabhängige Funktionen müssen in einer separaten Schicht zusammengefasst sein, so dass sich diesbezügliche Änderungen nur auf diese Schicht beziehen.

Eine erweiterte Anwendung in einem anderen Zusammenhang finden Schichtenmodelle bei der Erstellung der Architektur von Betriebssystemen - hier werden sie Schalenmodelle genannt.

Ein Schichtenmodell mit einem speziellen Hintergrund ist das OSI-Referenzmodell, nach welchem das Design von Kommunikationsprotokollen erfolgen kann.

Informationen zum Artikel
Deutsch: Schichtenmodell
Englisch: layer model
Veröffentlicht: 27.07.2018
Wörter: 630
Tags: DK-Grundlagen
Links: Software-Architektur, Schicht, Architektur, Schicht, Aspekt
Übersetzung: EN
Sharing: