Automated analysis and tooling for supporting software evolution




Zhu, Chenguang, Ph. D.

Journal Title

Journal ISSN

Volume Title



Software evolution plays a vital role in modern software development. As software systems become more sophisticated and involve more teams and organizations, the evolution of the code bases becomes increasingly frequent, introducing significant challenges to software maintenance and quality assurance. The challenges come from multiple aspects. On the one hand, it is essential to upgrade software components to maintain the health and functionality of code bases. On the other hand, correctly evolving software systems is a non-trivial task, as inappropriate upgrades can cause incompatibility issues. Furthermore, certain characteristics of code bases can increase the difficulty of updating software. Eliminating such characteristics is necessary to ease the maintenance and evolution activities. Our research consists of three techniques. First, we present CompCheck, an automated upgrade compatibility checking framework that generates incompatibility-revealing tests based on previous examples. Second, we introduce JUntangler, a dynamic approach for automatically untangling functionalities of Jupyter Notebooks. Third, we introduce Relancer, an automatic technique that restores the executability of broken Jupyter Notebooks by upgrading deprecated APIs. We instantiate the techniques in automated tools and evaluate them using real-world software projects. The experimental results demonstrate the effectiveness and efficiency of our techniques.


LCSH Subject Headings