Service-oriented architecture
In computing, service-oriented architecture (SOA) provides methods for systems development and integration where systems package functionality as interoperable services. A SOA infrastructure allows different applications to exchange data with one another. Service-orientation aims at a loose coupling of services with operating systems, programming languages and other technologies that underlie applications[1]. SOA separates functions into distinct units, or services[2], which developers make accessible over a network in order that users can combine and reuse them in the production of applications[3]. These services communicate with each other by passing data from one service to another, or by coordinating an activity between two or more services. Many commentators[who?] see SOA concepts as built upon and evolving from older concepts of distributed computing[2][3] and modular programming.