Great summary of the coupling aspects that need to be considered in any integration effort (service oriented or otherwise).
The biggest challenge? Achieving the right amount of loose coupling. Not everything needs to be loosely coupled on all levels. And for the interactions that would benefit from such decoupling, time and expense tend to increase--it takes effort to properly abstract interfaces and define semantics such that they are amenable to change that occurs elsewhere. I can't count the number of times designers have claimed "we used pub/sub so we are completely decoupled" yet the messages exchanged are passing around application specific identifiers and codes and a data model mismatch is handled by one or more of the end-points understanding the model of source and adapting. Change that source and one has a lot of target changes to do. IMO, this is the danger spot of SOA expectations. Many who have implemented SO systems will try a big change for the first time expecting smooth sailing and run into these coupling issues. This will cause change ripples throughout the system--the very thing they thought they were avoiding by "doing SOA." A good article to raise that awareness. -Rob
