Context-aware applications monitor changes in their environment and switch their behaviour in order to continue satisfying requirements. Specifying monitoring and switching in such applications can be difficult due to their dependence on varying environmental properties. Two problems require analysis: the detection of changes in the operating environment to assess their impact on requirements satisfaction, and the adaptation of application behaviour to ensure requirements satisfaction.
This thesis borrows from the world of problem-oriented software system development and product-lines to analyse monitoring and switching problems on one hand and contextual changes on the other. It proposes a shift of focus from treating monitoring and switching as activities to be analysed as part of the design, to treating them as part of the problem whose requirements are analysed. We claim three novel contributions: (1) we provide concepts and mechanisms for analysing monitoring and switching problems in context; (2) we formulate and prove two theorems for monitoring and switching, which define the necessary and sufficient conditions for monitoring a contextual variable and for switching application behaviour to restore requirements satisfaction when they are violated; and (3) we provide a tool for automated derivation of the conditions for monitoring and switching.
Our approach is evaluated using two case studies of a proof of concept mobile phone productline and a logistics company that delivers and monitors products across the UK. We found the applications of the approach to be effective in analysing unforeseen requirements violations caused by changes in the systems operating environments. Furthermore, the monitoring and switching mechanisms derived from the analysis enabled the software to become, to some extent, context-aware