|Thesis abstract: |
Over the last few years, self-adaptive software became increasingly important to design complex systems which require less human intervention and to manage devices, such as smartphones, which are naturally subject to context changes. Traditional approaches to self-adaptation encompass software architectures, middleware and design patterns.
In this research we explore the use of ad-hoc programming language abstractions to support self-adaptive software. We analyze the support that existing languages provide for self-adaptation, with a particular focus on the context-oriented programming paradigm (COP).
We design a context-oriented language which specifically addresses some know issues in the COP field, such as synchronous context provisioning, consistency across behavioral variations, and unforeseen adaptation. We contribute to the adoption of context-oriented languages by developing an efficient contextual extension to Java which improves the compatibility of COP with the existing tool
ecosystems. Finally, we propose and validate a conceptual framework to integrate COP and autonomic computing, a recent research field aimed at reducing human intervention in complex systems.