PIs: Andrian Marcus and Vaclav Rajlich, Wayne State University
Software evolution is a demanding stage of the software lifecycle as it requires extensive knowledge about the application domain and about all the artifacts that have been produced. This includes knowledge about the software components and their dependencies which can be extracted from compiler-centered information. It also includes knowledge about the intent of these components which is human-centered information expressed in textual form in software. This project will investigate how these two kinds of information interact, how they complement each other, and how they can be jointly utilized during software evolution. The research will define and evaluate a new model for the comprehensive static analysis of source code which places textual information on similar footing with the results of classical program analysis. The proposed model will use program dependency analysis and text retrieval techniques. Using the new analysis, novel methodologies for the activities of software change, namely, concept location and impact analysis will be defined and evaluated. The new analysis will help humans increase their knowledge about the software and improve their communication about the intent of the software. It will be specifically useful for the analysis of software built from many heterogeneous components, written and designed by many developers, and operating on various platforms.