Softwareschicht

Softwareschicht
Aufrufschema in einer Schichtenarchitektur

Eine Schichtenarchitektur oder Schichtenmodell ist ein häufig angewandtes Strukturierungsprinzip für die Architektur von Softwaresystemen. Dabei werden einzelne Aspekte des Softwaresystems konzeptionell einer Schicht (engl. tier oder layer) zugeordnet. Die erlaubten Abhängigkeitsbeziehungen zwischen den Aspekten werden bei einer Schichtenarchitektur dahingehend eingeschränkt, dass Aspekte einer „höheren“ Schicht nur solche „tieferer“ Schichten verwenden dürfen (gemäß dem sogenannten Dependency Inversion Principle). Ein System mit Schichtenarchitektur bezeichnet man auch als mehrschichtig.

Die den Schichten zugeordneten Aspekte können dabei je nach Art des Systems oder Detaillierungsgrad der Betrachtung z. B. Funktionalitäten, Komponenten oder Klassen sein.

Inhaltsverzeichnis

Vorteile

Durch eine Schichtenarchitektur wird die Komplexität der Abhängigkeiten innerhalb des Systems reduziert und somit eine geringere Kopplung bei gleichzeitig höherer Kohäsion der einzelnen Schichten erreicht. Insbesondere werden durch sie Zyklen im Abhängigkeitsgraphen vermieden, insofern das Dependency Inversion Principle eingehalten wird. Dies hat Vorteile sowohl für das Verständnis wie auch für die Wartung des Systems.

Klassifikationen

Bei einer strikten Schichtenarchitektur dürfen keine Schichten übersprungen werden. Dies ist nicht bei allen Realisierungen von Schichtenarchitekturen gegeben, führt dann aber zu einem höheren Grad der Kopplung.

Oftmals werden Schichtenarchitekturen nach der Anzahl der verwendeten Schichten unterteilt. Bei Anwendungssystemen sind dabei verschiedene Anwendungsfall-abhängige Schichtenarchitekturen gebräuchlich.

Schichtenarchitekturen nach Anzahl Schichten

Zwei-Schichten-Architektur

Beispiel einer 2-Schichten-Architektur

Die zweischichtige Architektur (englisch two tier architecture) besteht aus zwei Schichten. Da gemäß Dependency Inversion Principle nur die höhere auf die niedrigere Schicht zugreifen darf, ist die niedrigere Schicht ein Dienstanbieter (engl. Server) der höheren. Man spricht daher auch oft von einer Client-Server-Architektur.

Client-Server-Architekturen müssen nicht notwendigerweise mittels unterschiedlicher Rechner realisiert sein, vielmehr kann der Client auch als ein Software-Modul verstanden werden, das auf ein zweites Software-Modul auf demselben Rechner, meist innerhalb derselben Anwendung zugreift. Das in der Abbildung gegebene Beispiel greift jedoch auf eine rechnerseitige Client-Server-Architektur zurück.

Bei Architekturen wie in der Abbildung gegeben wird die Rechenkapazität weitestgehend auf die Client-Rechner ausgelagert, um den Server zu entlasten. Traditionell kommt ein Fat-Client und ein Fat-Server zum Einsatz. Auf dem Server läuft eine Datenbankanwendung. Die Clients übernehmen dabei die Logik und die Darstellung der Benutzerschnittstelle.

Drei-Schichten-Architektur

Beispiel einer 3-Schichten-Architektur

Die dreischichtige Architektur (englisch three tier architecture) ist eine Architektur, die softwareseitig drei Schichten hat. Im Gegensatz zur zweischichtigen Architektur existiert bei der dreischichtigen Architektur noch eine zusätzliche Schicht, oftmals die Logikschicht, welche die Datenverarbeitung vornimmt.

Eine typische Drei-Schichten-Architektur besteht aus den folgenden Schichten:

  • Präsentationsschicht (client tier) – Diese, auch Front-End bezeichnet, ist für die Repräsentation der Daten, Benutzereingaben und die Benutzerschnittstelle verantwortlich.
  • Logikschicht (application-server tier, Businessschicht, Middle Tier oder Enterprise Tier) – Sie beinhaltet alle Verarbeitungsmechanismen. Hier ist die Anwendungslogik vereint.
  • Datenhaltungsschicht (data-server tier, back end) – Sie enthält die Datenbank und ist verantwortlich für das Speichern und Laden von Daten.

Drei-Schichten-Architekturen bei verteilten Systemen

