Project

Back to overview

Hi-Fi: Widely Applicable and Usable Automated Program Repair

Applicant Furia Carlo Alberto
Number 182060
Funding scheme Project funding (Div. I-III)
Research institution Istituto del Software (SI) Facoltà di scienze informatiche
Institution of higher education Università della Svizzera italiana - USI
Main discipline Information Technology
Start/End 01.10.2018 - 30.09.2022
Approved amount 476'106.00
Show all

Keywords (4)

software debugging; software engineering; automated program repair; dynamic program analysis

Lay Summary (Italian)

Lead
La gran parte del tempo di lavoro dei programmatori non è speso a introdurre nuove funzionalità bensì in una indefessa attività di debugging: scovare e rettificare errori e difetti del software (colloquialmente chiamati “bug”). Il progetto Hi-Fi vuole sviluppare tecniche di ingegneria del software per automatizzare il più possibile l’intero processo di debugging. Le tecniche sviluppate di Hi-Fi avranno il potenziale di snellire il lavoro di correzione di bug dei programmatori, lasciandoli liberi di concentrarsi su attività di alto livello e più cruciali per il corretto funzionamento del software.
Lay summary
Nonostante l’indubbio progresso nelle tecniche e nella pratica dell’ingegneria del software, la gran parte del tempo di lavoro dei programmatori non è speso a introdurre nuove funzionalità bensì in una indefessa attività di debugging: scovare e rettificare errori e difetti del software (comunemente e colloquialmente chiamati “bug”). C’è un grande interesse per tecniche e strumenti che possano facilitare il debugging, aiutando i programmatori nella loro lotta quotidiana contro i bug.

Il progetto Hi-Fi si colloca in questo contesto, con l’obiettivo primario di sviluppare tecniche innovative di correzione automatica di programmi (in inglese: automated program repair). L’idea alla base di queste tecniche è di automatizzare il più possibile l’intero processo di debugging, dall’individuare un errore, allo scovarne la probabile causa, fino al suggerire una modifica del codice sorgente che rimuova il comportamento scorretto senza alterare altre funzionalità. Le tecniche di correzione proveranno a generare automaticamente diverse varianti del programma. Se una di queste varianti non presenta difetti ed è immune al bug inizialmente considerato, possiamo proporla come suggerimento a un programmatore che deciderà se è una correzione adeguata che può essere adottata in un contesto più ampio.

Le tecniche sviluppate di Hi-Fi hanno il potenziale di snellire il lavoro di correzione di bug dei programmatori, specialmente nelle parti più ripetitive, lasciandoli liberi di concentrarsi su attività di alto livello e più interessanti. Allo stesso tempo, automatizzare, anche in parte, la correzione di bug può aiutare ad avere software di qualità più elevata — un requisito impellente visto il ruolo sempre più ubiquo del software nel gestire dispositivi, processi, e organizzazioni.
Direct link to Lay Summary Last update: 05.03.2019

Responsible applicant and co-applicants

Employees

Associated projects

Number Title Start Funding scheme
134974 Large Scale Automatic Testing 01.06.2011 Project funding (Div. I-III)

Abstract

Programmers spend a disproportionate amount of time debugging - that is,fixing programming mistakes. While software engineering research has along history of building tools that support them in individualdebugging activities, only recently have the first techniques thatcompletely automate the debugging process - from detecting an error tosuggesting a source code patch that corrects it - beenproposed. So-called “automated program repair” tools have shownpromising results - fixing nontrivial bugs in real-world software - butremain limited in their overall applicability and usability: they canmainly build simple patches for low-level failures using “best effort”techniques, which provide no reliable way of assessing the quality oftheir fix suggestions without explicit time-consuming manual analysis.In order to address these outstanding limitations, the overarchinggoal of project Hi-Fi is boosting the applicability and practicalusability of automated program repair in realistic programmingenvironments. Work is organized into complementary researchtracks.- 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: theresearch community’s interest in automated program repair is growingat a fast pace, galvanized by the promising results of the last fewyears (to which the applicant has made important contributions). Therelevance of Hi-Fi’s research is both practical and foundational: wewill combine heterogeneous software analysis techniques in originalways; 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 majorsoftware engineering, programming languages, and formal methodsconferences and journals. The automated program repair toolsimplemented as part of the project will target widely used programminglanguages and environments, and will be distributed publicly as opensource.
-