News

Summary

Computing systems, specifically software systems, are prone to vulnerabilities which can be exploited. One of the key difficulties in building trustworthy software systems - is the lack of specifications, or intended behavior, or a description of how the software system is supposed to behave. In our work, we have developed semantic analysis techniques to extract or discover specifications from an erroneous or vulnerable program. Such a specification discovery process helps in automatically generating repairs, thereby moving closer to the goal of self-healing software systems. We have focused on specification inference from tests, and we are also looking into specification inference from other program artifacts. There exist exciting possibilities for combining semantics based repair approaches with search-based repair, and this is under investigation in our research team. We envision that automated repair capabilities should be integrated into programming environments in the future. Instead of treating the software as a passive entity which is validate, we view it as an active entity which heals itself thereby delivering higher trust and assurance.

State-of-the-art in Program Repair: Pictorial view derived from Communications of the ACM article 2019.


Key Works

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.

Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis (pdf)
Sergey Mechtaev, Jooyong Yi, Abhik Roychoudhury
ACM/IEEE International Conference on Software Engineering (ICSE) 2016.

DirectFix: Looking for Simple Program Repairs (pdf)
Sergey Mechtaev, Jooyong Yi, Abhik Roychoudhury
ACM/IEEE International Conference on Software Engineering (ICSE) 2015.

Automated Program Repair (pdf, video)
Claire Le Goues, Michael Pradel, Abhik Roychoudhury
Communications of the ACM (CACM), 62(12), December 2019.

Concolic Program Repair (pdf, tool, video)
Ridwan Shariffdeen, Yannic Noller, Lars Grunske, Abhik Roychoudhury
42nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) 2021.

Deductive Synthesis of Programs with Pointers: Techniques, Challenges, Opportunities (Invited Paper) (pdf)
Shachar Itzhaky, Hila Peleg, Nadia Polikarpova, Reuben Rowe, and Ilya Sergey
CAV 2021. LNCS, Vol. 12759, Pages 110–134. Springer.

Cyclic Program Synthesis (pdf)
Shachar Itzhaky, Hila Peleg, Nadia Polikarpova, Reuben Rowe, and Ilya Sergey
PLDI 2021. Pages 944–959. ACM.

Certifying the Synthesis of Heap-Manipulating Programs (pdf)
Yasunari Watanabe, Kiran Gopinathan, George Pîrlea, Nadia Polikarpova, and Ilya Sergey
Proc. ACM Program. Lang. 2021. Vol. 5, (ICFP), Pages 84:1–84:29. ACM.

Automated Repair of Heap-Manipulating Programs Using Deductive Synthesis (pdf)
Thanh-Toan Nguyen, Quang-Trung Ta, Ilya Sergey, and Wei-Ngan Chin
VMCAI 2021. LNCS, Vol. 12597, Pages 376–400. Springer.