Program understanding behavior during corrective maintenance of large-scale software

This paper reports on a software understanding field study of corrective maintenance of large-scale software. Participants were professional software maintenance engineers. The paper reports on the general understanding process, the types of actions programmers preferred during the debugging task, the level of abstraction at which they were working and the role of hypotheses in the debugging strategies they used. The results of the observation are also interpreted in terms of the information needs of these software engineers. We found that programmers work at all levels of abstraction (code, algorithm, application domain) about equally. They frequently switch between levels of abstraction. The programmers' main concerns are with what software does and how this is accomplished, not why software was built a certain way. These questions guide the work process. Information is sought and cross-referenced from a variety of sources from application domain concepts to code-related information, outpacing current maintenance environments' capabilities which are mostly stratified by information source, making cross-referencing difficult.

[1]  Anneliese Amschler Andrews,et al.  Identification of Dynamic Comprehension Processes During Large Scale Maintenance , 1996, IEEE Trans. Software Eng..

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

[3]  Stanley Letovsky,et al.  Cognitive processes in program comprehension , 1986, J. Syst. Softw..

[4]  Adele E. Howe,et al.  Program understanding behaviour during enhancement of large-scale software , 1997, J. Softw. Maintenance Res. Pract..

[5]  Leon J. Osterweil,et al.  Proceedings of the 16th international conference on Software engineering , 1994, ICSE 1994.

[6]  David J. Hand,et al.  Advances in intelligent data analysis , 2000 .

[7]  Nancy Pennington,et al.  The effects of paradigm on cognitive activities in design , 1994, Int. J. Hum. Comput. Stud..

[8]  M. Chi,et al.  The Nature of Expertise , 1988 .

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

[10]  Iris Vessey,et al.  Expertise in Debugging Computer Programs: A Process Analysis , 1984, Int. J. Man Mach. Stud..

[11]  Anneliese Amschler Andrews,et al.  On the role of hypotheses during opportunistic understanding while porting large scale code , 1996, WPC '96. 4th Workshop on Program Comprehension.

[12]  Elliot Soloway,et al.  Mental models and software maintenance , 1986, J. Syst. Softw..

[13]  Paul R. Cohen,et al.  Detecting and Explaining Dependencies in Execution Traces , 1994 .

[14]  Peter Cheeseman,et al.  Selecting Models from Data: Artificial Intelligence and Statistics IV , 1994 .

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

[16]  Anneliese Amschler Andrews,et al.  Program Understanding: Models and Experiments , 1995, Adv. Comput..

[17]  Kate Ehrlich,et al.  Knowledge and processes in the comprehension of computer programs. , 1988 .

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

[19]  Anneliese Amschler Andrews,et al.  Comprehension processes during large scale maintenance , 1994, Proceedings of 16th International Conference on Software Engineering.

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

[21]  Adele E. Howe,et al.  Modelling Discrete Event Sequences as State Transition Diagrams , 1997, IDA.

[22]  Anneliese Amschler Andrews,et al.  From program comprehension to tool requirements for an industrial environment , 1993, [1993] IEEE Second Workshop on Program Comprehension.

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

[24]  A. von Mayrhauser,et al.  From code understanding needs to reverse engineering tool capabilities , 1993, Proceedings of 6th International Workshop on Computer-Aided Software Engineering.

[25]  A. Von Mayrhauser,et al.  On the role of program understanding in re-engineering tasks , 1996, 1996 IEEE Aerospace Applications Conference. Proceedings.

[26]  Anneliese Amschler Andrews,et al.  Industrial experience with an integrated code comprehension model , 1995, Softw. Eng. J..

[27]  Bob Rehder,et al.  Cognitive activities and levels of abstraction in procedural and object-oriented design , 1995 .