Model-Driven Development of Families of Semantically-enabled Service-oriented Architectures
Stimulated by the huge wealth of opportunities for collaboration and communication offered by the World Wide Web and Internet technologies, there is today a rapidly growing demand for novel ways to integrate business processes in almost all sectors. A major goal is to provide flexible and effective methods to integrate the software systems of collaborating parties. Service-oriented architectures (SOAs) appear to be the most promising paradigm for distributed computing, by introducing new approaches to how software applications are designed, architected, delivered and used. According to the most commonly used definition, services, as the first-class citizens of SOAs, are autonomous, platform-independent computational elements that can be described, published, discovered, orchestrated and programmed using standard protocols for the purpose of building networks of collaborating applications distributed within and across organizational boundaries. The most mature realization of SOAs is Web services that provide the basis for the development and execution of business processes that are distributed over the network and available via a set of widely-accepted standards.
Success stories of the use of SOAs (such as Amazon and Google) demonstrate a high potential and standards offer a guaranty for industrial adoption. Yet, the technological realization of the vision is still in its infancy. One important aspect is to enable (semi-)automatic ways for discovery, composition, and monitoring of services shared by different parties. The Semantic Web (also known as Web 3.0) offers a promising solution to address the problems of automation by using formally defined relations among concepts (e.g., words) used by members of a community (e.g., pharmacists). Having in mind the lack of sound mechanisms for the design and development of SOAs, this additionally increases the level of complexity in the development process by introducing the need to use additional standards and technologies. This is why developers need methods to help them re-use the same design in cases when they need to rapidly develop SOAs that share a common set of characteristics, and yet allow for some variability. That is to say, developers need methods to design families of semantically-enabled SOAs.
The main goal of this project is to provide a set of software engineering methods for developing families of semantically-enabled SOAs. In this project, we will explore the use of a well-proven concept of software product lines (SPL) embraced by many well-known industrial players (e.g., Microsoft and Nokia), as the SPL approach can increase productivity by as much as five to ten times. Assuming that both the SPL and SOA approaches are based on re-usable software components, that is, core assets and services, this project will provide a set of methods for bridging the gap in their underlying development philosophies. SPLs use software components internally developed by following a well-defined methodology to precisely cover the domain of the SPL, while SOA is grounded on the idea of open integration of business processes by means of shared services. The originality of our proposal is in the use of ontologies to bridge this gap between the "open" SOA and "closed" SPL domains by leveraging ontologies' features to precisely and formally define a domain and yet allow for sharing domain knowledge between collaborating parties. To avoid the problem of the complexity stemming from the use of additional technology into the already overwhelmed set that SOA developers have to use, we propose the use of a novel software engineering discipline - Model-Driven Engineering (MDE). By using MDE, we enable designers to focus on solving domain-specific problems rather than on technical details of SOA, taking advantage of proven MDE benefits, including but not limited to, productivity and reliability. Yet, our SOAs will be compliant with standards (e.g., SAWSDL, WSDL, XML, and OWL) due to the use of MDE to automate the development process. However, the originality of our approach is that we integrate conceptualizations of "closed" SPL and "open" SOA domains. To support this idea, we will design a set of mechanisms that will allow for a synergetic use of proven modeling languages widely adopted by both the SPL and SOA communities to serve the task of designing families of semantically-enabled SOAs. We will also improve the quality of SOAs by providing additional verification mechanisms based on Semantic Web (service) reasoning. Moreover, our results have major potentials to trace a road for the wider and faster adoption of the next-generation SOAs based on advanced levels of automatic processing. As such, our results will provide software developers with methods to use proven software engineering practices for developing SOAs, and thus better respond to the rapidly growing demands of the service economy.