About Fixie

Software is now at the heart of almost everything we do in the world. This software remains largely handmade, and as such, is prone to defects. Testing detects only a sub-set of software defects with the rest laying dormant, sometimes for years. When these defects emerge in software systems the safety and business consequences can be severe. Software failures and their damaging consequences are regularly reported in the press. Finding and fixing defects has been an intransigent problem over many years. The traditional approach to this problem relies on finding defects during testing then developers manually fixing those defects afterwards.

In this project we establish a new technique to automatically fix predicted defects in software code before testing. We use machine learning-based defect prediction information to generate automatic fixes using Genetic Improvement. Our approach aims to offer developers effective fixes to code which is predicted as defective. A higher proportion of the fixes our approach offers to developers should be acceptable, generated quicker and available earlier in the development cycle than previous attempts at automated repair. Importantly, our approach targets a wider pool of defects as it specifically includes targeting those dormant defects which are not identified by testing.

Using our approach the developer will always remain in control of the code produced. Fixes are suggested, and the developer is the 'gate-keeper', deciding if a suggested fix is accepted, rejected, or can itself be modified to improve the code. One of the tangible outputs of the project will be a defect fixing tool (Fixie), which will provide support to developers in their daily coding activities. The tool will be developed in collaboration with several industrial partners and will be empirically evaluated throughout the project.