Service-Oriented Architecture (SOA) is an architectural style that emerged as the answer to the latest requirements for loosely-coupled distributed computing. Inline with the conventional distributed computing paradigm, functionality is decomposed into distinct architectural elements, distributed over the network. Nevertheless, in SOA the basic architectural elements (a.k.a services) are by themselves autonomous systems that have been developed independently from each other. We work on two areas in this domain :
Supporting Maintainability in Service-oriented Software. Until now, state of the art research in SOA systems has focused mostly on issues concerning the construction phase of service-oriented software. The outcome of these research efforts was mechanisms for discovering, composing and accessing available services. However, several other phases of the development process are currently underdeveloped. Specifically, we concentrate on the maintainability quality attribute. The importance of this issue is evident towards the success of the SOA paradigm, which promotes the development of software consisting of independently evolving basic engineering elements that may further vary in quality (e.g., performance, availability, reliability).
Reducing the Complexity of Service Substitution. Service substitution is a key issue towards dealing with the independent evolution of services along with their variation in quality (e.g., performance, availability, reliability). Research efforts that focus on service substitution can be divided in two categories: (i) abstraction-based and (ii) adapter-based approaches. While considering adapter-based approaches the following issue is raised: the effort and time required by the service substitution process scales up with the number of available services that should be examined as potential candidate substitutes of the target service. This problem is a serious drawback towards a practical service substitution approach if we consider that the service substitution process involves human intervention to validate the mapping between target and substitute services.Supporting Maintainability in Service-oriented Software. In conventional Object-Oriented (OO) software, maintainability can be improved by employing well known fundamental design principles such as OCP (Open Closed Principle), DIP (Dependency Inversion Principle) and LSP (Liskov Substitution Principle).We revisited these principles in the context of the SOA paradigm and argue about the need to adapt/refine them to the specificities that characterize the paradigm. Specifically, we: