Hi-Fi - Widely Applicable and Usable Automated Program Repair
People
(Responsible)
Rezaalipour M.
(Collaborator)
Abstract
Programmers spend a disproportionate amount of time debugging - that is, fixing programming mistakes. While software engineering research has a long history of building tools that support them in individual debugging activities, only recently have the first techniques that completely automate the debugging process - from detecting an error to suggesting a source code patch that corrects it – been proposed. So-called “automated program repair” tools have shown promising results - fixing nontrivial bugs in real-world software – but remain limited in their overall applicability and usability: they can mainly build simple patches for low-level failures using “best effort” techniques, which provide no reliable way of assessing the quality of their fix suggestions without explicit time-consuming manual analysis.
In order to address these outstanding limitations, the overarching goal of project Hi-Fi is boosting the applicability and practical usability of automated program repair in realistic programming environments. Work is organized into complementary research tracks. - T1: applicability addresses the challenge of extending the scope of applicability by finding novel, well-defined program domains where automated program repair can be put to work effectively and generate complex high-quality fixes. In particular, we plan to investigate automated repair of inheritance-related bugs in object-oriented programs, and of partial-definition bugs in functional programs. - T2: usability addresses the challenge of improving the overall usability of automated program repair by integrating it closely within the software developer’s standard toolset - making it a reliable component of recommendation systems. In particular, we plan to combine static and dynamic techniques to improve precision and reliability, and to revise the standard approaches to automated program repair in order to support interactive and context-dependent usage.
This project’s research has a significant potential for impact: the research community’s interest in automated program repair is growing at a fast pace, galvanized by the promising results of the last few years (to which the applicant has made important contributions). The relevance of Hi-Fi’s research is both practical and foundational: we will combine heterogeneous software analysis techniques in original ways; and develop tools that provide programmers with concrete, practical help to write better, more correct software. The project’s results will be disseminated by publication in major software engineering, programming languages, and formal methods conferences and journals. The automated program repair tools implemented as part of the project will target widely used programming languages and environments, and will be distributed publicly as open source.