Mittwoch, 17. April 2013

Das Prinzip der losen Kopplung

Name, Kurzform Prinzip der losen Kopplung
Synonyme -
Beschreibung Die Kopplung zwischen Software-Elementen soll so gering wie möglich sein.
Erläuterung Es existiert keine allgemein etablierte Formulierung des Prinzips. Geläufige Beschreibungen sind in ihrer Wortwahl oftmals unnötig konkret gehalten, indem sie sich beispielsweise auf „Module“, „Klassen“ oder andere konkrete Element-Typen beziehen. Die hier gewählte Formulierung vermeidet derartige Einschränkungen: Sie umfasst alle Element-Typen eines Software-Systems und kann auch auf systemübergreifende Kopplungen angewendet werden.
Beispiele
Jegliche Art direkter oder indirekter Beziehung zwischen jeglicher Art von Software-Element kann als Kopplung interpretiert werden. Einige Beispiele können hier nur andeuten, wie vielgestaltig Kopplungen in Software-Systemen auftreten:
  • Aufruf einer Funktion durch eine andere Funktion.
  • Nutzung derselben Daten durch zwei verschiedene Software-Elemente.
  • Ableitung einer Klasse von einer anderen.
  • Aufruf eines Netzwerk-Dienstes durch ein Software-Element.
  • Usw.
Historie Ein „Prinzip der losen Kopplung“ wird in zahlreichen Kontexten formuliert, so beispielsweise auch im Bereich der Hardware-Architektur oder in der Organisationstheorie. Im Kontext des Strukturierten Designs wurden die Konzepte Kopplung und Kohäsion von Yourdan und Constantine bereits in den 1970er Jahren eingeführt [Yourdan 1979]. In der Softwaretechnik wird Kopplung oft auch als Abhängigkeit (dependency) bezeichnet und hat sich so gerade durch Abhängigkeits-bezogene Prinzipien und Frameworks in der Gedankenwelt von Entwicklern und Architekten etabliert. Im Kontext serviceorientierter Architekturen wird das Prinzip häufig als wichtiges Entwurfsprinzip für Services angeführt.
Art des Prinzips
  • Grundlegende Einteilung: Produktprinzip.
  • Technologiebezug: Übergreifend.
  • Entwurfsgüte: Strukturprinzip.
  • Handlungsbezug: Erleichterung von Änderung, Wiederverwendung und Verstehen.
  • Kognitionsbezug: Komplexitätsreduktion.
(Siehe Kategorisierung der Prinzipien.)
Grad der formalen Spezifikation In der allgemeinen Form gering. Für spezielle Kopplungen aber gut formalisierbar bis hin zur Implementierung von Metriken.
Vorteile
  • Sehr allgemeine Anwendbarkeit.
  • In konkreten Ausprägungen oftmals vergleichsweise schematisch einsetzbar.
Nachteile
  • Die Balance zwischen Kopplung und Kohäsion ist oftmals nur schwer abschätzbar und kaum formal zu begründen.
  • Einige Methoden zur Entkopplung können auf Kosten verschiedener Qualitätsmerkmale gehen.
Übergeordnete Prinzipien
  • Minimierung der Komplexität
Verwandt:
  • Prinzip der Modularisierung
Abgleitete Prinzipien
  • Dependency Inversion Prinzip
  • Prinzip der azyklischen Abhängigkeiten
  • Prinzip der stabilen Abhängigkeiten
  • Prinzip der Abtrennung von Schnittstellen
Qualitätsmerkmale
(+) Komplexität
(-) Verständlichkeit (z.B. Entkopplung durch Abstraktion)

Quellen

[Yourdon 1979] -  Structured design. Fundamentals of a discipline of computer program and systems design, Yourdon, E., Constantine, L. (1979)