Software bugs are expensive, costing companies billions of dollars in repairs, lawsuits and lost sales. A study in 2013 by University of Cambridge (UK) has estimated this cost to be 312 Billion dollars annually to the economy. Furthermore, the bugs are produced at a rate faster than developers can fix them. According to Cambridge study more than 50% of developers time is spent while debugging. Automatic program repair aims to remove bugs without or minimal human intervention. In this talk I will describe my work, done as part of my PhD dissertation, that utilizes state repair as the basis of automatic program repair. In a traditional debugging environment a developer manually traces the program for failing test input, at every control point in the program he explicitly or implicitly has an idea of program invariants that must be enforced, and he makes changes such that final desired state is reached without causing any other error. I will describe mechanical steps that an automatic program repair approach can use to mimic this behavior. Using our implementation we were able to repair errors in programs manipulating textbook data structures as well as open source programs like ANTLR and RayTrace.
Muhammad Zubair Malik earned his PhD in Software Engineering from the University of Texas at Austin in 2014 where he was part of the Center for Identity and the Center for Advanced Research in Software Engineering (Software verification, validation and testing group). His work focuses on applying machine learning and heuristics to program transformation and repair.