Psychological perspectives for software science

Abstract In developing his theory of software science, Maurice Halstead borrowed heavily from psychology for theoretical explanations of the equations he was developing. Other software researchers have used psychological theory to defend their techniques or conclusions. Unfortunately, the psychological principles they have employed have not always been the most recent developments in the field. In fact, most of the psychological explanations found in software science are based on research that is one to three decades old. Some of these principles have been taken out of context and used inappropriately. Others do not represent the most powerful psychological principles that could be used in developing programming theory, techniques, and measures. This paper will first critique the current use of psychological theory in software science. Then, it will review recent developments in cognitive psychology which are relevant to programming. Finally, it will propose ways of using these newer findings in developing improved measures for software science.

[1]  Kate Ehrlich,et al.  Tapping into tacit programming knowledge , 1982, CHI '82.

[2]  Michael E. Atwood,et al.  An Exploratory Study of the Cognitive Structures Underlying the Comprehension of Software Design Problems , 1978 .

[3]  Kenneth J. Christensen,et al.  A Perspective on Software Science , 1981, IBM Syst. J..

[4]  John D. Gannon An experimental evaluation of data type conventions , 1977, CACM.

[5]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[6]  Bill Curtis,et al.  Experimental Evaluation of On-Line Program Construction. , 1979 .

[7]  Ira Richard Forman On the decomposition of programs into primes , 1979 .

[8]  Martin R. Woodward,et al.  A Measure of Control Flow Complexity in Program Text , 1979, IEEE Transactions on Software Engineering.

[9]  H. Simon,et al.  Perception in chess , 1973 .

[10]  Ben Shneiderman,et al.  Measuring Computer Program Quality and Comprehension , 1977, Int. J. Man Mach. Stud..

[11]  Allen Newell,et al.  Human Problem Solving. , 1973 .

[12]  Warren A. Harrison,et al.  A hybrid metric to measure software complexity. , 1981 .

[13]  H. E. Dunsmore,et al.  Data Referencing: An Empirical Investigation , 1979, Computer.

[14]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[15]  Harlan D. Mills,et al.  Structured programming - theory and practice , 1979, The systems programming series.

[16]  B. Adelson Problem solving and the development of abstract categories in programming languages , 1981, Memory & cognition.

[17]  H. E. Dunsmore,et al.  Software Science Revisited: A Critical Analysis of the Theory and Its Empirical Support , 1983, IEEE Transactions on Software Engineering.

[18]  Ira R. Forman Global data flow analysis by decomposition into primes , 1982, ICSE '82.

[19]  Edward T. Chen,et al.  Program Complexity and Programmer Productivity , 1978, IEEE Transactions on Software Engineering.

[20]  Harlan D. Mills,et al.  Mathematical foundations of structured programming , 1972 .

[21]  Bill Curtis,et al.  Third time charm: Stronger prediction of programmer performance by software complexity metrics , 1979, ICSE 1979.

[22]  John Gannon An experiment for the evaluation of language features , 1976 .

[23]  G. A. Miller THE PSYCHOLOGICAL REVIEW THE MAGICAL NUMBER SEVEN, PLUS OR MINUS TWO: SOME LIMITS ON OUR CAPACITY FOR PROCESSING INFORMATION 1 , 1956 .

[24]  C Bron,et al.  COGNITIVE STRATEGIES AND LOOPING CONSTRUCTS - AN EMPIRICAL-STUDY , 1984 .

[25]  Neal S. Coulter,et al.  Software Science and Cognitive Psychology , 1983, IEEE Transactions on Software Engineering.

[26]  Enrique Ivan Oviedo Control flow, data flow and program complexity , 1984 .

[27]  J. M. Stroud THE FINE STRUCTURE OF PSYCHOLOGICAL TIME , 1967 .

[28]  Tom Love,et al.  A Review and Evaluation of Software Science , 1978, CSUR.

[29]  W. Kintsch,et al.  The representation of meaning in memory , 1974 .

[30]  Ben Shneiderman,et al.  Control flow and data structure documentation: two experiments , 1982, CACM.

[31]  Sallie M. Henry,et al.  Software Structure Metrics Based on Information Flow , 1981, IEEE Transactions on Software Engineering.

[32]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[33]  Bill Curtis,et al.  Modern Coding Practices and Programmer Performance , 1979, Computer.

[34]  Ruven E. Brooks,et al.  Towards a Theory of the Cognitive Processes in Computer Programming , 1999, Int. J. Man Mach. Stud..

[35]  Glenford J. Myers,et al.  Composite/structured design , 1978 .

[36]  Roy Alejandro Maddux,et al.  A study of computer program structure. , 1975 .

[37]  J. Reitman,et al.  Knowledge organization and skill differences in computer programmers , 1981, Cognitive Psychology.

[38]  NED CHAPIN A measure of software complexity , 1979, 1979 International Workshop on Managing Requirements Knowledge (MARK).