Wikipedia · einfach zusammengefasst · Stand
Kopplung (Softwareentwicklung)
Unter Kopplung versteht man in der Informatik die Verknüpfung von verschiedenen Systemen, Anwendungen oder Softwaremodulen sowie ein Maß, das die Stärke …
Inhalt4 Abschnitte
Begriff und Bedeutung
Kopplung bezeichnet in der Informatik die Verknüpfung verschiedener Systeme, Anwendungen oder Softwaremodule. Außerdem ist sie ein Maß dafür, wie stark diese Verknüpfung und die daraus entstehende Abhängigkeit sind. Bei Systemen und Anwendungen wird vor allem betrachtet, wie Daten von einer Anwendung oder einem System zu einem anderen fließen.
Auch innerhalb einer Anwendung gibt es Kopplung zwischen einzelnen Softwaremodulen. Davon zu unterscheiden ist die Bindung (Kohäsion): Sie beschreibt die Abhängigkeiten innerhalb eines Moduls. Für ein gutes System strebt man möglichst lose Kopplung und gleichzeitig starke Bindung an. Je niedriger die Kopplung ist, desto eigenständiger ist ein Modul.
Kopplung von Systemen und Anwendungen
Systeme oder Anwendungen können auf verschiedene Weise zusammenarbeiten. Die Formen unterscheiden sich danach, wie Informationen zwischen ihnen übertragen werden:
-
Menschlicher Eingriff: Informationen werden durch einen Menschen zwischen den Systemen transportiert. Dies wird nicht als Kopplung im engeren Sinne betrachtet, muss aber berücksichtigt werden. Als „Turnschuhnetzwerk“ bezeichnet man diese Form, weil der Transport praktisch durch das Hin- und Hergehen einer Person erfolgt.
-
Formatierte Dateien: Die Daten werden mit einfachen Dateien, sogenannten Flatfiles, ausgetauscht. Alle beteiligten Anwendungen müssen das verwendete Format verstehen. Häufig sind tabulatorgetrennte oder kommagetrennte Dateien sowie XML-basierte Dateiformate.
-
Konverter: Ein Konverter wandelt ein Datenformat in ein anderes um. Dadurch müssen sich die Anwendungen nicht unmittelbar auf dasselbe Austauschformat einigen. Der Konverter versucht, die Semantik, also die Bedeutung der Daten, beizubehalten; das ist jedoch häufig nicht vollständig möglich. Ein Beispiel ist dvi2ps, das eine DVI-Datei in eine PostScript-Datei umwandelt.
-
Kopplungsprozeduren: Das Client-System ruft beim Server eine Funktion auf. Diese überträgt Daten und kann zugleich direkt eine Logik auf der Serverseite starten. Meist muss dafür der Quelltext einer oder beider Anwendungen angepasst werden. Mögliche Techniken sind RPC oder RFC, CORBA, RMI, SOAP beziehungsweise Web Services, .NET Remoting, COM und DCOM.
Kopplungsarten nach Myers
Glenford J. Myers beschrieb 1974 verschiedene Kopplungsarten. Meilir Page-Jones ordnete sie anschließend nach ihrer Stärke. Die folgende Reihenfolge reicht von sehr starker zu schwächerer Kopplung:
-
Content coupling (Inhaltskopplung): Ein Modul hängt von der konkreten inneren Umsetzung eines anderen Moduls ab oder verändert dessen interne Daten. Diese sehr starke Kopplung soll unbedingt vermieden werden.
-
Common coupling (Bereichskopplung): Zwei Module kommunizieren über gemeinsame globale Daten.
-
External coupling (Externdatenkopplung): Zwei Module verwenden einen extern vorgegebenen Mechanismus, zum Beispiel eine Datei mit festgelegtem Aufbau.
-
Control coupling (Kontrollkopplung): Ein Modul beeinflusst den Kontrollfluss eines anderen, etwa durch einen Parameter, der die konkrete Aktion festlegt. Zu unterscheiden ist, ob der Kontrollparameter ein Aufrufparameter oder ein Rückgabewert ist. Ein Aufrufparameter sollte vermieden werden; ein Rückgabewert lässt sich manchmal nicht ändern.
-
Stamp coupling (Datenstrukturkopplung): Zwei Module kommunizieren über eine komplexe Datenstruktur, obwohl nur ein Teil dieser Struktur verwendet wird.
-
Data coupling (Datenkopplung): Zwei Module kommunizieren über elementare Daten, beispielsweise einfache Parameter.
Ursprünglich waren diese Arten nicht geordnet. Page-Jones ergänzte außerdem tramp coupling. Diese Form liegt vor, wenn ein Modul Parameter entgegennimmt, sie selbst aber nicht verwendet, sondern lediglich an andere Module weiterreicht.
Kopplungsarten nach IEEE und CPSA-F
Der IEEE-Standard 610, der Standard Glossary of Software Engineering Terminology, unterscheidet Kopplungsarten, die den Kategorien von Myers bis auf Einzelheiten entsprechen:
- Pathological coupling (pathologische Kopplung) entspricht der Inhaltskopplung bei Myers.
- Content coupling (Inhaltskopplung) liegt vor, wenn ein Modul den Inhalt eines anderen Moduls oder Teile davon inkludiert.
- Common-environment coupling (Bereichskopplung) entspricht der Bereichskopplung bei Myers.
- Hybrid coupling (Hybridkopplung) liegt vor, wenn ein Parameter zugleich Datum und Kontrollflussinformation ist. Ein Parameter mit dem Wert 0 könnte beispielsweise bedeuten, dass die gegebene Information unbekannt ist. Zuerst muss dann der Fall bestimmt werden, bevor der Parameter verwendet werden kann. Hybridkopplungen sollten vermieden werden.
- Control coupling und data coupling entsprechen den gleichnamigen Kategorien bei Myers.
Der Lehrplan des iSAQB Certified Professional for Softwarearchitecture Foundation Level (CPSA-F) nennt mindestens folgende Kopplungsarten und Ursachen: Kopplung über Aufruf, Benutzung oder Delegation; über Nachrichten oder Ereignisse; über Komposition; über Erzeugung; über Vererbung; strukturelle und zeitliche Kopplung; Kopplung über Daten oder Datentypen sowie über Hardware.