ReSCUE: Reliable Software Composition in Ubiquitous Environments
Building software systems as a combination of interacting software entities (components, services, etc) is a central issue in the Software Engineering community, improving productivity as it enables the reuse of existing software entities. In such a way, application development is mainly concerned with the selection and composition of different pieces of software rather than with the programming of applications from scratch. Moreover, during the last few years we have witnessed a boost in the use of ubiquitous or pervasive computing, where devices and applications dynamically find and use services from their environment. Although many technologies are already available to make pervasive applications work such as wireless networks (using WiFi or Bluetooth), or recent PDAs and BlackBerries, software aspects are not able to ensure a transparent interaction with any new service coming with its own specificities which may be not expected by the application as available on the user device. In fact, the problem of adapting heterogeneous software components and services which present some behavioral mismatch is recognized as one of the main open problems in Software Engineering. Although there is no a general solution for this kind of problem, we can find situations in which the apparent incompatibility between the interaction protocols of two (or more) components can be solved. Another relevant problem which will be covered by the current proposal is the verification of those software systems such as they were defined, and characterized by their capability to be dynamically adapted when the environment changes in the context of long-lived systems. One of the most substantial properties that must be guaranteed by any adaptation process is maintaining the robustness of the global behaviour and preserving certain properties of reliability and performance.
The general objective of the current proposal is the definition of a development environment to compose reliable software on mobile devices for ubiquitous environments. To do this, the team will follow an approach based on the use of lightweight formal methods, such as it was made in the past by the research team in the context of previous projects. More specifically, methods, languages (notations) and tools (prototypes) will be developed to support the composition of reliable software in ubiquitous environments, by using rigorous techniques.