Program Understanding
Program-Transformation.Org: The Program Transformation Wiki
The
UVicReverseEngineeringTutorial defines
program understanding as
- The task of building mental models of the underlying software at various abstraction levels, ranging from models of the code itself to ones of the underlying application domain, for SoftwareMaintenance, SoftwareEvolution, and ReEngineering purposes.
Synonym:
ProgramComprehension
Program understanding is a central activity during
SoftwareMaintenance: T. A. Corbi reports that up to 50% of the maintenance effort is spent on trying to understand code (IBM Systems Journal 28(2):294-306, 1989,
Program Understanding: Challenge for the 1990s)
Relevant topics:
A general survey on program comprehension is given by
SpencerRugaber:
SpencerRugaber defines program comprehension as the process of acquiring knowledge about a computer program.
The survey covers cognitive processes, techniques for automated program understanding such as dataflow and control flow analysis,
program comprehension tools, example applications, and resources.
Resources include
The relationship between
SoftwareProcess and
ProgramUnderstanding is explored in
ProgramComprehensionRisksAndOpportunitiesInXP
--
ArieVanDeursen, Oct 2001.
An up to date account of program comprehenion theories can
be found in
AndrewWalenstein's
PhD? thesis, which contains over
750 references, and explores the relationship between
program comprehension and software engineering tools.
See
http://www.cacs.louisiana.edu/~walenste/thesis.html
--
ArieVanDeursen, Jan 2003, updated May 2004 by
AndrewWalenstein
CategoryProgramUnderstanding |
CategoryReengineeringWiki | Contributions by
ArieVanDeursen