Allgemeine Prinzipien und Muster zur Strukturierung von Software-Systemen, die Anforderungen in modulare, wartbare und erweiterbare Entwürfe überführen.
Software Design beschreibt Struktur, Komponenten und Interaktionen eines Systems, um funktionale und nicht-funktionale Anforderungen zu erfüllen. Es vermittelt Entscheidungen zu Modularität, Schnittstellen und Mustern und verbindet Anforderungen mit Implementierung. Gute Auslegung erhöht Wartbarkeit, Skalierbarkeit und erleichtert langfristige Evolution durch dokumentierte Entwurfsentscheidungen.
Misst Komplexität einzelner Module und hilft, komplizierte Stellen zu identifizieren.
Anzahl und Dichte von Abhängigkeiten zwischen Modulen als Indikator für Kopplung.
Zeit, die benötigt wird, um eine Anforderungsänderung bis in Produktion zu bringen.
DDD strukturiert Modelle, Grenzen und Aggregates, um Komplexität in Fachdomänen handhabbar zu machen.
Versionierte Ressourcen, HATEOAS-Prinzipien und klare Fehlercodes unterstützen Integrationsstabilität.
Schichten und Abstraktionen isolieren Geschäftsregeln von Details, was Testbarkeit und Austauschbarkeit verbessert.
Anforderungs- und Kontextanalyse durchführen.
Kandidaten für Komponenten und Schnittstellen skizzieren.
Entwurfsentscheidungen mittels Trade-off-Analysen treffen und dokumentieren.
Prototypen bauen, testen und iterativ verfeinern.