Pick your coupling: loose, dynamic or active

Loose coupling is often a notion that is mentioned when we talk about SOA. Jeff  Schneider is providing some insight on the concept in this post.

"In the physical world, we use devices to decouple entities. Instead of soldering two components together, we connect each component to a plug and then use the plugs to connect the items together. This is necessary in the physical world."
 

I really like the analogy of soldering vs plugging in the context of an home entertainment system. Imagine if you were forced to buy a HES in one block! But wait, it does not make sense to make the system modular at any level: imagine also "plugging" components of a TV or a stereo system. The components and interfaces of an HES evolved under various pressures (technical specialization, market preferences, distribution channels...), but at the end of the day SOA is only possible because:

A) there is a no-cost/no-effort interconnectivity between components. What would happen if we had to solder the HES components together? Hum... isn't it how EAI/EII has operated for the past 10 years? This is also how the telephone companies operated just a few decades ago (Imagine having to call the phone company each time you want to call a new number? well again this is how EAI works).

B)  there is a commonly agreed data format between components. (How often do you get upset when you need a converter of some sort (e.g. VGA -> to HDTV) that is not readily available?)

C) Each component does not have precise understanding of the context in which it is being used. My Stereo system does not know whether it is dealing with sound coming from my cable box or my (home grown) HTPC. Same thing for my TV, it does not know it is displaying a feed from the cable box or my HTPC.

I think that's enough for achieving loose-coupling (technical and semantic). Now Jeff, makes a point further, he talks about "dynamic coupling". That's also easy to understand with the HES metaphor: once I connected my HES, I was really happy, I could do video-conference, listen to FIP (in Seattle), play DVDs, my favorite webcasts from the Microsoft NEAT team, whatever... right? Well, I ended up being the only one able to operate the HES. It was so bad that my wife and kids had to call me at work when they needed to switch from one context of usage to another (playing DVD to watching cable TV) or if I left the HES in a state they did not understand. So what did I ended up doing? I bought a switch box that allow me to specify a certain topology based on the context of usage. This is (as I understand it, a cheap version of) dynamic coupling, one step beyond beyond loose coupling. Now, even my 6 year old daughter, can use it ! Loose coupling is not necessarily an end in itself, it is a way to achieve dynamic coupling. And Jeff lists in his post what it means in the software world quite eloquently.

Beyond Dynamic coupling there is probably another level, which I can call "Active coupling". If all we do is build services that are fairly passive we get some good value with dynamic coupling (my switch box), but if we add an HTPC, with orchestration and pipeline capabilities, my HES value is improved by an order of magnitude: I can take the dynamic coupling capabilities and leverage it to perform tasks unimaginable before (recording a series of show with point and click), selecting a play list of music from my library rather than changing my CDs by hand... Not to mention that I can leverage storage services, never designed to work for HES.

In case you wonder, I hardly get a chance to play with my HES now that it is so easy to use...

Jean-Jacques Dubray  06/04

Hit Counter

 

 

 

 

Hit Counter