This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)(Learn how and when to remove this template message)
Service-orientation is a design paradigm for computer software in the form of services. The principles of service-orientation design stress the separation of concerns in the software. Applying service-orientation results in units of software partitioned into operational capabilities, each designed to solve an individual concern. These units qualify as services.
Service-orientation has received a lot of attention since 2005 due to the benefits it promises. These include increased return on investment, organisational agility and interoperability as well as a better alignment between business and IT. It builds heavily on earlier design paradigms and enhances them with standardisation, loose coupling and business involvement.
History of service-orientation principles and tenets
In technology, different vendor SOA platforms have used different definitions of service-orientation. Some vendors promote different principles and tenets over others, but a fair amount of commonality exists.
Don Box of Microsoft was one of the first to provide a set of design guidelines referred to as his "four tenets of service-orientation" which he described primarily in relation to the Microsoft Indigo (subsequently Windows Communication Foundation) platform that was emerging at the time:
- Boundaries are explicit
- Services are autonomous
- Services share schema and contract, not class
- Service compatibility is based on policy
These tenets have since become fundamental design guidelines for related Microsoft-based documentation, such as the "Service Orientation and Its Role in Your Connected Systems Strategy" article published on MSDN in 2004.
An article in the December 2005 edition of the IBM System Journal (by Cherbakov, Galambos, Harishankar, Kalyana, Rackham) entitled "Impact of service orientation at the business level" provided a study of how the service-orientation paradigm relates to fundamental componentization and the IBM Component Business Model (CBM). Further, in a published article entitled “SOA Simplified”, IBM Vice President for Strategy Sandy Carter emphasized the importance of service-orientation and its relevance to attaining true reuse.
Paul Allen wrote a book in which Service Orientation is defined as a paradigm, with three main components:
- Business architecture
- Software oriented management
Allen's book defines seven Service-Oriented Viewpoints (labelled SOV7):
- Smoothness of customer’s experience in using the service.
- Customer fit
- Ability to tailor offerings to variations in customer needs.
- Partner connectivity
- Ability to use 3rd parties for performing commodity services
- Ability to offer a service to different partners
- Adapting to the changes in the marketplace.
- Multi-channel capability
- Support the customer end-to-end through process, using different channels to achieve continuity.
- Offering same service through different channels.
- Offering services in real time at high performance levels.
- One-stop experience
- Catering to different needs of the customers through one set of services.
The viewpoints do have a more high-level approach, and are not as specific and interlinked as the Service Orientation Principles of Erl. Allen uses them as starting point for stating questions during the design process.
Service-orientation inherits a number of principles from earlier paradigms including object-orientation, component-based software engineering and open distributed processing.
It is commonly acknowledged that several service-orientation principles have their roots in the object-oriented design paradigm. Some have claimed that service-orientation will ultimately replace object-orientation as the de facto design paradigm, while others state that the two are complementary paradigms and that there will always be a need for both.
Component-based software engineering
Services inherit a number of features of software components, including
- Encapsulated i.e., non-investigable through its interfaces
- A unit of independent deployment and versioning
Open Distributed Processing
Open Distributed Processing (ODP) combines the concepts of open systems and distributed computing, which are essential characteristics of service-orientation. The key features of ODP are all inherited by service-orientation, including federation, interoperability, heterogeneity, transparency and trading/broking.
Service-orientation and service-oriented design
The term “service-oriented design” is usually used when referencing a formal process (the service-oriented design process) for designing services for SOA. When used in general terms as an approach for designing solution logic as services for SOA, service-oriented design can be considered synonymous with service-orientation.
Future of service-orientation
Service-orientation has continued to receive increased recognition as an important part of the service-oriented computing landscape and a valid design approach to achieving service-oriented architecture. Note that service-orientation principles are commonly referred to as "SOA principles". Due to the range of interpretations given to the notion of SOA, it is not always clear what is exactly being discussed. Both Allen and Erl stress the aspect of Service Orientation as an encompassing paradigm, see the book of Allen and this interview with Thomas Erl (http://searchwebservices.techtarget.com/qna/0,289202,sid26_gci1189356,00.html).
- Service-oriented architecture (SOA)
- Service-oriented modeling
- Separation of concerns
- Business process network