Modulkopplung
In der Softwaretechnik ist die Kopplung der Grad der gegenseitigen Abhängigkeit zwischen Softwaremodulen. Zwei Module, die eng gekoppelt sind, sind stark voneinander abhängig. Zwei Module, die lose gekoppelt sind, sind dagegen nicht voneinander abhängig. Ungekoppelte Module sind untereinander überhaupt nicht abhängig.
Die verschiedenen Arten von Kopplungstechniken sind in der Abbildung dargestellt:
Ein guter Entwurf ist derjenige, der eine geringe Kopplung aufweist. Die Kopplung wird durch die Anzahl der Beziehungen zwischen den Modulen gemessen. Das heißt, die Kopplung nimmt zu, wenn die Anzahl der Aufrufe zwischen den Modulen steigt oder die Menge der gemeinsam genutzten Daten groß ist. Es kann also gesagt werden, dass ein Entwurf mit hoher Kopplung mehr Fehler aufweist.
Arten der Modulkopplung
1. Keine direkte Kopplung: Es gibt keine direkte Kopplung zwischen M1 und M2.
In diesem Fall sind die Module verschiedenen Modulen untergeordnet. Daher keine direkte Kopplung.
2. Datenkopplung: Wenn Daten eines Moduls an ein anderes Modul weitergegeben werden, spricht man von Datenkopplung.
3. Stempelkopplung: Zwei Module sind stempelgekoppelt, wenn sie über zusammengesetzte Datenelemente wie Strukturen, Objekte usw. kommunizieren. Wenn ein Modul eine nicht-globale Datenstruktur oder eine ganze Struktur an ein anderes Modul weitergibt, spricht man von stamp coupled. Zum Beispiel die Übergabe einer Strukturvariable in C oder eines Objekts in C++ an ein Modul.
4. Kontrollkopplung: Kontrollkopplung besteht zwischen zwei Modulen, wenn Daten aus einem Modul verwendet werden, um die Struktur der Befehlsausführung in einem anderen zu steuern.
5. Externe Kopplung: Externe Kopplung liegt vor, wenn zwei Module ein von außen vorgegebenes Datenformat, Kommunikationsprotokolle oder eine Geräteschnittstelle gemeinsam nutzen. Dies bezieht sich auf die Kommunikation mit externen Werkzeugen und Geräten.
6. Gemeinsame Kopplung: Zwei Module sind gemeinsam gekoppelt, wenn sie Informationen über einige globale Datenelemente gemeinsam nutzen.
7. Inhaltliche Kopplung: Inhaltliche Kopplung besteht zwischen zwei Modulen, wenn sie Code gemeinsam nutzen, z.B. eine Verzweigung von einem Modul in ein anderes Modul.
Modulkohäsion
In der Computerprogrammierung definiert Kohäsion den Grad, in dem die Elemente eines Moduls zusammengehören. So misst die Kohäsion die Stärke der Beziehungen zwischen Teilen der Funktionalität innerhalb eines bestimmten Moduls. In Systemen mit hoher Kohäsion ist die Funktionalität beispielsweise stark miteinander verbunden.
Kohäsion ist eine ordinale Art der Messung und wird im Allgemeinen als „hohe Kohäsion“ oder „niedrige Kohäsion“ beschrieben.
Typen von Modulkohäsion
- Funktionale Kohäsion: Funktionale Kohäsion liegt vor, wenn die verschiedenen Elemente eines Moduls zusammenwirken, um eine einzige Funktion zu erfüllen.
- Sequentielle Kohäsion: Von einem Modul wird gesagt, dass es sequenzielle Kohäsion besitzt, wenn die Elemente eines Moduls die Komponenten der Sequenz bilden, wobei die Ausgabe von einer Komponente der Sequenz die Eingabe für die nächste ist.
- Kommunikative Kohäsion: Ein Modul wird als kommunikativ kohäsiv bezeichnet, wenn alle Aufgaben des Moduls auf dieselbe Datenstruktur verweisen oder diese aktualisieren, z.B. die Menge der auf einem Array oder einem Stack definierten Funktionen.
- Prozedurale Kohäsion: Ein Modul wird als prozedural kohärent bezeichnet, wenn der Zweck des Moduls alle Teile einer Prozedur sind, in der eine bestimmte Abfolge von Schritten ausgeführt werden muss, um ein Ziel zu erreichen, z.B. der Algorithmus zur Dekodierung einer Nachricht.
- Temporale Kohäsion: Wenn ein Modul Funktionen enthält, die dadurch verbunden sind, dass alle Methoden zur gleichen Zeit ausgeführt werden müssen, spricht man von zeitlicher Kohäsion.
- Logische Kohäsion: Ein Modul wird als logisch kohäsiv bezeichnet, wenn alle Elemente des Moduls einen ähnlichen Vorgang ausführen. Zum Beispiel Fehlerbehandlung, Dateneingabe und Datenausgabe usw.
- Koinzidenzkohäsion: Von zufälliger Kohäsion spricht man bei einem Modul, wenn es eine Reihe von Aufgaben ausführt, die, wenn überhaupt, nur sehr lose miteinander verbunden sind.
Unterscheidung zwischen Kopplung und Kohäsion
Kopplung | Kohäsion |
---|---|
Kopplung wird auch Inter-Modul-Bindung genannt. | Kohäsion wird auch Intra-Modul-Bindung genannt. |
Coupling zeigt die Beziehungen zwischen den Modulen. | Cohesion zeigt die Beziehung innerhalb des Moduls. |
Coupling zeigt die relative Unabhängigkeit zwischen den Modulen. | Cohesion zeigt die relative funktionale Stärke des Moduls. |
Bei der Erstellung sollte man eine geringe Kopplung anstreben, d.h., die Abhängigkeit zwischen den Modulen sollte gering sein. | Bei der Erstellung sollte man eine hohe Kohäsion anstreben, d.h. eine kohäsive Komponente/ein kohäsives Modul konzentriert sich auf eine einzige Funktion (d.h. Einzelkämpfertum) mit wenig Interaktion mit anderen Modulen des Systems. |
Bei der Kopplung sind die Module mit den anderen Modulen verbunden. | Bei der Kohäsion konzentriert sich das Modul auf eine einzige Sache. |