fine grained the analysis is, and how sophisticated it
is, but what it rules out can be ruled out for certain.
For example, if method A mentions in its code meth-
ods B and C, then we decide that A depends on B
and C. It may be that, in practice, A never calls B,
only C, but unless our tools can be certain about this,
they take the conservative approach of assuming that
if either B or C change, A may change. What we can
be certain about is that A cannot change just because
some other method D changes (unless the recursive
analysis of B or C leads us to it). Static analysis is
accurate, unlike documentation, because it is the ac-
tual system code we analyze, not a description of it. It
is complete, unlike dynamic analysis, because it takes
the conservative but safe approach outlined.
The approach is conventional. First, we calcu-
late the dependencies between methods and fields in
the existing middleware library and user’s applica-
tion, between objects in the database, and between
database objects and program methods: dependency
analysis. Second, we identify what is changed by a
patch: patch analysis. Third, we calculate, by starting
with the things changed in the patch and following
the dependencies in reverse, what might be changed
when the patch is applied: impact analysis.
The things that might be changed, the affected
methods or methods, can stretch right through the
middleware library and the user’s application soft-
ware. In practice, we will only be interested in some
of these, usually those in the application software that
appear in test cases. Identifying these means the user
can identify the regression tests that will need to be
applied and hence, as test cases are usually grouped
by business process, which business processes may
be affected. The methods we select we term the meth-
ods of interest: the precise way we identify these will
depend on how the test cases are organized.
The remainder of this paper is organized as fol-
lows. Section 2 discusses related work. Section 3
describes dependency analysis. Patch analysis is in-
troduced in Section 4, and impact analysis in Section
5. Section 6 describes a case study. Section 7 summa-
rizes the paper, draws some conclusions, and outlines
future work.
2 RELATED WORK
Change Impact Analysis applied to software systems
can be traced back to the 1970s. Reasons for doing
change impact analysis are well known and under-
stood: “As software components and middleware oc-
cupy more and more of the software engineering land-
scape, interoperability relationships point to increas-
ingly relevant software change impacts.” (Bohner,
1996) Moreover, due to the increasing use of tech-
niques such as inheritance and dynamic dispatch-
ing/binding, which come from widely used object-
oriented languages, small changes can have major and
nonlocal effects. To make matters worse, those major
and nonlocal effects might not be easily identified, es-
pecially when the size of the software puts it beyond
any maintainer’s ability to adequately comprehend.
There is considerable research related to this field,
but it seems that there are limited known ways of per-
forming change impact analysis. Bohner and Arnold
(Bohner, 1996) identify two classes of impact analy-
sis: traceability and dependency. What we are inter-
ested in in this work is dependency: linkages between
parts, variables, methods, modules etc. are assessed to
determine the consequences of a change.
Dependency impact analysis can be either static,
dynamic or a hybrid of the two. We discuss some of
the work using these techniques below.
Static impact analysis (Bohner, 1996; Ren et al.,
2004; Pfleeger and Atlee, 2006; Ayewah et al., 2008;
Khare et al., 2011) identifies the impact set - the sub-
set of elements in the program that may be affected by
the changes made to the system. For instance, Chianti
(Ren et al., 2004) is a static change impact analysis
tool for Java that is implemented in the context of the
Eclipse environment, which analyzes two versions of
an application and decomposes their differences into
a set of atomic changes. The change impact is then
reported in terms of affected tests. This is similar to
our approach, but lacks the capability to deal with the
database components.
Apiwattanapong et al. (Apiwattanapong, 2005) ar-
gue that static impact analysis algorithms often come
up with too large impact sets due to their over conser-
vative assumptions: the actual dependencies may turn
out to be considerably smaller than the possible ones.
Therefore, recently, researchers have investigated and
defined impact analysis techniques that rely on dy-
namic, rather than static, information about program
behaviour (Orso et al., 2003; Breech et al., 2004; Patel
et al., 2009; Li, 2012).
The dynamic information consists of execution
data for a specific set of program executions, such as
executions in the field, executions based on an oper-
ational profile, or executions of test suites. (Apiwat-
tanapong, 2005) defines the dynamic impact set to be
the subset of program entities that are affected by the
changes during at least one of the considered program
executions. CoverageImpact (Orso et al., 2003) and
PathImpact (Law and Rothermel, 2003) are two well
known dynamic impact analysis techniques that use
dynamic impact sets. PathImpact works at the method
ICEIS2012-14thInternationalConferenceonEnterpriseInformationSystems
360