Identifying the mechanisms driving code inspection costs and benefits

Software inspections have long been considered to be an effective way to detect and remove defects from software. However, there are costs associated with carrying out inspections and these costs may outweigh the expected benefits. It is important to understand the tradeoffs between these costs and benefits. We believe that these are driven by several mechanisms, both internal and external to the inspection process. Internal factors are associated with the manner in which the steps of the inspection are organized into a process (structure), as well as the manner in which each step is carried out (technique). External ones include differences in reviewer ability and code quality (inputs), and interactions with other inspections, the project schedule, personal calendars, etc. (environment). We started a study to identify the mechanisms that strongly influence an inspection's costs and effectiveness. Most of the existing literature on inspections have discussed how to get the most benefit out of inspections by proposing changes to the process structure, but with little or no empirical work conducted to demonstrate how they worked better and at what cost. We hypothesized that these changes will affect the defect detection effectiveness of the inspection, but that any increase in effectiveness will have a corresponding increase in inspection interval and effort. We evaluated this hypothesis with a controlled experiment on a live development project at Lucent Technologies, using professional software developers. We found that these structural changes were largely ineffective in improving the effectiveness of inspections, but certain treatments dramatically increased the inspection interval. We also noted a large amount of unexplained variance in the data suggesting that other factors must have a strong influence on inspection performance. On further investigation, we found that the inputs into the process (reviewers and code units) account for more of the variation than the original treatment variables, leading us to conclude that better techniques by which reviewers detect defects, not better process structures, are the key to improving inspection effectiveness.

[1]  Edward F. Weller,et al.  Lessons from three years of inspection data (software development) , 1993, IEEE Software.

[2]  R BasiliVictor,et al.  Comparing the Effectiveness of Software Testing Strategies , 1987 .

[3]  Harlan D. Mills,et al.  Understanding and Documenting Programs , 1982, IEEE Transactions on Software Engineering.

[4]  Robert B. Grady,et al.  Key lessons in achieving widespread inspection use , 1994, IEEE Software.

[5]  Peter J. Middleton,et al.  Software Inspection , 1994, J. Inf. Technol..

[6]  Dewayne E. Perry,et al.  Understanding and Improving Time Usage in Software Development , 1995 .

[7]  Trevor Hastie,et al.  Statistical Models in S , 1991 .

[8]  B BisantDavid,et al.  A Two-Person Inspection Method to Improve Programming Productivity , 1989 .

[9]  Marilyn W. Bush,et al.  Improving software quality: the use of formal inspections at the Jet Propulsion Laboratory , 1990, [1990] Proceedings. 12th International Conference on Software Engineering.

[10]  J. Valacich,et al.  Computer brainstorms: More heads are better than one. , 1993 .

[11]  John C. Knight,et al.  An improved inspection technique , 1993, CACM.

[12]  Glen W. Russell,et al.  Experience with inspection in ultralarge-scale development , 1991, IEEE Software.

[13]  Dewayne E. Perry,et al.  Software Faults in Evolving a Large, Real-Time System: a Case Study , 1993, ESEC.

[14]  David W. Scott The New S Language , 1990 .

[15]  David S. Rosenblum Towards A Method Of Programming With Assertions , 1992, International Conference on Software Engineering.

[16]  Michael E. Fagan Advances in software inspections , 1986, IEEE Transactions on Software Engineering.

[17]  David S. Rosenblum,et al.  A study in software process data capture and analysis , 1993, [1993] Proceedings of the Second International Conference on the Software Process-Continuous Software Process Improvement.

[18]  Kenneth H. Pollock,et al.  Modeling capture, recapture, and removal statistics for estimation of demographic parameters for fish and wildlife populations : Past, present, and future , 1991 .

[19]  K. Burnham,et al.  Estimation of the size of a closed population when capture probabilities vary among animals , 1978 .

[20]  Lawrence G. Votta,et al.  Does every inspection need a meeting? , 1993, SIGSOFT '93.

[21]  James H. Dobbins Inspections as an up-front quality technique , 1998 .

