There is an old saying in software development circles which goes something like this, “A bug can never be created nor destroyed. It can only be changed from one form to another.” While that is not to be taken too literally, bug fixes do often lead to regressions that are difficult to track down and fix. Especially the ones that occur at the end of release cycles, or the worst ones that occur at the end user’s or the customer’s machines. Well not if two researchers, Chad Sterling and Ron Olsson, from UC Davis have their way.
Their research has lead to the creation of a new technique in debugging software which reduces a large piece of software into smaller fragments called “variants” which are then used to track down the bugs (reference). The technique is called “chipping”. They have even developed a software (“chipper”) called ChipperJ in Java that they claim reduced a large program down to 20 to 35 % of it’s size. I have no idea how the program does this but apparently it uses the original software code to do it. While it is debatable if and how such a system would apply to industry level software that spans more than million lines of code, it is certainly something to be interested in if you are a developer. While the technique may not remove the human factor all together from the process of debugging, it certainly is a novel idea that could push automated testing to another level.
The authors of the ChipperJ program seem to suggest that their system could be applied to large and complex projects. Their research paper does provide interesting insights into the method. The authors are of the view that their paper is just a preliminary draft of what promises to be a new approach to debugging software. The method, they claim can be combined with other more traditional methods like “slicing” in the debugger to get even better results.