6.1 Zersetzung

Trotz der Vielfalt der Kriterien besteht die Hauptaufgabe bei der Entwicklung großer Systeme darin, die Komplexität des Systems zu reduzieren . Um die Komplexität zu reduzieren, wurde bisher nichts anderes als die Teilung in Teile erfunden.

Der Einfachheit halber wird dies manchmal als „Teile-und-Herrsche“-Prinzip bezeichnet, aus der Sicht des Softwarearchitekten handelt es sich jedoch um eine hierarchische Zerlegung .

Ein komplexes System muss aus einer kleinen Anzahl einfacherer Subsysteme aufgebaut werden, von denen jedes wiederum aus kleineren Teilen aufgebaut ist, und so weiter, bis die kleinsten Teile einfach genug sind, um direkt verstanden und erstellt zu werden.

Zersetzung

Die gute Nachricht ist, dass diese Lösung nicht nur die einzige bekannte, sondern auch universell ist. Neben der Reduzierung der Komplexität bietet es gleichzeitig Systemflexibilität , gute Skalierbarkeit und erhöhte Ausfallsicherheit durch Duplizierung kritischer Teile.

Wenn es darum geht, die Architektur des Programms aufzubauen und seine Struktur zu schaffen, bedeutet dies dementsprechend, das Programm in Subsysteme, Dienste, Schichten, Unterprogramme und Funktionsmodule zu zerlegen und deren Interaktion untereinander und mit der Außenwelt zu organisieren.

Und das Wertvollste daran ist: Je unabhängiger die Subsysteme sind, desto sicherer ist es, sich zu einem bestimmten Zeitpunkt auf die Entwicklung jedes einzelnen Subsystems zu konzentrieren und sich nicht um alle anderen Teile zu kümmern.

6.2 Vorteile der modularen Architektur

Durch die Verwendung des Prinzips der hierarchischen Zerlegung können Sie das Chaos in Tausenden von Klassen Ihres Codes beseitigen. Denken Sie daran, dass Ihr Code in Pakete (Pakete) und Unterpakete unterteilt ist? Dies ist einer der Ausdrücke für die hierarchische Zerlegung.

Ihr Programm verwandelt sich von einer Reihe von Klassen in eine Reihe von Bibliotheken und Modulen, die nach klar definierten und einfachen Regeln miteinander interagieren. Dies wiederum ermöglicht es Ihnen, die Komplexität zu kontrollieren und bietet Ihnen außerdem die Möglichkeit, alle Vorteile zu nutzen, die normalerweise mit dem Konzept einer guten Architektur verbunden sind.

Hier sind die grundlegendsten:

  • Skalierbarkeit – die Möglichkeit, das System zu erweitern und seine Leistung durch Hinzufügen neuer Module zu steigern.
  • Wartbarkeit – die Änderung eines Moduls erfordert nicht die Änderung anderer Module.
  • Austauschbarkeit der Module (Swappability) – das Modul kann einfach durch ein anderes ersetzt werden.
  • Unit Testing – Eine Einheit kann von allen anderen getrennt und getestet/repariert werden .
  • Wiederverwendbarkeit – das Modul kann in anderen Programmen und anderen Umgebungen wiederverwendet werden.
  • Wartung – Ein Programm, das in Module unterteilt ist, ist einfacher zu verstehen und zu warten.

Man kann sagen, dass das Ziel aller Entwurfstechniken darin besteht, ein komplexes Problem in einfache Fragmente zu zerlegen . Und der Begriff „Architektur“ bezieht sich in den meisten Fällen einfach auf das Ergebnis einer solchen Aufteilung sowie auf „einige Designentscheidungen, die, wenn sie einmal getroffen wurden, schwer zu ändern sind“ (Martin Fowler „Architecture of Enterprise Software Applications“).

Daher laufen die meisten Definitionen in der einen oder anderen Form auf Folgendes hinaus:

Architektur identifiziert die Hauptkomponenten des Systems und wie sie interagieren. Es ist auch die Wahl solcher Entscheidungen, die als grundlegend interpretiert werden und keinen Änderungen in der Zukunft unterliegen .“

Architektur ist die Organisation eines Systems, verkörpert in seinen Komponenten, ihrer Beziehung zueinander und zur Umgebung. Ein System ist eine Reihe von Komponenten, die kombiniert werden, um eine bestimmte Funktion zu erfüllen.

Eine gute Architektur ist also zunächst einmal eine Modul-/Blockarchitektur . Um eine gute Architektur zu erhalten, müssen Sie wissen, wie Sie das System richtig zerlegen. Das bedeutet, dass man verstehen muss, welche Zerlegung als „richtig“ gilt und wie man sie am besten durchführt.