Innovation

Researchers Invent Automated Software Patching Technique

Matt Broersma is a long standing tech freelance, who has worked for Ziff-Davis, ZDnet and other leading publications

Google + Linkedin Subscribe to our newsletter Write a comment

MIT researchers say their machine-learning technique achieves results 10 times better than previous automated methods

Researchers at the Massachusetts Institute of Technology (MIT) say they have built a machine-learning system that creates automatic software patches with a success rate 10 times that of existing automation techniques, a development they say could have a broad impact on software engineering.

In tests, the system, called Prophet, was able to repair between 15 and 18 bugs in a set of programming errors, compared with only one or two using previous automated bug-repair techniques, MIT said.

Engineering implications

women code database programming tech © Semisatch ShutterstockMIT professor of electrical engineering and computer science Martin Rinard, whose group developed the new system, said Prophet’s success indicates that correct, working code has properties that can be recognised and used to evaluate any software, something he said could have wider implications for computer engineering.

“This is just the first application of what we hope will be a brand-new, fabulous technique,” Rinard said in a statement released by MIT.

Prophet builds on previous research by MIT graduate student Fan Long, who presented a paper describing the system, co-authored with Rinard, at the Symposium on Principles of Programming Languages last month.

Long had developed an algorithm that guided proposed fixes for buggy code, but it was prohibitively slow to generate a number of such fixes and then test them all. Prophet uses its machine-learning technique to predict which fixes are likely to be correct before beginning time-consuming testing, MIT said.

Machine learning

The system attempts to evaluate whether code is correct or buggy by examining the characteristics of values stored in memory, and determining which combination of these characteristics most consistently predicts the success of a patch.

“Typically, there will be good connections in the correct patches, corresponding to useful or productive program logic,” Long stated. “And there will be bad patterns that mean disconnections in program logic or redundant program logic that are less likely to be successful.”

Researchers tested the system on a set of 69 errors drawn from eight popular open source programs, finding that 19 were able to be fixed using Long’s algorithm, while the other 50 presented more complex problems.

When Prophet was allowed to proceed with its first proposed fix, it was able to repair 15 of the 19 errors, and when it was allowed to spend 12 hours on each problem it repaired a total of 18.

Long said he is now working on a system that can handle more complex errors.

Google said last month that its AlphaGo artificial intelligence had successfully used machine-learning techniques to defeat Europe’s reigning human champion in five consecutive games of Go.

The AI was developed by UK-based DeepMind, acquired by Google in 2014.

Do you know all about Big Data and large-scale analytics? Take our quiz!