It’s an open question, “What makes a good bug tracking system good?”, and one’s answer may well depend on your software life-cycle’s requirements. In this post I’ll outline one of the ‘must have’ features I recommend. This recommendation comes from my experience from working in both an open source and business driven development environment.
Developing software is no trivial task, one single line of code can break a project and lead to a killer bug that upsets your client which could lead them to pulling the plug on the project. I know this is a little dramatic; but, even with test driven development, pier programming and whatever ‘on point’ method is in vogue, bugs will still hit the production line. In fact the only certainty in software is that improvements can always be added. To our disappointment there is no silver bullet. Only through sheer determination and a bit of luck can you come close to catching every possible bug. A wise programmer once said, “Tests, proofs and reviews do not prove the absence of bugs, they only prove you haven’t found them yet!”.
To avoid the bug count increasing it is important to perform code reviews. Performing code reviews can be time consuming and requires a high level of pedantry. Source control systems such a subversion can be integrated with your bug tracking system. The power of being able to see which line(s) of code where changed to fix a bug is very powerful. It allows a developer to review the code within context. In fact, taking the ‘technical’ aspects of a source control away and presenting code comparisons within a GUI opens up this process to more than just the development team. Testers, project managers, reviews, packagers can all see and potentially spot a flaw in the code. Powerful indeed! It also helps focus the team on the exact location of the change – down to file name and line numbers: saving the team the pain of thrashing around in the depths of the code to reveal the differences. Having this information to hand can greatly improve the code review process.
The following screenshot shows an example of such an interface:
Some ‘off the shelf’ bug tracking systems which are open source have this feature built in – one of which is the gForge product.
I’d like to hear about your killer feature, so please post your comments and recommendations below.