Corporations face mounting maintenance and re-engineering costs for large legacy systems.
Evolving over several years, these systems embody substantial corporate knowledge, including requirements, design decisions, and business rules. Such knowledge is difficult to recover after many years of operation, evolution, and personnel change. To address this problem, software engineers are spending an ever-growing amount of effort on program understanding and reverse engineering technologies. Hence, the process of understanding should be manual, semi automatic, or fully automatic where applicable. S.R. TIlley, J. Troster, and K. Wong.