During software evolution, software change is an essential operation that introduces new functionalities or fixes bugs in the existing system, or modifies the former implementation if the requirements were not correctly addressed. After a long session of code editing, the nontrivial combination of small changes may affect other parts of the program unexpectedly, such as the non-local effect in object-oriented languages due to the extensive use of sub-typing and dynamic dispatch. Those likely ripple-effects of software change may lead to potential defects in the updated version. When regression tests fail, it may be difficult for programmers to locate the faulty changes by searching through the source. Moreover, when programmers develop regression tests over time to confirm the modified functionalities, it is also difficult to have a clear view of whether the existing tests are adequate to cover all affected fragments.
Change impact analysis is a useful technique for software evolution. It determines the effects of a source editing session and provides valuable feedbacks to the programmers for making correct decisions. Recently, many techniques have been proposed to support change impact analysis of procedural or object-oriented software, but seldom effort has been made for aspect-oriented software. Aspect-Oriented Programming (AOP) has been proposed as a technique for improving separation of concerns in software design and implementation. Due to the unique aspectual features like join point, pointcut, advice and intertype declaration, when implementing changes in AspectJ programs, it involves more complex impacts than in the traditional programming languages.
To provide developers with tool support, we develop an analysis tool, called Celadon, which helps programmers understand the impact of program changes. Given two versions of an AspectJ program, Celadon decomposes their differences into a set of aspect-aware atomic change together with their dependence relationships, identifies a subset of regression tests that are impacted by those changes and determines the responsible affecting changes for each affected test. For the updated program version, it also determines the impacted code fragments (at a method level) caused by the applied changes.
Sai Zhang, Zhongxian Gu, Yu Lin and Jianjun Zhao. Change Impact Analysis for AspectJ Programs. In Proc. 24th IEEE International Conference on Software Maintenance (ICSM 2008), Beijing, China, Sep 28- Oct 4, 2008. (to appear)
Sai Zhang, Zhongxian Gu, Yu Lin and Jianjun Zhao. Celadon A Change Impact Analysis Tool for Aspect-Oriented Programs. In 30th International Conference on Software Engineering (ICSE 2008 demo), Demonstration Track, May 10-18, 2008, Leipzig, Germany.