Читать книгу Vom Monolithen zu Microservices - Sam Newman - Страница 27
Kopplung
ОглавлениеInformation Hiding ist leichter gesagt als getan – so wie der Versuch, abzunehmen.
– David Parnas, The Secret History Of Information Hiding
Wir mögen Kohäsion, aber bei Kopplung sind wir argwöhnisch. Je mehr Dinge »gekoppelt« sind, desto mehr müssen sie auch zusammen geändert werden. Es gibt jedoch unterschiedliche Arten der Kopplung, und jeder Typ kann eine andere Lösung erfordern.
Es existieren viele Vorarbeiten zum Kategorisieren von Kopplungstypen, insbesondere von Meyer, Yourdan und Contantine. Ich stelle Ihnen hier meine eigene Kategorisierung vor – nicht weil ich meine, dass die bisherigen falsch sind, sondern weil ich diese Kategorisierung hilfreicher finde, wenn es darum geht, Menschen dabei zu helfen, Aspekte rund um das Koppeln verteilter Systeme zu verstehen. Daher ist das auch keine allumfassende Klassifikation der verschiedenen Formen der Kopplung.
Information Hiding
Ein Konzept, das bei Diskussionen rund um das Koppeln immer wieder auftaucht, ist die Technik des Information Hiding. Dieses Konzept, das erstmals von David Parnas im Jahr 1971 beschrieben wurde, entstand aus seiner Arbeit rund um das Definieren von Modulgrenzen.7
Die zentrale Idee des Information Hiding ist, die Teile des Codes, die sich häufig ändern, von den eher statischen Teilen getrennt zu halten. Wir wollen, dass die Modulgrenzen statisch sind, und es sollten die Teile der Modulimplementierung verborgen werden, die sich eher ändern. Interne Änderungen können auf sichere Art und Weise vorgenommen werden, solange die Modulkompatibilität gewährleistet ist.
Ich persönlich nutze den Ansatz, an der Grenze eines Moduls (oder eines Microservice) so wenig wie möglich preiszugeben. Wurde etwas Teil einer Modulschnittstelle, lässt es sich nur schwer wieder zurücknehmen. Aber verbergen Sie es jetzt, können Sie sich später immer noch dazu entscheiden, es zu veröffentlichen.
Dazu in Bezug steht das Konzept der Kapselung bei objektorientierter Software, aber abhängig von der von Ihnen akzeptierten Definition muss es nicht das Gleiche sein. Kapselung in der OO-Programmierung wird dazu genutzt, eines oder mehrere Dinge in einem Container zusammenzubringen – denken Sie an eine Klasse, die sowohl Felder wie auch die Methoden enthält, die mit diesen Feldern arbeiten. Sie könnten dann die Sichtbarkeitsregeln der Klasse nutzen, um Teile der Implementierung zu verbergen.
Eine längere Erläuterung der Geschichte des Information Hiding finden Sie in Parnas’ »The Secret History of Information Hiding«.8