"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

