Leseproben
Manfred Steyer Selbstständig

„Strategic Design bietet eine bewährte Vorgehensweise, um eine Anwendung in möglichst autarke Domänen zu unterteilen. Diese Domänen zeichnen sich durch ein eigenes Fachvokabular aus, das rigoros von allen Beteiligten zu nutzen ist. Die CLI-Erweiterung Nx bietet eine sehr charmante Möglichkeit zur Umsetzung dieser Domänen mit unterschiedlichen, nach Domänen gruppierten Bibliotheken.“

Strategic Design bietet eine etablierte Methodik zum Schneiden großer Anwendungen in möglichst autarke Domänen. Nx erlaubt die Umsetzung dieser Domänen in einem Angular-Monorepo und stellt sicher, dass dabei möglichst wenig Abhängigkeiten entstehen.

Angular bietet sich aufgrund seiner Struktur und des gebotenen Leistungsumfangs für die Umsetzung von Frontends großer Softwaresysteme an. Um solche Systeme beherrschbar zu gestalten, gilt es, sie in kleine und wenig komplexe Module zu untergliedern. Das ist so weit bekannt. Die Frage, die sich hierbei jedoch immer wieder aufdrängt, ist, nach welchen Kriterien der Modulschnitt erfolgen soll. Außerdem gilt es festzulegen, wie diese Module zu implementieren sind, aber auch wie sie untereinander kommunizieren können.

Dieser Artikel gibt eine Antwort auf beide Fragen: Um eine Vorgehensweise für den Modulschnitt aufzuzeigen, beleuchtet er zunächst Strategic Domain Design. Dabei handelt es sich um eine Disziplin aus dem Umfeld von Domain-driven Design (DDD). Danach zeigt der Artikel, wie sich eine damit gestaltete Architektur mit Nx umsetzen lässt, einer populären und freien Erweiterung für das Angular CLI.

Domain-driven Design auf Metaebene

DDD beschreibt einen Ansatz, der eine Brücke zwischen Anforderungen an komplexe Softwaresysteme auf der einen Seite und einem dazu passenden Anwendungsdesign auf der anderen schlägt. Es lässt sich in die Teildisziplinen Tactical Design und Strategic Design untergliedern. Ersteres schlägt konkrete Denkweisen, Konzepte und Muster für ein objektorientiertes Design vor. Alternativ dazu existieren auch Ansätze, die die dahinterstehenden Ideen in die Welt der funktionalen Programmierung übertragen.

Strategic Design beschäftigt sich hingegen mit der Untergliederung eines großen Systems in einzelne Domänen und deren Ausgestaltung. Egal ob man die meinungsstarke (engl. opinionated) Denkwelt von DDD gut findet oder nicht: Einige Ideen von Strategic Design haben sich bewährt, um ein System in kleinere, möglichst autarke Teile zu untergliedern. Es sind genau diese Ideen, die dieser Artikel aufgreift und im Kontext von Angular darstellt. Ob die restlichen Aspekte von DDD auch Berücksichtigung finden, ist hingegen für den Artikel unerheblich.

Modularisierung mit Strategic Domain Design

Ein Ziel von Strategic Design ist es, möglichst autarke (Sub-)Domänen zu identifizieren. Solche sind an einem spezifischen Vokabular zu erkennen. Sowohl Domänenexperten als auch Entwickler müssen dieses Vokabular rigoros verwenden. Das beugt Missverständnissen vor und führt dazu, dass die Anwendung den jeweiligen Fachbereich widerspiegelt. In diesem Sinn ist auch von einer allgegenwärtigen Sprache (engl. ubiquitous language) die Rede.

 

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 6.19 - "Was kommt nach Java EE?"

Alle Infos zum Heft
579889781Angular-Architekturen mit Nx und Strategic Design
X
- Gib Deinen Standort ein -
- or -