On the knowledge required to understand a program

This paper is concerned with the units of knowledge used in understanding programs. A pilot study was conducted wherein a short, but complex, program was examined looking for knowledge atoms, the units from which program understanding is built. The resulting atoms were categorized along three orthogonal axes of knowledge type, design decision used, and the type of analysis required to uncover the atom. The results are discussed relative to several approaches to program understanding taken from the research literature.

[1]  Linda M. Wills,et al.  Using Attributed Flow Graph Parsing to Recognize Clichés in Programs , 1994, TAGT.

[2]  F. Grund Forsythe, G. E. / Malcolm, M. A. / Moler, C. B., Computer Methods for Mathematical Computations. Englewood Cliffs, New Jersey 07632. Prentice Hall, Inc., 1977. XI, 259 S , 1979 .

[3]  Mortimer J. Adler,et al.  How to Read a Book , 1940 .

[4]  Salwa K. Abd-El-Hafiz,et al.  A Knowledge-Based Approach to the Analysis of Loops , 1996, IEEE Trans. Software Eng..

[5]  John Edwin Hartman,et al.  Automatic Control Understanding for Natural Programs , 1991 .

[6]  Stanley Ian Letovsky,et al.  Plan analysis of programs , 1988 .

[7]  A. M. Turing,et al.  Computing Machinery and Intelligence , 1950, The Philosophy of Artificial Intelligence.

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

[9]  Elliot Soloway,et al.  Delocalized Plans and Program Comprehension , 1986, IEEE Software.

[10]  William R. Murray,et al.  Automatic program debugging for intelligent tutoring systems , 1987, Comput. Intell..

[11]  Michael A. Malcolm,et al.  Computer methods for mathematical computations , 1977 .

[12]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[13]  Nancy Pennington,et al.  Comprehension strategies in programming , 1987 .

[14]  RichCharles,et al.  Recognizing a Program's Design , 1990 .

[15]  Lee A. Gladwin,et al.  Intention-Based Diagnosis of Novice Programming Errors , 1987, IEEE Expert.

[16]  O. C. Juelich,et al.  Analysis of programs , 1973, CSC '73.

[17]  Ben Shneiderman,et al.  Software psychology: Human factors in computer and information systems (Winthrop computer systems series) , 1980 .

[18]  Spencer Rugaber An Example of Program Understanding , 1998 .

[19]  Donald E. Knuth,et al.  An empirical study of FORTRAN programs , 1971, Softw. Pract. Exp..

[20]  Alex Quilici A memory-based approach to recognizing programming plans , 1994, CACM.

[21]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[22]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[23]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[24]  Spencer Rugaber,et al.  Recognizing design decisions in programs , 1990, IEEE Software.

[25]  Elliot Soloway,et al.  Empirical Studies of Programmers: Second Workshop , 1991 .