© Azad Pirayandeh/Shutterstock.com
Nachhaltige Angular-Architekturen mit Nx und Strategic Design

Big Business Apps mit Angular


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 [1] 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 [2].

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.

Ein weiteres Merkmal von Domänen ist, dass häufig eine Gruppe oder einige wenige Gruppen von Domänenexperten primär damit interagieren.

Um Domänen zu erkennen, lohnt sich ein Blick auf die Abläufe im System. Ein E-Procurement-System, das sich um die Beschaffung von Büromaterial kümmert, könnte beispielsweise die beiden in Abbildung 1 gezeigten Prozesse unterstützen.

steyer_angularstrategicdesign_1.tif_fmt1.jpgAbb. 1: Analyse von Abläufen zum Identifizieren von Domänen

Dabei fällt auf, dass sich die Prozessschritte Approve Order, Request Budget und Approve Budget erstrangig um Organisationshierarchien und das verfügbare Budget drehen. Außerdem sind hier primär Manager eingebunden. Beim Prozessschritt geht es hingegen vor allem um Mitarbeiter und Produkte.

Natürlich lässt sich argumentieren, dass Produkte bei einem E-Procurement-System omnipräsent sind. Bei einer genaueren Betrachtung stellt sich jed...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang