Government and industry spend over $100 billion a year to preserve
and extend existing software. Existing tools have shallow analysis and
limited impact. Improved tools with deeper, human-like program
understanding will reduce the huge cost of activities involving
existing software.
We describe our automatic program understanding theory and
technology. Our approach has two parts: understanding and
representation. The UNPROG system uses programming plan knowledge to
recognize deep programming concepts in existing programs. Functional
Representation (FR) is a theory and language for representing
understanding of devices, including programs. We use FR to capture
program understanding to give the explanations required by
applications.
Automatic reverse engineering and reengineering tools can use this
understanding to produce more useful program descriptions and
reengineered code. We describe what has been accomplished so far,
and discuss how this strategic dual-use technology can be further
developed and applied.
hartman@cis.ohio-state.edu
Original: 16-March-1995