Early failure prediction during change impact analysis for improving object-oriented software maintenance
Isong, Bassey Echeng
MetadataShow full item record
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.