A. Marie Vans

Learn More
Computer P rogram understanding is a major factor in providing effective software maintenance and enabling successful evolution of computer systems. For years, researchers have tried to understand how programmers comprehend programs during software maintenance and evolution. Five types of tasks are commonly associated with software maintenance and(More)
Maintenance frequently consumes more resources than new software development. A major portion of the maintenance eeort is spent on the reverse engineering activity of understanding existing software. If we can learn more about how programmers understand code successfully, we can build better tools to support the understanding process. This contributes to(More)
A major portion of the maintenance eeort is spent understanding existing software. We present an integrated code comprehension model and our experiences with it in an industrial setting. We use audio-taped, think-aloud reports to investigate how well our integrated code comprehension model works during industrial maintenance activities ranging from code xes(More)
This paper reports on a software understanding experiment during corrective maintenance of largescale 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, and the level of abstraction at which they were working.(More)
Models of how programmers understand code they have not written have been developed and analyzed for many years . These models describe program comprehension at various levels of detail . This papers puts them in perspective. particularly with regard to specialized maintenance tasks versus general code understanding needs . Experiments support some. but not(More)
This paper reports on a software understanding "eld 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(More)