Lay summary
Successful software systems are under constant pressure to adapt to changing circumstances. Software adaptations take many forms, are of varying granularity, and may need to take effect over extreme variations in time scale. Running software systems are often subject to fine-grained, short-term adaptation to available resources and run-time context. Modest requirements changes typically provoke medium-grained, medium and long-term evolution of software source code, with consequent short-term adaptation of running software. Deeper requirements changes can provoke coarse-grained, long-term adaptation at the architectural level. In this project we propose to explore the following approaches to synchronize models and code: - Dynamic meta-objects: A running system should be able to dynamically respond to changes in its environment (fine-grained and short-term adaptations). Dynamic meta-objects will manipulate high-level representations of an object's behavior, they can be introduced on a per-object basis, and they can be composed to address multiple adaptations at a time. - First-class, active contexts: A software system needs to be able to locally and incrementally update code and program state (medium-grained and medium-term adaptations). Instead of placing strict barriers between software components of different versions, we propose to associate versions to first-class, active contexts. A running object that enters such a context may need to be dynamically updated to reflect different versions of interfaces, behavior, or even state. - Linked, active source code: Current software development tools fail to address synchronization of code shared between independent systems (medium-grained and medium-term as well as long-term adaptations). Instead of treating software source code as passive text, we propose a novel approach in which source code is linked to other source code, to other relevant semantic information, and to high-level models. - Polyglot systems modeling and analyses: Novel analyses are needed to help software architects assess the impact of changes (coarse-grained and long-term adaptations). We then to research novel metrics-based visualizations to support analyses such as the detection of architectural patterns. Further details are available on the project's web site: http://scg.unibe.ch/research/snf10