Samstag, 16. Februar 2013

Kopplung und Kohäsion - eine Metrik für Systeme



In seinem monumentalen Buch [Wang 2007], einem umfassenden Versuch zur Verwissenschaftlichung der Softwaretechnik, formalisiert Yinxu Wang Kopplung und Kohäsion aus der Sicht von Systemen:
  • Ein System besteht aus einer Anzahl interner Komponenten und kommuniziert mit einer Anzahl externer Komponenten.
  • Es existieren drei Arten von Beziehungen:
    • Beziehungen zwischen internen Komponenten (B_intern).
    • Ausgehende Beziehungen (B_output).
    • Eingehende Beziehungen (B_input).
  • Es können zusammengefasst werden:
    • Alle Beziehungen (B_alle = B_intern + B_output + B_input).
    • Alle externen Beziehungen (B_extern = B_output + B_input).
 Dann lassen sich Kopplung und Kohäsion wie folgt definieren:
  • Kopplung = B_extern / B_alle * 100%
  • Kohäsion = B_intern / B_alle * 100%
 Daraus ergibt sich:
  • Kohäsion + Kopplung = 100%

Verallgemeinerbarkeit?

Wang spricht hier ganz explizit von "System Cohesion and Coupling" und schränkt den Systembegriff dabei keineswegs auf Software-Systeme ein. Im Kontext des Kapitels ist beispielsweise von der Taxonomie von Systemen, von physikalischen und sozialen Systemen, von finiten und infiniten Systemen, von offenen und geschlossenen Systemen die Rede. Systeme sieht Wang hierarchisch aus Komponenten aufgebaut, die ihrerseits aus Subkomponenten bestehen usw. Weder Komponenten noch Beziehungen zwischen Komponenten werden allerdings weiter eingeschränkt. Eine Verallgemeinerung dieses Systembegriffs auf beliebige Ebenen der Softwaretechnologie bedürfte sicherlich einer Rechtfertigung.
  • Ist ein Service ein System?
  • Ist eine Komponente ein System?
  • Ist eine Funktion ein System?
Die Antwort lautet nicht uneingeschränkt "Ja", aber eine Anwendung der oben beschriebenen Metrik ist grundsätzlich auch auf diesen Ebenen nicht ausgeschlossen, wenn im Einzelfall festgelegt werden kann, was als Komponente und was als Beziehung aufzufassen ist.

Quellen

[Wang 2007]  - Software Engineering Foundations - A Software Science Perspective, Wang, Yingxu (2007)