Analyzing, Capturing and Taming Software Change

Analyzing, Capturing and Taming Software Change is a project funded by the Swiss National Science Foundation (SNSF project # 200020-113342).

Funding: 260'152.— SFr.
Period: Oct 1, 2006 - Sept. 30, 2008


Software evolution; programming language design; reverse-engineering; change impact analysis; first-class contexts.


Complex software systems must change in order to keep pace with changing needs and requirements. Curiously, however, modern programming languages and environments provide little support for the fact that the systems being built will inevitably change. In fact, more emphasis is placed on mechanisms to enforce consistency and to limit the effects of change than on enabling change.

This research proposal targets the following questions:

To answer these questions, we propose to (i) introduce programming language constructs to package incremental modifications to complex software systems, and use these constructs to express both low-level (syntactic) and high-level (semantic) changes, (ii) develop a scoped approach to behavioural and structural reflection in which the visibility of reflective features, and thus of changes, can be controlled at a fine level of granularity, (iii) explore techniques for tracing the impact of changes back to their source by monitoring the flow of object references in a running system, and (iv) analyze the evolution of the software and related artifacts to identify higher-level semantic entities.

For more information, please consult the Research Plan of the project [pdf].

Intermediate Report

The intermediate report covers the period from Oct. 1, 2006 through Sept. 30, 2007.

Significant results have been achieved in the following four areas:

Final Report

The final report covers the period from Oct. 1, 2007 through Sept. 30, 2008.

In this project we investigated means to understand and enable the evolution of software systems. Some of the most significant results include: