Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers understand software, as well as the tools that are used to assist in comprehension tasks. In this paper, I review some of the key cognitive theories of program comprehension that have emerged over the past thirty years. Using these theories as a canvas, I then explore how tools that are commonly used today have evolved to support program comprehension. Specifically, I discuss how the theories and tools are related and reflect on the research methods that were used to construct the theories and evaluate the tools. The reviewed theories and tools are distinguished according to human characteristics, program characteristics, and the context for the various comprehension tasks. Finally, I predict how these characteristics will change in the future and speculate on how a number of important research directions could lead to improvements in program comprehension tool development and research methods.
%0 Journal Article
%1 Storey2006
%A Storey, Margaret-Anne
%D 2006
%J Software Quality Journal
%K cognitive_methods collaborative models navigation program_comprehension software to_read tools visualization
%N 3
%P 187--208
%R 10.1007/s11219-006-9216-4
%T Theories, tools and research methods in program comprehension: past, present and future
%U http://springerlink.com/content/7rv645gj65h61442/?p=e018e60152484de5bf15b1aa01528ae2&pi=47
%V 14
%X Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers understand software, as well as the tools that are used to assist in comprehension tasks. In this paper, I review some of the key cognitive theories of program comprehension that have emerged over the past thirty years. Using these theories as a canvas, I then explore how tools that are commonly used today have evolved to support program comprehension. Specifically, I discuss how the theories and tools are related and reflect on the research methods that were used to construct the theories and evaluate the tools. The reviewed theories and tools are distinguished according to human characteristics, program characteristics, and the context for the various comprehension tasks. Finally, I predict how these characteristics will change in the future and speculate on how a number of important research directions could lead to improvements in program comprehension tool development and research methods.
@article{Storey2006,
abstract = {Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers understand software, as well as the tools that are used to assist in comprehension tasks. In this paper, I review some of the key cognitive theories of program comprehension that have emerged over the past thirty years. Using these theories as a canvas, I then explore how tools that are commonly used today have evolved to support program comprehension. Specifically, I discuss how the theories and tools are related and reflect on the research methods that were used to construct the theories and evaluate the tools. The reviewed theories and tools are distinguished according to human characteristics, program characteristics, and the context for the various comprehension tasks. Finally, I predict how these characteristics will change in the future and speculate on how a number of important research directions could lead to improvements in program comprehension tool development and research methods.},
added-at = {2008-10-11T13:25:00.000+0200},
author = {Storey, Margaret-Anne},
biburl = {https://www.bibsonomy.org/bibtex/296cc41ce8d0dc97e8168fc9ff42331df/sjbutler},
doi = {10.1007/s11219-006-9216-4},
interhash = {af82bc48bcfb8197b6767f190ee388bf},
intrahash = {96cc41ce8d0dc97e8168fc9ff42331df},
issn = {ISSN 0963-9314 (Print) 1573-1367 (Online)},
journal = {Software Quality Journal},
keywords = {cognitive_methods collaborative models navigation program_comprehension software to_read tools visualization},
month = {September},
number = 3,
pages = {187--208},
timestamp = {2008-10-11T13:30:02.000+0200},
title = {Theories, tools and research methods in program comprehension: past, present and future},
url = {http://springerlink.com/content/7rv645gj65h61442/?p=e018e60152484de5bf15b1aa01528ae2{\&}pi=47},
volume = 14,
year = 2006
}