SOA, six blind men and an elephant

The Parable of the Blind Men and the Elephant teaches a great lesson: although the six blind men in the story were partially right, they were all in the wrong. They were wrong because they assumed that the partial view they had of the elephant was the entire truth. They did not accept that their view was a partial one based on their vantage point. Instead of seeking to understand other views and complement theirs, they argue with no interesting result.

In my experience, this is true for SOA as well.

What the pillars of connected systems try to achieve is to offer 7 different partial perspectives which together help have a better grasp of the SOA elephant. The 7 pillars of connected systems decompose a complex solution into the 7 perspectives making any complex solutions.

These perspectives are Service Orientation, User Experience, Identity, Data, Workflow, Management, Tools and Modeling. (see picture below)

7 perspectives of connected systems

By accepting the decomposition along these 7 perspectives, not only the blind men become wiser and stop arguing, but they also feel better as they realize they were (from their perspective) right. Accessorily, this also helps clarify a lot of other things. First of all, Service Orientation (or what many call SOA) is only a partial view of the total solution. Typically, buying an ESB (assuming that we agree on what it is) will not be sufficient, but only partially solve the partial perspective that SO is, of the full solution. Even if an ESB fully solved the SO aspects, it would still be fully solving a partial view of the entire solution.

So if SO is a partial view what are the other views?

Well, for example, all the aspects of service consumption, i.e. making services consumable by the person who matters most: the end user, domain expert, information worker, analysts (call that person the way you want). This is what the User Experience pillar is all about. I would say that there are 3 main categories through which we can greatly improve service consumption.

1) through visualization and new metaphors

2) through composite application

3) through Office integration

Rich visualization and new metaphors. New technologies such as WPF or WPF/E allow the creation of rich metaphor to manipulate the information at a higher level of abstraction, making the end user, more productive. The screenshot below is a demo showing access to the a CRM system web APIS (sforce.com) through a downloadable WPF control (note that it runs within Internet Explorer). Again, these new set of metaphors are no "eye candies" but real productivity enhancing elements.

 

Composite application (some call them integrated desktop). Composite applications allow the client side aggregation of diverse back ends on a set of shared "backplane" services: the shell. The Integrated Dell Desktop was an amazing success of composite application, for a look at the underlying technology go to CAB. Below a figure showing the different "parts" composing the application.

 

Obviously composite applications and rich visualizations are not mutually exclusive; one can easily imagine that part of the composite applications are rendered through rich metaphors.

By the way, new metaphors and composite applications are one way to rationalize Web 2.0. Web 2.0 can be seen as an instantiation of service consumption on the Web. The rich visualization/new metaphor is Ajax (not new in absolute, but new in the context of the web) and the composite application/integrated desktop element is the mash up.

 

Office integration I know many people (in the enterprise) who would love to have Office (Outlook, Excel) as their only UI. An example of that is Elixir. Mendocino and frameworks such as IBF are also reinforcing that path.

 

As you can see, by just introducing the concept of service consumption, the overall perspective of SOA is altered. Hopefully, this demonstrated (1) one should think about SOA in broader terms than just the service oriented aspects (2) the 7 pillars of connected systems offer a way of decomposing complex solutions in more manageable chunks while also making sure that most (all?!) perspectives are taken into accounts.

 

Of course, to be complete, I should also be describing the other perspectives, but I will do this another time (I know I said that before :))

 

P.S.

 

Interestingly, I just stumbled upon a post from David Chappell introducing the 3 faces of SOA. Not directly related to this post but it reinforces the fact that one must be open to several perspectives/faces in thinking about/discussing SOA.