In this day and age with Service Oriented Architectures being all over the place (apparently) it doesn’t seem like the sort of question that I should really be asking. However, I do ask the question because there are, as always, the Purists and the Pragmatists.
The purists would describe a service as being some piece of code that accepts some form of input, performs a function on the data it is given and then produces the results for you. Typically the input and output are in an XML format because it would be “bad form” to expose a service that wasn’t using an interoperability standard to communicate with other pieces of the puzzle.
The Pragmatist would open up the whole debate around Service orientation by questioning the limited view of a “Service” that the purists take. Refuse collection is a service that we all use as are utilities such as water, gas and electricity. Getting a package delivered from one side of the planet to another is also a service that anyone can use from large corporations to the likes of you and me.
The difficulty in getting SOA to “bite” is that the business already sees itself as providing services to its customers as well as its employees, but doesn’t fully appreciate the fact that it is also providing a service to itself internally. That means that businesses don’t fully concentrate on the efficiency of their internal processes or they believe that purchasing a monolithic piece of software will solve their problems. How many organisations have bought a huge HR or Finance system and in the interests of economy have determined that they will shoehorn their organisation into working the way that the software does? After all, we have the term COTS (Commercial off-the-shelf) software – by implication the business will install the software and expect to adapt their processes to the way the software operates.
One of the worries that I have is that we have moved from bespoke, tailored solutions which fit the business like a glove (or at least the glove as worn 12 months ago when the analysts were looking at the business) to a “one size fits all” (OSFA) model. The OSFA model makes a huge assumption that the software will be built to take into account current “best practice” and that may well be true, but “best practice” by whom and for whom? Some time back – in my history – I worked for a database vendor who created applications to support functions such as HR, Finance etc. The problem with the solutions that they had created was that they were ideal for a Database Vendor and as such didn’t really fit healthcare businesses or government establishments particularly well. As a result, after spending inordinate amounts of cash on systems, they needed to be customised to fit the way that the business really worked.
Clearly the OSFA model is not the best for the end customer, but of course it is a really good model for the software vendor.
If you can now take the business and look at it in a component fashion and determine what the smaller building bricks are, then you should be able to start making good use of the SOA paradigm. Take out the monolithic applications and create “Services” which may be performed by people, resources or automated technology. If you can now provide smaller components of technology that will support the people and resources that are trying to provide those services then the amount of bespoke work that needs to be done is reduced. A “Service” becomes something that a capability unit within an organisation provides for the rest of the organisation or the customers of that business. Now when the organisation adapts to external and internal influences the effort in adapting is down to changing smaller pieces of the machine.
