Lose Kopplung ist die Vererbung der Serviceorientierung

Das Thema SOA (Service Orientierte Architekturen) lässt mich nicht los. Heute eine Anmerkung zu loser Kopplung.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Bernd Oestereich

Als ich Ende Januar über die OOP und im speziellen auch über die Heilsversprechen von SOA berichtete und dabei die OOP-Vorträge von Nico Josuttis und Adam Bien nannte, wurde ich in einem Blog-Kommentar gebeten, dazu mehr zu schreiben. Meine damalige Wortwahl ließ leicht erkennen, dass ich eine differenzierte und kritische Meinung zu SOA habe. Zwischenzeitlich habe ich das Thema auch mit dem einen oder anderen SOA praktizierenden Kunden weiter diskutiert, was mich in einigen Kritikpunkten eher bestärkte. Das Thema SOA lässt mich also immer noch nicht ganz los. Ich glaube, dazu werden noch ein paar Beiträge kommen.

Heute möchte ich kurz auf lose Kopplung eingehen.

Lose Kopplung ist im Design und in der Architektur von Software ein beliebter Mechanismus, um leidige Abhängigkeiten zu minimieren. Lose Kopplung ist für SOA, was Vererbung für die Objektorientierung ist - ein überbewerteter und oft missverstander Mechanismus. Lose Kopplung ist nicht immer sinnvoll, feste Kopplung nicht immer schlecht. Feste Kopplung verursacht prinzipiell Fehler zur Compile-Zeit und liefert mehr Typsicherheit. Lose Kopplung verursacht prinzipiell Fehler zur Laufzeit (falls sie überhaupt bemerkt werden). Semantische Abhängigkeiten werden bei loser Kopplung als Wert (by value) statt als Referenz (by reference) übertragen. Lose Kopplung erfordert höheren Aufwand für das Testen, beispielsweise wegen der prinzipiell geringeren Typsicherheit. Auch sind bei loser Kopplung und somit in einer SOA Lasttests viel wichtiger. Erst unter Hochlast kommt es zu realistischen, nicht-deterministischen Produktionssituationen, in denen sich Aufruf-Reihenfolgen ändern, und die spezifische fachliche oder technische Fehler verursachen. Unit-Tests helfen hier nicht weiter, denn sie sind nur sequenzielle Tests. Aber auch die Zahl der notwendigen Unit-Test ist unter SOA tendenziell höher, denn es sind alle kombinatorischen Varianten von optionalen und Pflicht-Attributen zu berücksichtigen. Außerdem wird es zu einem fachlichen Service oftmals viele verschiedene technische Ausprägungen geben (dazu vielleicht nächstes Mal mehr), was die Anzahl der zu testenden Varianten weiter erhöht.

Lose Kopplung ist eine Form von Abstraktion und jede Abstraktion kostet letztendlich Zeit und Geld. Da lose Kopplung ein fundamentaler Aspekt von SOA ist, darf erwartet werden, dass serviceorientierte Architekturen möglicherweise flexibler, sehr wahrscheinlich jedoch auch teuer werden, je mehr lose Kopplung eingesetzt wird. ()