Monolithische Software-Architektur

Monolithische Software-Architekturen verbinden ihre funktionalen Elemente in einem einzigen, untrennbaren sowie homogenen Gebilde. Allgemein wird durch die Software-Architektur festgelegt, wie einzelne Komponenten einer Software miteinander in Verbindung stehen und welche Aufgabenbereiche sie jeweils abdecken.

Eine monolithische Struktur folgt nicht dem Ansatz einer expliziten Gliederung in Teilsysteme oder Komponenten. So sind diese Systeme häufig stark gebunden an Ressourcen wie Hardware, bestimmte Datenformate und proprietäre Schnittstellen. Einen Gegensatz zu den streng gekoppelten monolithischen Architekturen bilden Client-Server-Architekturen oder allgemein verteilte Systeme. Ältere Mainframe-Programme oder auch viele DOS- und Windows 3.x-Anwendungen basieren häufig auf monolithischen Software-Architekturen.

Software-Architekturen unterliegen allgemein einer großen Freiheit hinsichtlich ihrer Gestaltung. Dies hat gerade in früheren Zeiten zu Software-Systemen geführt, die in der Regel nicht in Teilsysteme gegliedert oder auf Basis einzelner, zusammenwirkender Komponenten erstellt wurden. Diese monolithischen Strukturen sind noch heute bei entsprechend älteren Systemen vorzufinden und können mit einer Reihe von Nachteilen behaftet sein:

  • Software-Systeme sind weder wartbar noch erweiterbar, da die Teile dieses Systems nur mit erheblichem Aufwand modifiziert und an neue Bedingungen angepasst werden können.
  • Software-Systeme sind ab einer bestimmten Größe aufgrund der mangelnden Modularisierung nicht mehr beherrschbar, es kommt bei Modifikation zu nicht vorhersehbaren Nebeneffekten.
  • Teile des Software-Systems können nicht wiederverwendet werden.
  • Aufgrund der starren Kopplung von Teilen der Software können diese nicht nebenläufig beispielsweise zur Lastverteilung auf verteilten Systemen laufen.
Software-Anwendungen integrieren mindestens die nachfolgenden Funktionen:

  • Die Präsentation d.h. die Bereitstellung einer interaktiven Schnittstelle für den Benutzer durch die Applikation
  • Die Anwendungslogik, die die eigentliche Funktionalität einer Applikation zur Verfügung stellt

Funktionskopplung in monolithischen Architekturen

Würde man die Funktionalitäten eines solchen Anwendungssystems in einer monolithischen Software-Architektur abbilden, so wären die einzelnen Funktionen eng gekoppelt und zentralisiert implementiert, und die Folge wären die o.g. Nachteile. Dementgegen stehen heute moderne Anwendungs-Architekturen, sie als sogenannte Rich-Clients realisiert werden und die besagte GUI-Applikationen auf voneinander abgegrenzten Komponenten aufbauen, deren Zusammenwirken über sorgsam definierte Schnittstellen organisiert ist. Das sind beispielsweise die typischen Client-Server-Anwendungen. So hat sich insgesamt ein Paradigem-Wechsel weg von monolithischen Architekturen hin zu Service-orientierten Architekturen (SOA) vollzogen, die auf einem flexiblen Einsatz logisch in sich abgeschlossener und nur lose gekoppelter Dienste - den Services - basieren. Die SOA-Architektur ist ein abstraktes Architekturmuster, welches die Grundlage für die verteilte Bereitstellung, die Suche nach und die Nutzung von Diensten bietet.

Ein Beispiel für eine monolithische Architektur ganz anderer Art ist der Kernel des Betriebssystems Linux - hier spricht man auch ganz allgemein von einem Monolithischen Kernel. Bei Linux kapselt dieser Kernel eine Reihe von Grundfunktionen, die eng an die Maschine und weitere Hardware-Ressourcen gekoppelt sind. Für eine Abstraktion dieser Abhängigkeiten werden Schnittstellen definiert. Auf die so durch den Kernel zur Verfügung gestellte Grundfunktionalität können dann spezifische Erweiterungen und Zusatzmodule aufbauen.

Informationen zum Artikel
Deutsch: Monolithische Software-Architektur
Englisch:
Veröffentlicht: 13.11.2017
Wörter: 471
Tags: Entwicklung, Codierung
Links: Abstraktion, Architektur, Architekturmuster, Aufwand, BS (Betriebssystem)