Automatic debugging of software
Computer programs often contain defects, or bugs, that need to be found and repaired. This manual "debugging" usually requires valuable time and resources. To help developers debug more efficiently, automated debugging solutions have been proposed. One approach goes through information available in bug reports. Another goes through information collected by running a set of test cases. Until now, explains David Lo from Singapore Management University's (SMU) School of Information Systems, there has been a "missing link" that prevents these information gathering threads from being combined.
Dr Lo, together with colleagues from SMU, has developed an automated debugging approach called Adaptive Multimodal Bug Localisation (AML). AML gleans debugging hints from both bug reports and test cases, and then performs a statistical analysis to pinpoint program elements that are likely to contain bugs.
"While most past studies only demonstrate the applicability of similar solutions for small programs and 'artificial bugs' [bugs that are intentionally inserted into a program for testing purposes], our approach can automate the debugging process for many real bugs that impact large programs," Dr Lo explains. AML has been successfully evaluated on programs with more than 300,000 lines of code. By automatically identifying buggy code, developers can save time and redirect their debugging effort to designing new software features for clients.
Dr Lo and his colleagues are now planning to contact several industry partners to take AML one step closer toward integration as a software development tool.
Dr Lo's future plans involve developing an Internet-scale software analytics solution. This would involve analysing massive amounts of data that passively exist in countless repositories on the Internet in order to transform manual, pain-staking and error-prone software engineering tasks into automated activities that can be performed efficiently and reliably. This is done, says Dr Lo, by harvesting the wisdom of the masses – accumulated through years of effort by thousands of software developers – hidden in these passive, distributed and diversified data sources.