In their survey of software architectural styles and patterns, Sharma, Kumar, and Agarwal (2015) have compared various styles according to quality attributes and also specified the application area along with the advantages and disadvantages of each style. The quality attributes chosen for comparison are Complexity, Reliability, Scalability, Functionality, Efficiency, Portability, Usability, Maintainability, and Application area. Their study concludes that layered architectural model is a widely adopted model which supports separation of concerns, loose coupling, and high maintainability. The component-based architecture and service-oriented architecture have high scalability, reliability, portability, and efficiency for large-scale, distributed information systems. Although services and components have no clear distinction, the advantage of using services over components is the level of abstraction and the platform independence. Petritsch (2006) also subscribes to the same view and adds that component based system architectures are often managed by a single company and require an agreement on protocols and platforms for enterprise-wide communication. Arsanjani et al. (2008) have listed some guidelines and good practices for implementing service based systems. In their comparison of service-oriented architecture and object-oriented architecture, they state that as compared to objects, services are configurable and dynamically discoverable. An analytical comparison between the architectural styles can give vital insights and aid the decision making. Researchers have developed analytical models and methods for the comparison and selection of architectures. The premise of the works of Vijayalakshmi, Zayaraz and Vijayalakshmi (2010), Galster, Eberlein and Moussavi (2010), Wang and Yang (2012), is that new as well as existing architectures have to be rigorously evaluated for their conformance to requirements, as it directly affects the quality of the final software product. Their works are based on evaluating architectures according to a set of quality attributes or criteria. Associated with each attribute, is a preference coefficient or prioritization value which is used for relative ranking between the architectural styles. 2.2.2 Service Oriented Architecture Service Oriented Architecture (SOA) is an architectural model which presents an approach for building distributed systems that deliver application functionality as services to either end-user applications or other services (Erl, 2005; OASIS, 2006; Valipour, AmirZafari, Maleki, & Daneshpour, 2009). …show more content…
Agents interact with each other using loosely coupled, coarse-grained, and autonomous components called services (Rotem-Gal-Oz, Bruno, & Dahan, 2012). SOA has emerged with potential to solve integration and reusability problems faced by large organizations (Woods & Mattern, 2006). Erl (2007) advocates the use of SOA for interoperability, reusability, and portability benefits which it offers. A service is a well-defined, self-contained, discoverable, callable, reusable unit of business functionality, defined using explicit interfaces, and invoked through common communication protocols. It has an interface and an implementation. The interface contains the identity of the service, the format of the input message, and the format of the response message. The implementation contains the functional or business logic of the service. The service consumer invokes a service using the interface. The implementation details are hidden from the service consumer. Services are provided by a service provider; which also provides the descriptions so that the consumers can access the services. Erl (2005) has defined several principles for service oriented programming. i. Loose Coupling: Services should be designed to minimize dependencies between the