报告简介:
Debugging---the activity of finding and correcting errors in programs---is so everyday in every programmer's job that any improvement at automating even parts of it has the potential for a significant impact on productivity and software quality. While automation remains formidably difficult in general, the last few years have seen the first successful attempts at automatically generating fixes to errors in some situations.
In this talk, I will present techniques and a supporting tool, collectively referred to as AutoFix, that programmers can use to automatically fix errors in object-oriented programs with contracts (a.k.a. assertions). AutoFix takes a group of passing and failing test cases as input, with the failing ones revealing the fault to fix; it then analyzes the execution of the input tests, generates candidate fixes to the fault, validates the candidate fixes against a regression test suite, and ranks the valid fixes by preference before reporting them to the user. In the experiments conducted to evaluate AutoFix, it generated fixes that are genuine corrections of quality comparable to those competent programmers would write to 25% of the subject faults. AutoFix is integrated into the EiffelStudio IDE and functions like a recommendation system that is capable of automatically finding bugs and suggesting fixes in the form of source-code patches.
报告人简介:
Dr. Yu Pei is now an assistant professor at the Department of Computing in The Hong Kong Polytechnic University. Dr. Pei received his B.S. degree in Computer Science in 1999 and his first PhD degree in Engineering Science in 2004, both from Nanjing University. From 2004 to 2009, he was an assistant professor at the Faculty of Information Technology, Macau University of Science and Technology. In 2015, he obtained his second PhD in Computer Science from ETH Zurich, Switzerland. Dr. Pei's primary research goals are aimed at facilitating the production of high quality software systems in the real world. His future research plans are directed towards advancing the techniques to automatically test and repair software systems developed in mainstream programming languages and providing tool support for their practical application.