CW 405

Yves Vandewoude, Yolande Berbers
DeepCompare: static analysis for runtime software evolution

Abstract

Due to their modular design, component based applications are relatively well suited to support runtime evolution. However, replacing a component at runtime without halting the application remains a difficult task. The main cause of this complexity can be found in transferring the state between two versions of a component. We have developed a methodology to perform runtime adaptations on component-based applications. This paper shortly introduces our methodology, and then continues with a detailed study of our approach to state transfer. By exploiting the strong encapsulation of components, we conduct an analysis of the (object-oriented) source code of different versions of a component. A classification is presented which introduces different categories of changes, according to the impact of the change on the set of objects that make up the component. We then describe different heuristics that are used to identify equivalent data structures between different versions. We show how these techniques are implemented in a tool called \deepcompare . An evaluation of our tool on two examples (an academic toy-component and a real-live application), demonstrates that our process successfully identifies the vast majority of corresponding structures in a typical evolution scenario.

report.pdf (587K) / mailto: Y. Vandewoude