Mehrschichtige Systemarchitekturen wie die dreischichtige Architektur sind gut skalierbar, da die einzelnen Schichten logisch voneinander getrennt sind. So kann z. B. bei verteilten Systemarchitekturen die Datenschicht auf einem zentralen Datenbank-Server laufen, die Logikschicht auf Workgroup-Servern, und die Präsentationsschicht befindet sich auf der jeweiligen Workstation des Benutzers. Ein Beispiel für eine verteilte Drei-Schichten-Architektur ist Citrix: Interaktion: Client; Funktion: Citrix Server; Daten: Datenbankserver.

Wie die Grafik zeigt, gibt es zwischen Client und Server verschiedene Möglichkeiten zur Verteilung der Schichten. Grundsätzlich gilt: Je höher (näher an der Präsentationsschicht) die Schicht ist, desto eher wird sie von einem Client bearbeitet. Je tiefer (näher an der Datenschicht) die Schicht ist, desto eher ist sie Aufgabe eines Servers.

Drei-Schichten-Architekturen innerhalb von Software-Systemen

Die Architektur lässt sich auch innerhalb eines Software-Systems umsetzen, indem die Software-Module, welche für Präsentation, Anwendungslogik und persistente Speicherung von Daten zuständig sind, den einzelnen Schichten zugeordnet werden und gemäß der Schichteneinteilung voneinander entkoppelt werden. Neben einer Strukturierung gemäß dem Model View Controller-Architekturmuster stellt eine solche Drei-Schichten-Architektur in der modernen Software-Entwicklung das Mindestmaß an architektonischer Strukturierung dar, insofern keine nachhaltigen Gründe für andere Architekturentscheidungen vorliegen.

Weitere Schichten

Neben den oben genannten Schichten werden in verschiedenen Quellen andere Aufteilungen herangezogen. Grundsätzlich bezeichnet eine Schichtenarchitektur ein Architekturmuster, das hinsichtlich der Art und Anzahl seiner Schichten nicht beschränkt ist. Sehr häufig finden sich in Software-Systemen wie auch bei verteilten Anwendungen die folgenden Schichten:

  1. Präsentation
  2. Steuerung
  3. Anwendung
  4. Datenverwaltung
  5. Datenhaltung

Weitere Details zu den einzelnen Schichten werden im Abschnitt Klassische Schichten innerhalb einer mehrschichtigen Architektur beschrieben. Ein Beispiel für eine Architektur mit sieben Schichten bietet das OSI-Referenzmodell, das in der folgenden Abbildung dargestellt ist.

Übersicht des OSI-Referenzmodells


Klassische Schichten innerhalb einer mehrschichtigen Architektur

Präsentationsschicht

Erweiterung einer Drei-Schichten-Architektur um Präsentations-Schicht

Bei verteilten Systemen

Die Präsentationsschicht dient der Darstellung der Inhalte und der Entgegennahme von Benutzereingaben. Bei verteilten Systemen existieren für die Darstellung der Inhalte zwei Alternativen:

Für den Datenaustausch zwischen Präsentationsschicht und Geschäftslogikschicht gibt es ebenfalls mehrere Alternativen:

Bei Software-Systemen

Bei Software-Systemen ist die Präsentationsschicht für die Anzeige von der Software bearbeiteten Daten sowie der von der Software bereitgestellten Funktionen verantwortlich.

Geschäftslogikschicht

Die Geschäftslogikschicht (auch Verarbeitungsschicht, Anwendungslogikschicht, Application Layer oder Middle Tier) realisiert das eigentliche Geschäftsmodell, indem die am Geschäftsmodell beteiligten Geschäftsobjekte und Geschäftsprozesse implementiert werden.

Für den Datenaustausch zwischen Geschäftslogikschicht und Datenhaltungsschicht werden Datenbankschnittstellen wie JDBC, ADO.NET, ODBC oder Perl-DBI sowie alternativ der direkte Zugriff auf das DBMS (Datenbank Management System) verwendet (z. B. bei PHP).

Datenhaltungsschicht

Erweiterung Daten-Integrations-Schicht

Trotz objektorientierter Programmierung wird auch heute noch in der Regel ein relationales DBMS eingesetzt, um die Datenhaltung für Anwendungen zu realisieren. Häufig besteht dabei eine Eins-zu-Eins-Abbildung von Geschäftsobjekt-Klassen auf Tabellen bzw. Geschäftsobjekt-Instanzen auf Tabellenzeilen (Datensätze). Diese Abbildung wird als objektrelationale Abbildung (object-relational mapping, ORM) bezeichnet.

Weitere Anwendungen von Schichtenarchitekturen

Schichtenmodell bei Betriebssystemen

Ein Schichtenmodell, auch Schalenmodell genannt, ist eines von drei wesentlichen Architekturmodellen von Betriebssystemen. Neben dem Monolithischen Kernel und dem Mikrokernel gibt es das Schichtenmodell. Bei dem Schichtenmodell sind die verschiedenen Betriebssystemkomponenten wie Schalen aufeinander aufgebaut. Dies ist auch in der nebenstehenden Abbildung zu sehen.

Die Übergänge zwischen den Schichten werden von Schnittstellen gebildet, wobei die Übergänge sauber sein müssen, es gibt keine Sprünge (z. B. von einem Anwendungsprogramm direkt in die Datenstruktur). Die Kommunikation erfolgt über die Schnittstellen jeder einzelnen Zwischenschicht.

Allgemein kann man sagen, je näher eine Schicht an der Hardware, desto privilegierter ist diese bezüglich Schreib- und Leseberechtigungen. Der Übergang vom Kernel-Mode zum User-Mode kann unter Umständen schwer abzugrenzen sein.

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Middleware — Softwareschicht, die Kommunikationsdienste für verteilte Anwendungen über Standardschnittstellen bereitstellt und damit eine ⇡ Integration der Anwendungen und ihrer Daten ermöglicht …   Lexikon der Economics

  • Ablaufumgebung — Eine Laufzeitumgebung (von englisch: „runtime environment“; kurz: „RTE“ oder seltener auch „RE“; auch Ausführungsumgebung oder seltener Ablaufumgebung genannt) ist eine Softwareschicht, die sich zwischen der Anwendungs und der Betriebssystem… …   Deutsch Wikipedia

  • Ausführungsschicht — Eine Laufzeitumgebung (von englisch: „runtime environment“; kurz: „RTE“ oder seltener auch „RE“; auch Ausführungsumgebung oder seltener Ablaufumgebung genannt) ist eine Softwareschicht, die sich zwischen der Anwendungs und der Betriebssystem… …   Deutsch Wikipedia

  • Ausführungsumgebung — Eine Laufzeitumgebung (von englisch: „runtime environment“; kurz: „RTE“ oder seltener auch „RE“; auch Ausführungsumgebung oder seltener Ablaufumgebung genannt) ist eine Softwareschicht, die sich zwischen der Anwendungs und der Betriebssystem… …   Deutsch Wikipedia

  • Betriebssystemkernel — Ein Betriebssystemkern oder Systemkern (engl. kernel [ˈkɝːnəl]) ist der zentrale Bestandteil eines Betriebssystems. In ihm ist die Prozess und Datenorganisation festgelegt, auf der alle weiteren Softwarebestandteile des Betriebssystems aufbauen.… …   Deutsch Wikipedia

  • Laufzeitsystem — Eine Laufzeitumgebung (von englisch: „runtime environment“; kurz: „RTE“ oder seltener auch „RE“; auch Ausführungsumgebung oder seltener Ablaufumgebung genannt) ist eine Softwareschicht, die sich zwischen der Anwendungs und der Betriebssystem… …   Deutsch Wikipedia

  • Laufzeitumgebungen — Eine Laufzeitumgebung (von englisch: „runtime environment“; kurz: „RTE“ oder seltener auch „RE“; auch Ausführungsumgebung oder seltener Ablaufumgebung genannt) ist eine Softwareschicht, die sich zwischen der Anwendungs und der Betriebssystem… …   Deutsch Wikipedia

  • Runtime Environment — Eine Laufzeitumgebung (von englisch: „runtime environment“; kurz: „RTE“ oder seltener auch „RE“; auch Ausführungsumgebung oder seltener Ablaufumgebung genannt) ist eine Softwareschicht, die sich zwischen der Anwendungs und der Betriebssystem… …   Deutsch Wikipedia

  • Systemkern — Ein Betriebssystemkern oder Systemkern (engl. kernel [ˈkɝːnəl]) ist der zentrale Bestandteil eines Betriebssystems. In ihm ist die Prozess und Datenorganisation festgelegt, auf der alle weiteren Softwarebestandteile des Betriebssystems aufbauen.… …   Deutsch Wikipedia

  • ADAPTIVE Communication Environment — Das Adaptive Communication Framework ist ein Open Source C++ Framework, das plattformunabhängig einige Entwurfsmuster für nebenläufige Netzwerkapplikationen bereitstellt.[1] Inhaltsverzeichnis 1 Geschichte 2 OS Adapter Layer 3 …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”