Systemarchitektur und Coupling

Um was geht es hier?

In diesem Beitrag möchte ich kurz eine Entwurfsrichtlinie mit dem Namen Kopplung(engl.Coupling) vorstellen.

Hintergrund hierbei ist folgende Frage?

Worauf muss ich bei der Erstellung einer System-Architektur achten, damit die angestrebte Lösung die Eigenschaften besitzt wie:

  • Wartbarkeit
  • Änderbarkeit
  • Verständlichkeit
  • Austauschbarkeit

System-Design und Wartung

Die Antwort hierauf lautet:

„Achte auf den Grad der Kopplung zwischen den Komponenten!“

Was hierunter zu verstehen ist und was in der Praxis beachten ist, möchte ich in diesem Beitrag kurz vorstellen.

Zunächst stellt sich aber die Frage: Was bedeutet Kopplung?

Was bedeutet Kopplung?

Kopplung ist ein Maß, wie eng oder lose zwei Komponenten miteinander gekoppelt sind.

Coupling-Intro
Figure: Kopplung zweier Komponenten

Somit beschreibt die Kopplung den Grad der Abhängigkeit einer Komponente nach außen hin.

Es ist anzustreben, dass die Kopplung zwischen allen Komponenten eines Systems lose ist (im Sinne von gering).

Warum soll die Kopplung lose sein?

Ist eine Komponente mit einer losen / geringen Kopplung zu anderen Elementen, dann ist diese Komponente:

  • Einfacher auszutauschen
  • Einfacher wiederzuverwenden
  • Einfacher zu testen
  • Einfacher zu verstehen
  • Einfacher zu ändern
Coupling und Maintenace
Figure: Kopplung und Eigenschaften

Stellt sich nun die Frage:
Wie erkenne ich den Grad der Kopplung einer Komponente?

Wie erkenne ich den Grad der Kopplung einer Komponente?

Kopplung ist ein Maß für die Unabhängigkeit von Softwarekomponenten. Der Grad der Kopplung ist somit eine skalare Größe.
Hierbei unterscheiden man zwischen direkten oder indirekten Abhängigkeiten.

Direkte Abhängigkeiten sind:

  • Alle Kenntnisse darüber, wie ich eine andere Komponente ansteuern muss um sie zu verwenden
  • Alle Annahmen darüber, die ich über die andere Komponente mache

Indirekt Abhängigkeiten sind:

  • alle Elemente, die die andere Komponente benötigt um ihre Funktion zu erbringen.

Schauen wir uns als nächstes ein paar Beispiele an, um den Grad der Kopplung besser zu verstehen.

Beispiel bei der Verwendung einer JAVA Klasse / Apis

Nachfolgend ein Beispiel aus der Java-Welt.

Coupling und Java API
Figure: Beispiel Java

Beispiel bei der Verwendung eines RESTful APis

RESTFUL API siehe Restfulapi.net

Coupling und Restful API
Figure: Beispiel RESTFul API

Mögliche weitere Coupling-Aspekte können sein:

  • Annahmen über Zeitzone des Kommunikationspartners
  • Annahmen über Zeichenkodierungen (nicht UNICODE Standards)
  • Annahmen über Datenformate wie Datumsangaben, Nummernformate uns.
  • Annahmen über das Format von Textnachrichten (i.e. Sprache)

Beispiel bei der Verwendung von MQTT

MQTT siehe mqtt.org

Wie nachfolgender Abbildung zu entnehmen ist, besteht bei der Verwendung von MQTT zusätzlich zu dem verwendeten API die Abhängigkeit zu dem Topic Schema und dem Paylod einer Nachricht.

Couplimg und MQTT
Figure: Beispiel MQTT

Tip für die Praxis

Indikator Grad der Kopplung
Ich kenne von der anderen Komponente nur die Schnittstelle und die Daten geringe Kopplung
Die Methoden der anderen Komponente muss man in einer vordefinierten Reihenfolge aufrufen mittlere bis hohe Kopplung
Ich weiß, wie die andere Komponente funktioniert und welche Zustände sie annehmen kann hohe Kopplung
Coupling in der Praxis
Figure: Kopplung in der Praxis

Schlagwörter: , , ,
Copyright © 2014. All rights reserved.

Veröffentlicht22. Dezember 2021 von jaekle-visualconsult-admin in Kategorie "Methodik