dc.description.abstract | Change is inevitable and an important property of software. Software applications are
changed during their life-time in order to remain useful. Nonetheless, changes also come with
high risks when it is made. Regardless of their size, they can have significant and unexpected
effects elsewhere in the software, degrade software quality or cause them to fail. Change
impact analysis is used to preserve software quality. Today, as object-oriented technology has
gained worldwide popularity, several object-oriented software applications are currently in
use. Given the critical context, it is important that these systems are effectively and efficiently
maintained if continuous usefulness is the goal. However, object-oriented paradigm
introduces specific features, have different change and complex dependencies types often
which makes it hard to identify the impact of changes or it is likely that they might introduce
some types of faults which are difficult to detect. In addition, the available impact analysis
techniques offer litter or no information on explicit program representation, they are not
precise and produce large impact sets which are not good for practical use. Hence, an
effective technique that can precisely predict true impact set and identify early enough, which
components affected by a change are fault-prone is needed. This is necessary to reduce the
risk associated with field failures when changes are made. Moreover, traditional research on
software change impact analysis and fault prediction is disjointed. Therefore, in this research
work, we design a change impact analysis framework that incorporates both impact and early
fault prediction in the maintenance of object-oriented software. The objective is to enhance
program comprehension, reduce the time, effort and the risks associated with software change
while software quality is preserved. We achieved this by exploring and analyzing object-oriented
programs complex relationships, using intermediate source code representation that
explicitly reveals their implicit structure, dependencies and allow for complexity
quantification in small to medium sized systems. The representation alongside the impact
diffusion range of a given change type is used to predict change impact and improve its
precision. Additionally, logistic regression was used to build an early fault prediction model
which utilizes object-oriented product and process metrics. The approaches were empirically
evaluated and the results obtained showed that the source code representation is effective and
practical for impact analysis and the change impact analysis technique showed improved
precision. Also, the fault prediction model shows high accuracy, sensitivity and specificity.
To facilitate the prediction process, this research implemented a novel tool called
ClassChangeRecommender to assist software maintainers in predicting which components
impacted by a change are fault-prone to allow mitigation action in advance before actual
changes are made. | en_US |