Contact Us


Programmers do not write programs entirely from scratch. Over time, a program gradually evolves from one program version to another. However, as software evolves from one version to another - testing/debugging to ensure that the program continues to meet its intended functionality is difficult. Validation of such evolving programs (say, to address possible bugs introduced via program changes) remains a huge problem in software development. This adds to the cost for software maintenance, which is much larger than the initial software development cost. The cost of maintaining a software and managing its evolution is said to account for more than 90% of the total cost of a software project, prompting authors to call it the "legacy crisis". In this project, we seek to develop testing and validation methods for evolving software to bring down such costs.

The main innovation of the proposed work lies in making testing/debugging methods change-aware. A commonly used terminology in software engineering is "regression testing" where a changed program version is tested to check for possible regressions (some functionality which worked earlier but is broken due to the changes). In practice, regression testing often amounts to re-testing, or testing a selected sub-set of tests. Ideally, as changes are made in the program, the test-suite should also evolve with the program - an aspect that we study in this project. Akin to regression testing, we also study regression debugging, where we root-cause the reason for any detected software regression. The innovative aspect of our proposed work in regression debugging lies in using symbolic execution based semantic analysis of the failed test case as opposed to enumerating the changes across program versions.


  • All RFpositions and RA  have been filled, as of now. . [Sept 2012].
  • Some of the positions have been filled for now, but one RA position, and one RF position is still open  [Oct 2011]
  • Our work on analysis of evolving programs has received a substantial grant from Ministry of Education ( Postdocs, RAs being recruited) [March 2011]



CoREBench: Studying Complexity of Regression Errors ( PDF )

Marcel Böhme, Abhik Roychoudhury

ACM International Symposium on Software Testing and Analysis (ISSTA) 2014.




Regression Tests to Expose Change Interaction Errors ( PDF )

Marcel Böhme, Bruno C.d.S. Oliveira, Abhik Roychoudhury

ESEC/FSE '13, Joint meeting of ACM SIGSOFT symposium and European conference on Foundations of software engineering, 2013



Expressing and Checking Intended Changes via Software Change Contracts ( PDF )

Jooyong Yi, Dawei Qi, Shin Hwei Tan, Abhik Roychoudhury

International Symposium on Software Testing and Analysis (ISSTA) 2013.



Partition-based Regression Verification ( PDF )

Marcel Böhme, Bruno C.d.S. Oliveira, Abhik Roychoudhury

ACM/IEEE International Conference on Software Engineering (ICSE) 2013.



SemFix: Program Repair via Semantic Analysis ( PDF )

Hoang D.T. Nguyen, Dawei Qi, Abhik Roychoudhury, Satish Chandra

ACM/IEEE International Conference on Software Engineering (ICSE) 2013.



Path Exploration based on Symbolic Output ( PDF )

Dawei Qi, Hoang D.T. Nguyen, Abhik Roychoudhury

ACM Transactions on Software Engineering and Methodology (TOSEM), To appear.



Software Change Contracts ( PDF )

Dawei Qi, Jooyong Yi, Abhik Roychoudhury

New Ideas and Emerging Results (NIER) Track,

ACM SIGSOFT Symposium on Foundations of Software Engineering (FSE) 2012.



Relating Software Validation to Technology Trends

Zhiming Liu, Abhik Roychoudhury

International Journal on Software Tools for Technology Transfer (STTT), Springer, To appear.



Modeling Software Execution Environment ( PDF )
Dawei Qi, William Sumner, Feng Qin, Mai Zheng, Xiangyu Zhang, Abhik Roychoudhury
19th IEEE Working Conference on Reverse Engineering (WCRE), 2012.

[FSE]  Path Exploration based on Symbolic Output  (PDF )
Dawei Qi, Hoang D.T. Nguyen, Abhik Roychoudhury
Joint meeting of ESEC and ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), ESEC-FSE 2011.

Locating Failure Inducing Environment Changes ( PDF )
Dawei Qi, Cristal Ngo, Tao Sun, Abhik Roychoudhury
10th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE) 2011.

[TOSEM-jnl] DARWIN: An Approach for Debugging Evolving Programs ( PDF  )
Dawei Qi, Abhik Roychoudhury, Zhenkai Liang, Kapil Vaswani
ACM Transactions on Software Engineering and Methodology, 21(3), 2012.

 Conference version:

      [SIGSOFT Distinguished paper award]

      Darwin: an approach for debugging evolving programs
Dawei Qi, Abhik Roychoudhury, Zhenkai Liang, Kapil Vaswani
ESEC/FSE '09 Proceedings of the the 7th joint meeting of the European software engineering conference and 
the ACM SIGSOFT symposium on The foundations of software engineering, 2009

+Current Members:

  • Faculty Member:

    Abhik Roychoudhury

  • Post-doctoral Research Fellows:

    Bruno Oliveira  (Senior Research Fellow 2012-13, joined Hon Kong University as Asst Prof from Sept 2013)

    Jooyong Lee  (Research Fellow)

  • PhD Students:

    • Dawei Qi (August 2008 - ) Dynamic Analysis based Debugging of Evolving Programs.

    • Marcel Böhme (August 2009 - ) : Testing of Evolving Programs.

    • Shin Hwei Tan (Aug 2012 - )
    • Sergey Mechtaev (Aug 2012 - ...)

  • Research Assistants


This project is funded by a substantial research grant from MOE (the Ministry of Education, Singapore) up to 2014. This support is gratefully acknowledged.

Contact Us
National University of Singapore   |   School of Computing   |   Ministry of Education