Definition
Ein Software-Engineering-Prinzip, das ein System in getrennte Module oder Schichten zerlegt, von denen jede eine eigene Verantwortung behandelt, sodass sich überlappende Zuständigkeiten minimiert und Änderungen lokal begrenzt werden.

Prinzip

Prinzip
Systeme sollten so gegliedert werden, dass jedes Modul eine einzelne Concern oder eine kohärente Menge verwandter Concerns bearbeitet; Schnittstellen und Kapselung steuern Abhängigkeiten und begrenzen Seiteneffekte von Änderungen.

Demonstration

Demonstration
Model–View–Controller trennt Datenmodell, Darstellung und Benutzerinteraktionsverarbeitung; eine geschichtete Architektur teilt Transport, Verarbeitung und Persistenz in getrennte Dienste oder Komponenten.

Fehlanwendung

Fehlanwendung
Übermäßiges Trennen in zu viele kleine Module (exzessive Modularisierung), was Orchestrierungs-Komplexität und Laufzeit-Overhead erhöht, oder Separationen, die Abstraktionen durchlässig machen und Querschnittsduplikation erzwingen.

Konsequenz

Konsequenz
Bei guter Anwendung erhöht es Wartbarkeit, Testbarkeit, parallele Entwicklung und Wiederverwendbarkeit; es macht Verantwortlichkeiten klarer und erleichtert das Verstehen des Systemverhaltens.

Umkehrung

Umkehrung
Ein monolithisches Design mit verflochtenen Verantwortlichkeiten, das zu enger Kopplung und schwierigen Änderungen führt; Concerns so vermischt, dass das Ändern einer Funktion Änderungen in nicht verwandtem Code erfordert.

Abgrenzung

Abgrenzung
Gilt für Architektur- und Design-Ebenen, muss aber Querschnittsbelange (Logging, Sicherheit, Transaktionen) berücksichtigen, die nicht sauber isolierbar sind; Performance-, Latenz- und Betriebsanforderungen rechtfertigen manchmal bewusste Kopplung.

Semantische Spannung

Semantische Spannung
Spannung mit DRY (Don't Repeat Yourself) und Performance: vollständige Trennung kann Duplikation oder Indirektion erfordern; Spannung auch mit YAGNI, wenn Trennung unnötige Generalisierung vorwegnimmt.

Synthese

Synthese
Trennung der Belange ist die Ordnungsstrategie, ein System nach Verantwortlichkeiten zu partitionieren und deren Interaktion über klar definierte Schnittstellen zu verwalten; sie tauscht Designklarheit und Modularität gegen Komplexität durch Überabstraktion und operative Zwänge.