This paper reports on a software understanding held study of corrective mai
ntenance of large-scale software. Participants were professional software m
aintenance engineers. The paper reports on the general understanding proces
s, the types of actions programmers preferred during the debugging task, th
e level of abstraction at which they were working and the role of hypothese
s in the debugging strategies they used. The results of the observation are
also interpreted in terms of the information needs of these software engin
eers. We found that programmers work at all levels of abstraction (code, al
gorithm, application domain) about equally. They frequently switch between
levels of abstraction. The programmers' main concerns are with what softwar
e does and how this is accomplished, not why software was built a certain w
ay. These questions guide the work process. Information is sought and cross
-referenced from a variety of sources from application domain concepts to c
ode-related information, outpacing current maintenance environments' capabi
lities which are mostly stratified by information source, making crossrefer
encing difficult. (C) 1999 Academic Press.