| Impact analysis plays an important role in software maintenance, in particular in the case of complex and large-scale systems. It allows developers assessing the possible effects of a change in a software system. This thesis presents, in a first step, an experimental study of three static impact analysis techniques: a technique based on traditional call graphs, a technique based on control call graphs and a technique based on program slicing. The technique based on control call graphs is a new technique that we proposed at the beginning of this research work [Badri 05, St-Yves 06] to support change impact analysis in Object-Oriented Systems. We have developed a tool that supports the three techniques, structured as multiple modules integrated into the Eclipse environment. Following the results obtained [Badri 07a, Badri 07b], we introduce a second technique that combine the properties of the control call graph and the traditional slicing and also, the results of the performed empirical study. We conducted a comparative experimental study between the considered techniques on several versions of a Java (open-source) large project (Jmol). The observed changes were collected from different successive versions of the considered software. The sets of potentially affected methods returned by the three techniques, after a given change, were compared to the observed changes. The results showed that the new technique, unifying the control and data graph concepts, improve the computing time for impact research, precise the results sets and reduce the effort of impact research. |