Modularisierung ist ein wichtiges Prinzip der Softwaretechnik und unterstützt den Entwurf langlebiger Softwarearchitekturen. Sie spielt bei der Entwicklung komplexer Softwaresysteme eine entscheidende Rolle und hilft den Architekten und Entwicklern dabei, Systeme zu bauen, die gut durchschaubar sind und damit die Voraussetzung für zukünftige Erweiter- und Wartbarkeit mitbringen.
Das Buch liefert Ihnen eine fundierte und kompakte Einführung in das Thema Modularisierung und zeigt anhand vieler Beispiele und Abbildungen, wie Sie modularisierte Anwendungen auf Basis des Java-Modulsystems erstellen können.
Darüber hinaus werden weiterer Modularisierungsansätze in Form von Microservices und Containern vorgestellt und gezeigt, wie sich diese Ansätze mit Java-Modulen verbinden lassen.
Das Prinzip der Modularisierung verfolgt das Ziel ein System in eine Menge lose gekoppelter und in sich geschlossener Komponenten (bzw. Module) zu zerlegen. Bei einem Modul handelt es sich um eine abgeschlossene Einheit zur Lösung einer bestimmten Aufgabe. Die Implementierungsdetails des Moduls werden hinter einer Schnittstelle nach außen verborgen, die auch als Bindeglied zu anderen Modulen fungiert. Die von der Implementierung entkoppelte Schnittstelle kann als eine Art Vertrag zwischen den Modulen gesehen werden und muss in ihrem Verhalten eindeutig beschrieben sein, um eine Wiederverwendung durch andere Module zu ermöglichen. Der Entwurf einer geeigneten Modularisierung eines Systems, unter Berücksichtigung der erforderlichen Zerlegungskriterien, ist ein wichtiger Schritt für den Bau langlebiger und wartbarer Softwarearchitekturen.
Alle Programmbeispiele aus dem Buch sind auf GitHub bereitgestellt und können dort angeschaut oder heruntergeladen und ausprobiert werden.
Software unterliegt heute einer hohen Änderungsgeschwindigkeit und erfordert schnell umzusetzende Erweiterungen und Anpassungen für dessen Voraussetzung eine exzellente Software-Wartbarkeit nötig ist.
Trotzdem ist die häufig wettbewerbsentscheidende, aber zumindest die Kosten im Griff haltende Wartbarkeit oft keine klare Zielvorgabe, sondern eine im Ungefähren wabernde Idee, da Wartbarkeit eine innere Qualität von Software widerspiegelt und sich nicht in funktionale Anforderungen gießen läßt.
Zeitdruck und sich häufig ändernde Anforderungen tun dann ihr übriges und führen zu einem steten Zerfall der inneren Struktur eines Softwaresystems. Die Folge sind steigende Kosten und eine immer komplexer werdende Codebasis.
Wartbarkeit sollte den gleichen Stellenwert bekommen, wie alle anderen Zielvorgaben eines Softwareprojekts und dafür ist ein ganzheitliches Qualitätsverständnis eines Softwaresystems nötig, die auch ein Bewusstsein für Software-Wartbarkeit schafft.
Modularisierung ist ein wesentlicher Baustein auf dem Weg dorthin.
Eine grundlegende Arbeit zur modularen Softwareentwicklung kam von einem der frühen Pionieren des Software Engineerings David Lorge Parnas mit der Veröffentlichung von "On the criteria To Be Used in Decomposing Systems into Modules" aus dem Jahr 1972. Er entwarf unter anderem das Konzept der Datenkapselung, welches heute ein Kernprinzip der modernen Softwaretechnik ist und ist bekannt für seine Arbeiten zur Dokumentation grosser, komplexer Softwaresysteme.
PDFDie Modularität, das Prinzip des Zerlegens von Aufgaben in kleinere Teilaufgaben (Module), findet sich überall. Angefangen bei den biologischen neuronalen Netze des menschlichen Gehirns, die zum Teil modular arbeiten bis hin zu ganzen Branchen und Wirtschaftzweigen. Zum Beispiel konstruieren Autohersteller ihre Modellpaletten auf der Grundlage von modularen Plattformen und verkürzen dadurch Produktions- und Arbeitsprozesse, vereinfachen die Entwicklung und senken die Kosten bei gleichbleibender Qualität.