The need for a sound software engineering approach for situational software is motivated by two important trends that gained more and more momentum over the last years:
- The decentralization of computational power, which started with the advent of personal computers. Today, devices like mobile phones, PDAs, or cameras, are full-flegged small computers able to host and execute considerable computations. In addition, computational power is associated with (and hidden within) several devices and appliances, leading to the phenomenon of the disappearing
- The diffusion of-fixed and mobile-communication infrastructures allows the different devices to interact and exchange information. Mobile phones usually exploit high-speed dedicated technologies, like UMTS and HSDPA, but they are also often able to connect to WiFi networks. Other devices, like sensors and tags, communicate by means of other protocols, like ZigBee or UWB, and in the end the Internet always provides the glue to make all these elements interact and work together.
In terms of scale, we wish to deal with systems composed by a large number of nodes, as in the case of sensor networks and tags. Such systems are intrinsically heterogeneous-in terms of both nodes and communication infrastructures. The requirements we deal with specify behaviors that depend on continuous situational changes. The application must accommodate them automatically and seamlessly.
Finally, we will focus on systems that ask not only for high flexibility and continuous change, but also high dependability. This is another key challenge we will investigate in our research. According to conventional software engineering approaches, there are trade-offs between achieving flexibility and dynamic change, on one side, and dependability (and security) on the other. SMScom aims at reconciling them by keeping an explicit formal definition of dependability properties that must be assured by the system and using and enforcing it throughout all stages (from system design to operation).