Towards automation of checklist-based code-reviews

Different types of code-reviews (Fagan-style code-inspections, Parnas-like active design reviews and walkthroughs) have been found to be very useful in improving the quality of software. In many cases reviewers use checklists to guide their analysis during review sessions. However, valuable, checklist-based code-reviews have the principal shortcoming of their high costs due to lack of supporting tools enabling at least partial automation of typical multiple appearing rules. This paper describes an approach towards semi-automation of some steps of individual review processes based on checklists. The method proposed is interactive, i.e. reviewers will be enabled to actualize, extend, and check the consistency and redundancy of their checklists. The basic idea underlying the approach is the usage of a rule-based system, adapting concepts of the compiler theory and knowledge engineering, for acquisition and representation of knowledge about the program. Redundant and conflicting knowledge about the program under study is recognized and solved by means of an embedded truth maintenance system. As a result of fault diagnosis, rules for fault classification are used. Software reliability models are applied to validate the results of each review session. The approach has shown promising preliminary results in analyses of conventional C-programs developed in the automotive industry.

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

[2]  James F. Allen The RHET system , 1991, SGAR.

[3]  Alfred V. Aho,et al.  The Theory of Parsing, Translation, and Compiling , 1972 .

[4]  Ilkka Tervonen,et al.  Support for Quality-Based Design and Inspection , 1996, IEEE Softw..

[5]  Fevzi Belli,et al.  An environment for self-testing of logic programs , 1994, IEA/AIE '94.

[6]  Fevzi Belli,et al.  Determining the reliability of prolog programs , 1994, Softw. Test. Verification Reliab..

[7]  T. Amble Logic programming and knowledge engineering , 1987 .

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

[9]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[10]  Debra J. Richardson,et al.  An Analysis of Test Data Selection Criteria Using the RELAY Model of Fault Detection , 1993, IEEE Trans. Software Eng..

[11]  Thomas Gilb,et al.  Software Inspection , 1994 .

[12]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

[13]  James R. Lyle,et al.  A Two-Person Inspection Method to Improve Prog ramming Productivity , 1989, IEEE Transactions on Software Engineering.

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

[15]  Watts S. Humphrey,et al.  Managing the software process , 1989, The SEI series in software engineering.

[16]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[17]  Yishai A. Feldman,et al.  Seven Layers of Knowledge Representation and Reasoning in Support of Software Development , 1992, IEEE Trans. Software Eng..

[18]  Michael Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[19]  Johan de Kleer,et al.  Extending the ATMS , 1986, Artif. Intell..

[20]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[21]  Premkumar T. Devanbu,et al.  LaSSIE—a knowledge-based software information system , 1991, ICSE '90.