By far, the most important encouraging development in this area is the increasing focus on empirical studies. There is still a large gap between the actual needs of software engineers and the tools and techniques that are available to them. This is not necessarily related to the tools themselves, but to the lack of understanding of the processes that a real-world software engineer goes through during evolution activities. There are a variety of support mechanisms for aiding program understanding. The third category of support mechanisms, computer-aided tools and techniques, is the focus of most tool developers.
Reverse engineering remains the predominant support mechanism used for program understanding.
Perhaps the most significant recent development in this area was the clear emergence of powerful commercial offerings. One of the impediments to greater adoption of program understanding technology has been that this technology has been focused on sample programs that do not represent real-world legacy systems. This is an international cooperative study among commercial and non-commercial organizations active in program understanding research to demonstrate the applicability of their tools and techniques in analyzing or evolving a common software example. The project is run under the auspices of WorldPath Information Services in conjunction with the IEEE TCSE and the Reengineering Forum. Several themes are emerging in software engineering that present opportunities for the program understanding community.