Separation of Concerns beschreibt das Prinzip, ein System so in Teile zu zerlegen, dass jeder Teil genau eine Zuständigkeit (englisch Concern) trägt und so wenig wie möglich über die anderen Teile wissen muss. Geprägt hat den Begriff der Informatiker Edsger W. Dijkstra 1974 in seinem Aufsatz „On the role of scientific thought“. In der Produktion zeigt sich das Prinzip etwa in der Trennung von IT und OT, in Zonen und Conduits nach IEC 62443 oder in einem Namensraum, der Datenhaltung von Anwendungslogik trennt. Separation of Concerns ist ein Entwurfsprinzip, kein fertiges Muster. Den Begriff prägte Edsger W. Dijkstra 1974 in seinem im E.W.-Dijkstra-Archiv der University of Texas at Austin veröffentlichten Aufsatz „On the role of scientific thought“ (EWD447). Darin beschreibt er, dass es die einzig wirksame Methode sei, mit der Komplexität eines Problems umzugehen: sich zu jedem Zeitpunkt nur auf einen Aspekt zu konzentrieren, ohne dabei die anderen Aspekte und ihr Zusammenspiel aus den Augen zu verlieren. Ein Concern ist dabei eine abgegrenzte Zuständigkeit eines Systems — etwa die Erfassung von Messwerten, ihre Speicherung, ihre Absicherung oder ihre Darstellung. Separation of Concerns verlangt, dass jeder Teil eines Systems genau einen solchen Concern trägt und die übrigen Teile nur über eine definierte Schnittstelle kennt. Formalisiert wurde die Idee kurz darauf in der Strukturierten Analyse und dem Strukturierten Entwurf: W. P. Stevens, G. J. Myers und L. L. Constantine beschrieben 1974 im IBM Systems Journal die Begriffe Kopplung (Coupling) und Kohäsion (Cohesion) als messbare Größen für gute Trennung. Ohne Trennung kennt im ungünstigsten Fall jeder Teil eines Systems jeden anderen: Bei sechs Modulen sind das bis zu fünfzehn mögliche Abhängigkeiten, bei zehn bis zu fünfundvierzig — dieselbe Rechnung, mit der sich auch die Kopplung zwischen einzelnen IT-Systemen beschreiben lässt. Jede Änderung an einem Modul kann dann jedes andere berühren, und niemand kann mehr allein absehen, welche Folgen eine kleine Anpassung hat. Separation of Concerns reduziert diese Abhängigkeiten auf definierte Schnittstellen zwischen wenigen Teilen. Ein Modul für die Datenerfassung kann sich ändern, ohne dass die Auswertung etwas davon merkt, solange die Schnittstelle zwischen beiden gleich bleibt. Die Trennung macht ein System damit nicht kleiner, aber verständlicher — und vor allem: veränderbar, ohne dass jede Änderung zur Untersuchung des gesamten Systems wird. Die beiden Größen aus der Strukturierten Analyse lassen sich an jedem System ablesen — unabhängig davon, ob es aus Code, aus Anlagen oder aus Organisationseinheiten besteht. Das Ziel ist nicht, Kopplung vollständig zu vermeiden — kein System kommt ohne Verbindungen zwischen seinen Teilen aus —, sondern sie auf wenige, benannte Schnittstellen zu konzentrieren, statt sie unkontrolliert im gesamten System zu verteilen. Welche Concerns gibt es tatsächlich — Datenerfassung, Absicherung, Auswertung, Darstellung? Die Liste entsteht aus der Aufgabe, nicht aus der vorhandenen Technik. Jede Zuständigkeit bekommt eine Schnittstelle, über die andere sie ansprechen — nie einen direkten Zugriff auf ihre internen Daten. Eine Zuständigkeit sollte einem Team oder einer Rolle eindeutig zugeordnet sein — sonst wird auch die technische Trennung nicht durchgehalten. Der Schotten-Test: Zieht eine Änderung in einem Teil regelmäßig Änderungen in einem anderen nach sich, der eigentlich nichts damit zu tun haben sollte? Wenn ja, ist die Grenze falsch gezogen. Trennung kostet immer etwas: mehr Schnittstellen, mehr Verträge zwischen den Teilen, mehr Aufwand, die Grenzen selbst zu pflegen und zu testen. Sie lohnt sich, wenn sich Teile unterschiedlich oft ändern oder unterschiedliche Teams sie verantworten. Für ein kleines System mit einem Team sind zwei klar getrennte Schichten oft mehr wert als sechs. pronubes ist die Plattform zwischen Shopfloor und IT — selbst nach dem Prinzip aufgebaut, das sie für ihre Kunden umsetzt. Jede Komponente kommuniziert über eine definierte Schnittstelle statt über eine gemeinsame Datenbank — damit ein Austausch an einer Stelle nicht zum Umbau der ganzen Landschaft wird. Mehr zur Plattform Nein. Microservices sind eine mögliche Umsetzung des Prinzips, nicht die einzige. Separation of Concerns lässt sich ebenso in einem einzigen, sauber in Module gegliederten System umsetzen — die Trennung ist eine Frage der Struktur, nicht der Bereitstellung. So viele, wie es tatsächlich unterschiedliche Zuständigkeiten gibt — nicht mehr. Eine feste Zahl gibt das Prinzip nicht vor. IT/OT-Trennung ist eine unmittelbare Anwendung des Prinzips: Produktionssteuerung und Büro-IT werden als getrennte Zuständigkeiten behandelt, mit eigenen Anforderungen an Verfügbarkeit und Absicherung — formalisiert unter anderem in Zonen und Conduits nach IEC 62443. Am Schotten-Test: Zieht eine Änderung an einer Stelle regelmäßig Änderungen an einer anderen nach sich, die eigentlich nichts damit zu tun haben sollte, ist die Grenze falsch gezogen. Bei einem kleinen, stabilen System mit einem Team, das ohnehin alles überblickt. Dort kostet jede zusätzliche Schicht mehr an Pflege, als sie an Klarheit einbringt.Was ist Separation of Concerns?
Definition: Separation of Concerns
Begriff
Bedeutung
Ziel
Concern
eine abgegrenzte Zuständigkeit eines Systems
je Teil genau ein Concern
Kopplung
wie stark zwei Teile voneinander abhängen
möglichst gering
Kohäsion
wie stark die Aufgaben innerhalb eines Teils zusammengehören
möglichst hoch
Warum Systeme in Zuständigkeiten zerlegt werden
Kopplung und Kohäsion
Merkmal
Hohe Kopplung / geringe Kohäsion
Geringe Kopplung / hohe Kohäsion
Änderungen
ziehen Folgeänderungen an anderer Stelle nach sich
bleiben auf ein Modul begrenzt
Datenzugriff
mehrere Module lesen und schreiben dieselbe Datenquelle
jedes Modul besitzt seine Daten, andere fragen über eine Schnittstelle an
Testbarkeit
ein Modul lässt sich nicht ohne die anderen prüfen
ein Modul lässt sich isoliert prüfen
Team-Zuschnitt
eine Änderung braucht Abstimmung über mehrere Teams
ein Team kann ein Modul allein verantworten
Beispiele aus der Praxis
Woran die Trennung technisch hängt
Vier Schritte zur Trennung von Concerns
Zuständigkeiten benennen
Schnittstellen statt Durchgriffe definieren
Verantwortlichkeiten zuordnen
Trennung überprüfen
Was Separation of Concerns nicht ist
Typische Hürden in der Praxis
Wie pronubes Concerns trennt
Häufige Fragen
Ist Separation of Concerns dasselbe wie Microservices?
Wie viele Schichten sind richtig?
Was hat das mit IT/OT-Trennung zu tun?
Woran erkennt man schlechte Trennung?
Wann lohnt sich strikte Trennung nicht?
Zuständigkeiten, die auch nach dem zehnten Ausbau noch klar sind.
30 Minuten zu Ihrer Systemlandschaft: wo Concerns heute vermischt sind, wie Schnittstellen aussehen sollten und woran Trennung in der Praxis scheitert.
pronubes is a product of inray Industriesoftware GmbH. Over 30 years of industrial software made in Germany. Innovative and reliable for manufacturing companies.

