The UVicReverseEngineeringTutorial defines program understanding as The task of building mental models of the underlying software at various abstraction levels, ranging ...
Several surveys of reverse and reengineering research have been published. These include: ReverseAndReengineeringTaxonomy ReengineeringBibliography ReverseEngineeringARoadmap ...