- Kohäsion (Informatik)
-
In der objektorientierten Programmierung beschreibt Kohäsion, wie gut eine Programmeinheit eine logische Aufgabe oder Einheit abbildet. In einem System mit starker Kohäsion ist jede Programmeinheit (eine Methode, eine Klasse oder ein Modul) verantwortlich für genau eine wohldefinierte Aufgabe oder Einheit.
Starke Kohäsion
Eine Klasse mit starker Kohäsion repräsentiert genau eine wohldefinierte Einheit, eine Methode mit starker Kohäsion ist verantwortlich für genau eine wohldefinierte Aufgabe. Code-Duplizierung (eine bestimmte Folge von Symbolen erscheint mehrmals[1] im Quelltext einer Anwendung) ist ein Indiz für schlechten Entwurf. Sie sollte vermieden werden.
Meist wird Code-Duplizierung durch schlechte (schwache) Kohäsion verursacht. In der pragmatischen Programmierung nennt man dies das DRY-Prinzip (Don't Repeat Yourself ‚Wiederhole dich nicht‘).
Arten der Kohäsion
Kohäsion kann als qualitatives Maß für Quelltext betrachtet werden. Dieses Maß kann in Kategorien unterteilt werden, die sich voneinander in der Stärke der Kohäsion unterscheiden. Mögliche Kategorien der Kohäsion von schwacher Kohäsion (zu vermeiden) bis hin zu starker Kohäsion (erstrebenswert) sind:
- Zufällige Kohäsion
- Zufällige Kohäsion liegt dann vor, wenn die Teile eines Moduls logisch und sachlich unzusammenhängend und so nur zufällig zusammen gruppiert sind (Beispiel: Utility-Klassen).
- Logische Kohäsion
- Logische Kohäsion liegt dann vor, wenn die - an sich unterschiedlichen - Teile eines Moduls logisch durch einen Oberbegriff zusammengefasst werden können (Beispiel: Eingaberoutinen für Maus, Tastatur, etc.).
- Zeitliche Kohäsion
- Zeitliche Kohäsion liegt dann vor, wenn die Teile eines Moduls nach ihrer gemeinsamen Ausführungszeit gruppiert sind (Beispiel: Initialisierung/Desktruktion innerhalb eines Konstruktors/Destruktors).
- Prozedurale Kohäsion
- Prozedurale Kohäsion liegt dann vor, wenn die Teile eines Moduls nach ihrer Ausführungsreihenfolge gruppiert sind (Beispiel: Eine Funktion, die zunächst Zugriffsrechte prüft und anschließend eine Datei öffnet).
- Kommunikative Kohäsion
- Kommunikative Kohäsion liegt dann vor, wenn die Teile eines Moduls auf gemeinsamen Daten operieren.
- Sequentielle Kohäsion
- Sequentielle Kohäsion liegt dann vor, wenn die Ausgabe eines Teiles eines Moduls die Eingabe eines anderen Modulteiles ist.
- Funktionale Kohäsion
- Funktionale Kohäsion liegt dann vor, wenn die Teile eines Moduls alle zur Lösung einer einzelnen, wohldefinierten Aufgabe beisteuern.
- Informationale Kohäsion
- Informationale Kohäsion ist eine Verstärkung des Begriffs der funktionalen Kohäsion. Sie liegt dann vor, wenn zusätzlich zur funktionalen Kohäsion auch kommunikative Kohäsion für ein Modul vorliegt.
Eng verbunden mit dem Begriff der Kohäsion ist der Begriff der Kopplung.
Fußnoten
Wikimedia Foundation.