Helping programmers understand computer programs: the use of metacognition

A large portion of computer programmers' efforts to maintain, test, and debug computer programs is spent understanding, or comprehending, the existing program. Current theories of program comprehension have not considered the circumstances that cause programmers to use different approaches to understanding programs. Metacognition may provide some insight into the comprehension process. Metacognition is a psychological terms that refers to "one's knowledge concerning one's own cognitive processes" (Flavell, 1976) and influences the execution of cognitive tasks. Through metacognition, a person confronting a cognitive task can select a strategy, and then monitor and regulate their progress on a task.This study investigates the use of metacognition by programmers to purposefully (deliberately) choose a comprehension strategy. The results of this study support the view that programmers use metacognition when studying computer programs. Specifically, two-thirds of the programmers indicated that, in general, they purposefully choose a comprehension strategy. When studying a computer program from an unfamiliar application domain, however, programmers who generally use metacognition had lower levels of comprehension than when working in a familiar domain or when compared to those programmers who do not use metacognition.These results suggest that programmers use metacognition during computer program comprehension and that the use of metacognition influences how well they understand a program. That metacognition reduces comprehension, but only in certain circumstances, leads to the speculation that programmers' metacognitive heuristics may be too general and that programmers need to develop more specific metacognitive heuristics to aid comprehension in a wider range of circumstances.

[1]  Timothy D. Wilson,et al.  Telling more than we can know: Verbal reports on mental processes. , 1977 .

[2]  Iris Vessey,et al.  Research Report - The Relevance of Application Domain Knowledge: The Case of Computer Program Comprehension , 1995, Inf. Syst. Res..

[3]  Walter Kintsch,et al.  Toward a model of text comprehension and production. , 1978 .

[4]  Rajiv D. Banker,et al.  In Search of Software Maintenance Productivity and Quality: Does Software Complexity Matter? , 1994, ICIS.

[5]  K. A. Ericsson,et al.  Protocol Analysis: Verbal Reports as Data , 1984 .

[6]  J. R. Landis,et al.  The measurement of observer agreement for categorical data. , 1977, Biometrics.

[7]  Keith H. Bennett,et al.  Approaches to program comprehension , 1991, J. Syst. Softw..

[8]  R. Sternberg The Nature of Mental Abilities. , 1979 .

[9]  Robert L. Glass,et al.  Toward a taxonomy of software application domains: History , 1992, J. Syst. Softw..

[10]  Peter A. White,et al.  Limitations on verbal reports of internal events: A refutation of Nisbett and Wilson and of Bem. , 1980 .

[11]  S. Yussen,et al.  The role of metacognition in contemporary theories of cognitive development , 1985 .

[12]  Susan Wiedenbeck,et al.  The Initial Stage of Program Comprehension , 1991, Int. J. Man Mach. Stud..

[13]  Jane M. Mackay,et al.  An Empirical Investigation of the Effects of Decision Aids on Problem-Solving Processes* , 1992 .

[14]  A. Brown Metacognition, executive control, self-regulation, and other more mysterious mechanisms , 1987 .

[15]  J. Flavell Metacognitive aspects of problem solving , 1976 .

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

[17]  Keith H. Bennett,et al.  Software maintenance: a key area for research , 1988 .

[18]  Ruven E. Brooks,et al.  Categories of Programming Knowledge and Their Application , 1990, Int. J. Man Mach. Stud..

[19]  Eric J. Johnson,et al.  The validity of verbal protocols , 1989, Memory & cognition.

[20]  Paul J. Feltovich,et al.  Categorization and Representation of Physics Problems by Experts and Novices , 1981, Cogn. Sci..

[21]  Stan Jarzabek,et al.  Domain model-driven software reengineering and maintenance , 1993, J. Syst. Softw..

[22]  Ronald J. Kizior The Resurgence of COBOL: Considerations for the Future , 1994, J. Inf. Syst. Educ..

[23]  Jacob Cohen A Coefficient of Agreement for Nominal Scales , 1960 .

[24]  K. Vairavan,et al.  An Experimental Investigation of Software Metrics and Their Relationship to Software Development Effort , 1989, IEEE Trans. Software Eng..

[25]  Thomas A. Corbi,et al.  Program Understanding: Challenge for the 1990s , 1989, IBM Syst. J..

[26]  R. Garner Metacognition and reading comprehension , 1987 .

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

[28]  F. Weinert Introduction and overview: Metacognition and motivation as determinants of effective learning and understanding , 1987 .

[29]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[30]  Wanda J. Orlikowski,et al.  The Problem of Statistical Power in MIS Research , 1989, MIS Q..

[31]  Susan Weidenbeck,et al.  Processes in computer program comprehension , 1986 .

[32]  Curtis R. Cook,et al.  An Investigation of Procedure and Variable Names as Beacons During Program Comprehension , 1991 .