• DocumentCode
    44694
  • Title

    Automated Fixing of Programs with Contracts

  • Author

    Yu Pei ; Furia, Carlo A. ; Nordio, Martin ; Yi Wei ; Meyer, Bertrand ; Zeller, A.

  • Author_Institution
    Dept. of Comput. Sci., ETH Zurich, Zurich, Switzerland
  • Volume
    40
  • Issue
    5
  • fYear
    2014
  • fDate
    May-14
  • Firstpage
    427
  • Lastpage
    449
  • Abstract
    This paper describes AutoFix, an automatic debugging technique that can fix faults in general-purpose software. To provide high-quality fix suggestions and to enable automation of the whole debugging process, AutoFix relies on the presence of simple specification elements in the form of contracts (such as pre- and postconditions). Using contracts enhances the precision of dynamic analysis techniques for fault detection and localization, and for validating fixes. The only required user input to the AutoFix supporting tool is then a faulty program annotated with contracts; the tool produces a collection of validated fixes for the fault ranked according to an estimate of their suitability. In an extensive experimental evaluation, we applied AutoFix to over 200 faults in four code bases of different maturity and quality (of implementation and of contracts). AutoFix successfully fixed 42 percent of the faults, producing, in the majority of cases, corrections of quality comparable to those competent programmers would write; the used computational resources were modest, with an average time per fix below 20 minutes on commodity hardware. These figures compare favorably to the state of the art in automated program fixing, and demonstrate that the AutoFix approach is successfully applicable to reduce the debugging burden in real-world scenarios.
  • Keywords
    contracts; fault diagnosis; program debugging; program diagnostics; software tools; AutoFix approach; AutoFix supporting tool; automated program fixing; automatic debugging technique; commodity hardware; computational resources; contracts; debugging process; dynamic analysis techniques; fault detection; fault localization; general-purpose software fault fixing; high-quality fix suggestions; Automation; Contracts; Debugging; Indexes; Libraries; Software; Software engineering; Automatic program repair; contracts; dynamic analysis;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2014.2312918
  • Filename
    6776507