Service Oriented Computing Is Overrated
Information infrastructure problems cannot be solved by service oriented computing (SOC) alone. Pro or con?
Pro: Hyped Claims
Service-oriented computing (SOC) is a programming paradigm shift in the computer and information technology industry. Unlike object-oriented programming, SOC deals with modules or components that can be represented as reusable entities with service interfaces. Each entity may have a specific goal or objective. The entities can be composed and reused in various applications or solutions.
For example, if you have a traditional Java program, you might like to allow this Java program to be accessed or invoked by other applications deployed over the Internet. So you can make a service orientation for your traditional Java program. That is, expose some of the method names and associated parameters as Web services. SOC makes this possible.
In the long run, SOC is being mainly driven by service oriented architecture (SOA), which has been gradually adopted in most industries. Why does the industry care about SOA so much? Mainly because SOA has been evolved from an IT infrastructure (e.g., programming and middleware) level to a business process level and then further to enterprise level.
In terms of body of knowledge, SOC has become an important part of the rapidly evolving services computing discipline, which covers the science and technology of leveraging computing technology and IT to create, operate, and manage business services in an effective and efficient manner. As the largest computing professional society, the IEEE (Institute of Electrical & Electronics Engineers) Computer Society, of which I am an active member, has been defining the knowledge areas of services computing since 2003 by working with leading industry partners such as IBM to help train more top talents in the modern services industry. IEEE Transactions on Services Computing also launched to publish top quality research papers in this emerging field.
Con: A Technological Boon
The basics of service oriented computing (SOC) are actually quite sound and represent a modest improvement over ideas developed during the past quarter-century: distributed processing, object-oriented programming, self-describing data, middleware.
However, now we have embraced SOC as the solution to all that ails our information infrastructure. If we rush to deploy the ideas of this process without thinking about what we are doing, we risk committing to an expensive development process that may not solve our problems and could lock us into an inflexible IT system.
Like so many new ideas in IT, SOC works well with simple problems, such as the commonly cited example of planning a vacation. As long as we are working with straightforward services, such as the task of purchasing an airline ticket or reserving a hotel room, we can make and deploy successful systems. Once we are dealing with more ambiguous services and trying to manage those systems, we find the current tools of SOC much less helpful. These tools encourage us either to create a system either too general or too narrow. With the general system, we are likely to waste money and time and create security problems. If we solve only the immediate problem, we will often have created a system difficult to adapt to new needs.
The proponents of SOC argue that their methods ought to produce simple, flexible, and well-performing systems. They will make good on these promises only as they improve the standards of SOC and find better ways of managing the dynamic interactions between services. They will likely make such improvements over the next five years, but in the process, they will create a form of information technology that is different from the service oriented architecture that we see today.