Service-orientation

Service-orientation is a design paradigm to build computer software in the form of services. Like other design paradigms (e.g. object-orientation), service-orientation provides a governing approach to automate business logic as distributed systems.[1] What distinguishes service-orientation is its set of design principles to ensure the manner in which it carries out the separation of concerns in the software. A service-oriented architecture (SOA) is governed by these principles. Applying service-orientation results in units of software partitioned into operational capabilities, each designed to solve an individual concern. These units qualify as services.[2][3]

Service-orientation has received a lot of attention since 2005 [4] 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.[5]

Contents

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.[6]

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:

  1. Boundaries are explicit
  2. Services are autonomous
  3. Services share schema and contract, not class
  4. 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:

  1. Business Architecture
  2. SOA
  3. Software Oriented Management

Allen's book defines seven Service-Oriented Viewpoints (labelled SOV7):

  1. Transparence
  2. Customer fit
  3. Partner connectivity
  4. Adaptation
  5. Multi-channel capability
  6. Optimization
  7. One-stop experience

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.

Antecedents

Service-orientation inherits a number of principles from earlier paradigms including object-orientation, component-based software engineering and open distributed processing.

Object-orientation

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

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).

See also

References

Further reading