The development of distributed reactive systems
is a complex and error-prone process. These systems consist of many separate autonomous
components that operate concurrently
and continuously interact with each other and with the environment in order to deliver services
to the end-users. These systems are becoming more and more sophisticated, providing an ever expanding portfolio of services. In many cases new and customizable services are considered the key to increased revenues. Being able to rapidly develop and incrementally deploy such services, while avoiding undesired interactions with already existing services, therefore becomes strategically important.
In this thesis we present a service-oriented
approach to engineering distributed reactive systems. The approach integrates model creation and analysis tightly. Services are explicitly modeled as collaborations between roles, using UML 2 collaborations. These offer powerful means to structure and reuse crosscutting system behavior, and to provide a high-level overview of it. Complex collaborations can be composed from more elementary ones, whose behavior can be completely described using sequence diagrams. The full behavior of a composite collaboration can in turn be described using a choreography graph
, which defines the global execution ordering of its sub-collaborations.For each service collaboration, the state machine behavior of its roles can be automatically synthesized. These roles are then assigned to the components that will play them. The subsequent composition and coordination of such roles to form complete component behavior may call for human assistance.
Having confidence in the correctness of the models being created is important.For that reason we identify some good practices in service modeling. We also propose early analysis techniques that help to uncover undesired or overlooked behaviors at two critical points during the modeling process. First, each service model is analyzed separately in search of realizability
problems. That is, pathologies that may cause the joint behavior of the set of distributed roles synthesized from the service model to be different from the global behavior specified in the model. We provide algorithms to detect some realizability problems. Moreover, we discuss the actual nature of those problems and their underlying causes. This is important not only to adopt the most appropriate resolution when problems are detected, but also to avoid them in the first place. Second, the potential interactions between the roles that any component may play are analyzed, in order to adopt appropriate coordination measures.
Finally, we recognize that service discovery and adaptation, and service personalization based on the service context and end-user preferences are increasingly important mechanisms. In this area we present policy-based mechanisms
to allow personalization of services and runtime adaptation.
- 20 Nov 2009