[22]  Daniel Jackson ASPECT: an economical bug-detector , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[23]  Sidney Addelman,et al.  trans-Dimethanolbis(1,1,1-trifluoro-5,5-dimethylhexane-2,4-dionato)zinc(II) , 2008, Acta crystallographica. Section E, Structure reports online.

[24]  A. R. Ilersic,et al.  Research methods in social relations , 1961 .

[25]  L. G. Votta,et al.  Organizational congestion in large-scale software development , 1994, Proceedings of the Third International Conference on the Software Process. Applying the Software Process.

[26]  David Lorge Parnas,et al.  Active design reviews: principles and practices , 1985, ICSE '85.

[27]  Lionel E. Deimel,et al.  Applying program comprehension techniques to improve software inspections , 1994 .

[28]  B. Curtis,et al.  Substantiating programmer variability , 1981, Proceedings of the IEEE.

[29]  John C. Kelly,et al.  An analysis of defect densities found during software inspections , 1992, J. Syst. Softw..

[30]  Wei-Tek Tsai,et al.  Distributed, collaborative software inspection , 1993, IEEE Software.

[31]  Philip M. Johnson An instrumented approach to improving software quality through formal technical review , 1994, Proceedings of 16th International Conference on Software Engineering.

[32]  Lawrence G. Votta,et al.  Assessing Software Designs Using Capture-Recapture Methods , 1993, IEEE Trans. Software Eng..

[33]  Stephen G. Eick,et al.  Seesoft-A Tool For Visualizing Line Oriented Software Statistics , 1992, IEEE Trans. Software Eng..

[34]  Gerald M. Weinberg,et al.  Reviews, Walkthroughs, and Inspections , 1984, IEEE Transactions on Software Engineering.

[35]  Victor R. Basili,et al.  A Methodology for Collecting Valid Software Engineering Data , 1984, IEEE Transactions on Software Engineering.

[36]  E. P. Doolan,et al.  Experience with Fagan's inspection method , 1992, Softw. Pract. Exp..

[37]  Stephen G. Eick,et al.  Estimating software fault content before coding , 1992, International Conference on Software Engineering.

[38]  J. Christopher Ramming,et al.  Two Application languages in software production , 1994 .

[39]  Robert N. Britcher Using inspections to investigate program correctness , 1988, Computer.

[40]  John M. Chambers,et al.  Graphical Methods for Data Analysis , 1983 .

[41]  David N. Card,et al.  Evaluating Software Engineering Technologies , 1987, IEEE Transactions on Software Engineering.

[42]  Adam A. Porter,et al.  Comparing Detection Methods for Software Requirements Inspections: A Replicated Experiment , 1995, IEEE Trans. Software Eng..

[43]  F. MacDonald,et al.  A review of tool support for software inspection , 1995, Proceedings Seventh International Workshop on Computer-Aided Software Engineering.

[44]  Wei-Tek Tsai,et al.  An experimental study of fault detection in user requirements documents , 1992, TSEM.

[45]  Edward Yourdon,et al.  Structured walkthroughs , 1978 .

[46]  Dewayne E. Perry The inscape environment , 1989, ICSE '89.

[47]  Harvey Siy,et al.  An experiment to assess cost-benefits to inspection meeting and their alternatives , 1995 .

[48]  Priscilla J. Fowler In-process inspections of workproducts at AT&T , 1986, AT&T Technical Journal.

[49]  Gerald M. Weinberg,et al.  Handbook of Walkthroughs, Inspections, and Technical Reviews: Evaluating Programs, Projects, and Products , 1990 .

[50]  S. Siegel,et al.  Nonparametric Statistics for the Behavioral Sciences , 2022, The SAGE Encyclopedia of Research Design.

[51]  C. Chatfield Model uncertainty, data mining and statistical inference , 1995 .

[52]  Dewayne E. Perry,et al.  EMPIRICAL STUDY OF SOFTWARE INTERFACE FAULTS - AN UPDATE. , 1987 .