Incremental software change
Václav Rajlich, Kunrong Chen · 2003
This thesis analyzes the incremental change process and presents an approach that supports incremental software change during the software servicing stage. The thesis investigates the common features of the phases of the incremental change process and integrates them together. It is discovered that each phase is an interactive, incremental process, with alternating role for both the maintainer and the tool. Strategies can be defined for each phase. With proper use of the strategies, the maintainer can achieve a better effectiveness. There were four strategies defined for feature location phase: top-down, bottom-up, forward data flow and backward data flow. The research in the thesis is based on the dependence graph. The thesis proposes a function level granularity dependence graph—Abstract System Dependence Graph (ASDG) to support incremental change. The idea of “conceptual dependence” is also proposed to address the dependence which is not retrieved by the code analyzer. Conceptual dependencies are demonstrated to be useful in establishing a complete set of dependencies, which is often not possible due to an insufficiently powerful code analyzer, dependence hidden within library functions, or the complexity of the application architecture. By achieving the complete set of both regular and conceptual dependencies, the feature/concept is better understood and the change propagation is better controlled. An incremental change tool—Ripples4—is developed to support the theory. It is designed to support all phases in the process. By allowing the user to mark components as being visited or of interest in the investigation, Ripples4 is useful in tracking progress during the feature location, change impact, and change propagation processes. Ripples4 also supports the change propagation phase by implementing incremental change analysis, so re-analyzing the entire application after every change is not needed. Several case studies are done on Mosaic web browser, which has been widely used by researchers as a “subject” for the research of maintenance tools and techniques. Our cases studies also demonstrated that the additional functionality of Ripples4 over commercial tool Imagix4D is of great use in practical software maintenance.