Service-orientation is a design paradigm for computer software in the form of services. The principles of service-oriented design stress the separation of concerns in the software. Applying service-orientation results in units of software partitioned into discrete, autonomous, and network-accessible units, each designed to solve an individual concern. These units qualify as services.
Service-orientation has received a lot of attention since 2003 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. The paradigm lost momentum in 2009; since 2014, renewed interest can be observed under the Microservices moniker. 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.
Service-orientation inherits a number of principles from earlier paradigms including object-oriented programming, 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. The two are complementary paradigms and that there will always be a need for both. Services also inherit a number of features of software components, including
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.