RECOCO: Reflective Reconfiguration Support for Context-dependent Software Updates
Ensuring that software can display different behavior in different use contexts requires adapting software at runtime in dynamically created scopes (e.g. in a thread, in a client session, in a collaboration). Context-Oriented Programming (COP) [12]offers dedicated language constructs for performing such dynamically scoped adaptations. However, like any dynamic software adaptation technique, COP hits a conceptual barrier when new variations of existing program entities are integrated into a running system: Although dynamically scoped adaptations inherently preserve some structural integrity requirements [5], global state consistency requirements [6] cannot be automatically ensured. Managing dynamically scoped adaptations therefore requires additional application-specific logic from within the system itself. Currently this application-specific logic must be added by the programmer in an ad-hoc way, which pollutes the system's design. The aim of this project is two-fold: (i) the description of the foundations of context-oriented programming that allows systematic reasoning about system-wide consistency in the presence of dynamically scoped adaptations, and (ii) based on this foundation, the creation of a reflective architecture for context-oriented programming languages that accommodates implementing application-specific policies for dealing with consistency conflicts.