One the most common reasons that IT projects end up exceeding their budgets is because of software bugs. And the problem with bugs is that you never really pay for them upfront; you normally pay for them after the code is written.
As mentioned in my last blog post, The True Cost of a Software Bug, catching bugs early in the software development life cycle can result in a higher return on investment (ROI). The cost of fixing a bug is dependent on what stage of development the bug is found in.
Here are the implications of each stage:
-
- Requirements
Cost = the time it takes to rewrite the requirement. - Coding
Cost = additional required developer hours.
Time varies based on complexity, but is less than fixing a bug found by someone else. When developers discovers their own bug, they already understand the problem and know how to fix it. - Code Integration:
Cost = additional required developer and other system engineer hours.
Time is usually at least twice as much, since the problem occurs at a higher level and there is a need to figure out which exact code or configuration is wrong. - Testing
Costs = additional required developer, system engineer, PM, and QA hours.
This now requires the QA tester to be able to reproduce and document the steps, submit a defect, prioritize the defect, and meet with developers to discuss. Once the developer has fixed the bug, the code needs to be integrated back into the test environment, where testing needs to be redone and the bug needs to be verified as fixed. The defect also needs to be tracked and updated in the defect tracking system. - User Acceptance Testing (UAT)
Cost = additional required developer, system engineer, PM, customer, and QA hours.
This now requires the user acceptance tester to be able to communicate the bug to the system tester. The system tester will try to reproduce the bug to decide if it’s a bug or if it’s working as designed. If the system tester cannot reproduce the bug, he or she will inform the user of their findings. If the system tester can reproduce the bug then he or she must document the steps, submit a defect, prioritize the defect, and meet with developers to discuss.Once the developer has fixed the bug, then the code needs to be integrated back into the test environment, where testing needs to be redone and the bug needs to be verified as fixed. The defect also needs to be tracked and updated in the defect tracking system. The code will then need to be redeployed to the UAT environment for user testing to continue.
- Requirements
-
- Production
Cost = developer, support, system engineer, PM, customer, and QA hours.
Usually a phone call comes to support, and they decide if it’s a bug or if it’s working as designed. The customer is notified, the PM is contacted, and then the process in the UAT stage is followed.
- Production
Most of the bugs found in the coding and requirements gathering phases can be substantially reduced by performing Agile methods such as defining acceptance criteria, unit testing, and doing test-driven development.