Benefits of Software Inspections

The main benefit of software inspections derive from the fact that they can be applied early in the software development process. The earlier a defect is found, the lower are the costs to repair a defect. Inspections can be executed once an intermediate artifact (e.g., a requirements document) is produced or even during the creation of such an artifact. Requirements, design, and code documents are typical documents inspections are applied on. However, the technique is basically applicable on all types of work-products created in a software development process (e.g., test cases, test plans, project plans, user documentation are further artifacts that can be inspected).

The goal of an inspection is to find defects and deficiencies in a work-product. Software inspections can be applied in every software development phase. Due to the fact that inspections can be applied early in the development process, quality problems can be found and corrected directly where they have been introduced. This is a great advantage compared to testing which can be applied late in the process, i.e., as soon as an executable form of the system is available.
The following figure shows a development process with and without inspections. In the upper part, no quality assurance is done before testing activities. Faults are not found until testing or maintaining the product (zone of chaos) because no early defect detection method is applied. So, faults could have been introduced in earlier phases and can affect all life-cycle products. Thus, correction of these faults can be very expensive dependent on the kind of defect. In the bottom part, inspections are applied and faults are found in the phases where they have been introduced. Thus, no zone of chaos exists. Therefore, one goal should be to focus inspection efforts to achieve a desired level of quality in the different work products.

Cost for Defect Removal: Normalized Cost for Defect Cost and Removal 

Second, testing often finds a failure first so that an identification of the applied fault has to be done. Hence, software inspections lead to a significant reduction of defect costs. The following figure shows how much a defect costs in the phase it is introduced and corrected and the increasing costs if it is later found in the development process. The most expensive faults are those ones that are introduced in the analysis phase and are found when the system is in use (e.g., an analysis defect costs 6 times more to correct if it is corrected in the system-in-use phase). In general, the cost of finding and fixing defects after delivery can be about 100 times more expensive than fixing those defects in early lifecycle stages.

 

Comparison 1: Comparison with/without Inspections 

Another figure extracted from Wheeler et al. [1] “shows typical spending-rate profiles for development projects with and without inspections. The taller curve shows increased spending early in the project, reflecting the time devoted to inspections. This curve then drops quickly through the testing phases. The broader curve, for projects that do not use inspections, shows lower initial spending but much higher spending through testing, reflecting the 44 percent rework being done. The area under the inspection curve, representing total development cost, is approximately 30 percent less than the area under the non-inspection curve.”

 

Comparison 2: Comparison with/without inspections 

Moreover, inspections can improve the communication and transparency within a development team and thus, enhance the maintainability of the software.
To introduce inspections and obtain the mentioned advantages, some initial effort has to be invested. This can, for example, concern adapting the actual quality assurance process or result in training effort for participants of the inspection.

 

Benefits:

  • Finding defects or faults
  • Improve Quality, e.g. coding style, best practises
  • Debugging
  • Education for Developers, training
  • Communication
  • Collect Data for Metrics

References