Improving software quality

There are several ways to evaluate software quality such as how well it meets requirements, how useful to users, and the number of defects found during testing. However, to many software developers, quality is usually the last thing they check before release to customer. Most quality checks are done during testing phase and it is usually too late. The early you can identify defect, the easier and less costly to fix a defect. According to several studies, every time a defect passes into the next phase, it increases the complexity by a factor of 5 and the fixing cost by a factor of 10. For example, a defect costs $1 to fix in requirements phase will cost $10 to fix in design phase, $100 to fix in coding phase and $1000 to fix during testing phase and $10,000 to fix after release to customer.

Since a wrong requirement can increase complexity in design and code many times, by monitor quality throughout the development process, project managers can decide whether to continue the development or redesign and correct defects instead. Sometime it is better to restart the project rather than continue to fix defect as the software is too complex and difficult to change. During software development phases, project manager must have the ability to track defects in each phase in order to judge the quality of the software at any given time. At the end of each phase, project manager must evaluate both the quality and the completeness to determine whether the project should move to the next phase or not. The best way is to use checklists at the end of each lifecycle phase.

When a defect has been found, project manager must record it in a defect log. It will be assigned a number that allows it to be referenced from creation through resolution. It is important that the defect be given some type of priority that reflects its severity. This priority will determine when it needs to be fixed and whether the defect is serious enough to impact the schedule. Each defect should be assigned to a developer to fix and after it is fixed, quality assurance must make sure that it is fully tested and record the status in the defect log (Open, close). Another important quality factor is the rate at which defects are found. Typically a high find rate is expected during early phases of development, the rate should decrease over time as many of them have been fixed.

Project manager must also evaluate the causes of defects to determine which of its software functions or modules have the most defects. By knowing these error-prone area, manager can take action such as increase more testing in certain areas of the code; redesign a function or module; or assign more experienced developers to work on defect-prone areas.

Companies that track defects and organize them based on severity, priority and other criteria can improve their quality significantly. By constantly evaluate quality at any given time in the development lifecycle, they can improve their quality and reduce defects with greater confidence, knowing that every effort has been made to find and fix defects.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University