|
A Hybrid Approach to Change Impact Analysis
in Object-Oriented Systems
Abstract.
The modification of software artifacts to insert new functionalities or correct errors is inherent to the software life cycle. Only through it can a software system continue to meet
the user's needs. However, making a software modification may be a challenging task.
When changing a software artifact, a developer must analyze the impact this modification
will have on other artifacts and, if necessary, modify them so that the software system
remains consistent. This analysis is called Change Impact Analysis (CIA). Some methods
for change impact analysis, particularly for class-level, have been proposed over the years.
However, these methods fail to be impractical for the day-to-day developer since they are
very complex methods. Therefore, analyzing the impact that modifying a class has on a
software system is still a challenge to overcome. Hence, this research aims to
define a new class-level CIA method for object-oriented software. To base our proposal,
we will conduct the following studies: (i) investigate the state of the development
practice, seeking to identify developers'level of knowledge and application of software
maintenance concepts; (ii) investigate the state-of-art through a systematic mapping
review (SMR) on change impact analysis; (iii) conduct an empirical study to characterize commits in open-source systems developed in Java. Based on the results of these empirical studies, we will propose a new commit-based heuristic for the CIA, aiming to overcome the main fragilities of the commit-based approaches previously proposed in the literature. Besides, we intent to compare the proposed heuristic with some of the commit-based approach for CIA previously proposed in the literature. We will base this analysis on data from 237,366 commits from 38 Java open-source software systems. We hypothesize that the exclusive use of commits to the CIA is not an accurate approach. Therefore, we also hypothesize that the data extracted from the software dependency graph should be also considered in CIA. Hence, we propose to use a weighted dependency graph to estimate the impact of modifying a class in object-oriented systems. The weights applied in the dependency graph will be defined both in historical commits data and the software system's static characteristics.
Modeling and Predicting Evolution of Software Quality Internal Attributes
Abstract. Software evolution is a natural process of the software life cycle. It consists of adapting,
maintaining, and updating software systems. This research will concentrate on
investigating how software systems evolve along time. Many studies have been carried
out on this topic. However, we do not have a general view of the state-of-the-art
of software evolution research. To start, our first step was to conduct a
comprehensive Systematic Literature Review (SLR) to compile the body of knowledge
on software evolution and understand how the literature investigated this topic. Our
SLR analysis revealed that software evolution has been studied from five perspectives:
(i) verification of the applicability of Lehman's laws; (ii) proposal of applications, (iii)
analysis of the evolution with a focus on quality, (iv) analysis of the software structure
evolution, and (v) proposal of models for software evolution. Besides, the studies
on software engineering have confirmed that as software systems evolve, it becomes
increasingly complex and challenging to maintain. Nevertheless, the studies carried out
so far have not detailed how such degradation occurs. Understanding how the internal
software structure evolves is essential to help developers to better plan, manage, and
perform software maintenance tasks. This research aims to provide a fine-grained knowledge of how the internal structure of object-oriented software systems evolves. To do that, we will consider three internal characteristics of these software systems: coupling, size of classes, and inheritance hierarchy. We intent to define a novel method based on time series analysis, linear regression techniques, and trend tests to analyze the evolution of object-oriented systems. Applying such an approach, we hope to identify the function that better explains how the coupling, classes' size, and the inheritance tree evolve. To assess these characteristics, we will use software metrics defined in the literature and consider data from ten Java-based open-source projects. In the sequel of this research, we aim to define and evaluate a prediction method for object-oriented software evolution in terms of coupling, size of classes, and inheritance hierarchy. We will base the method on the results found in the first part of this research. We will construct an automatic approach to identify a prediction model for a given system. Our method's entry will be a set of metric time series, and the result of the method will be a model that predicts how the software system will evolve in terms of the attributes the metrics measure. To evaluate the proposed method, we will extend a previous data set used in the literature. In real software engineering scenarios, the results of the proposed research may support developers to plan their strategies to accommodate changes and novel features in the system, so that the software architecture degradation may be mitigated or avoided.
|