Conclusion
To support software evolution analysis we have proposed a technique based on historical dependencies and defect information. We chose these two kinds of data about a software system because they are complementary to structural information and, differently from other data sources (e.g., mail archives), they can be directly linked to the source code.
The main contributions of our work so far are:
A meta-model for defects, which takes time into account. It considers bugs as evolving entities, while in previous research they were considered static entities.
Two visualizations (System Radiography and Bug Watch) which, exploiting the defect meta-model, supports the understanding of bugs evolution and the detection of critical bugs. The riskiness of a bug is defined according to its history, and in particular to its life cycle, whereas in previous approaches only static attributes (such as severity and priority) were considered.
A defect prediction technique based on particular design flaws called design disharmonies. The approach represents an improvement over the state of the art in metrics-based defect prediction.
The Evolution Radar visualization, which shows change coupling information at different levels of abstraction, supporting the understanding of both module dependencies and the causes of the dependencies. Previous techniques focused on either coarse-grained coupling, i.e., at the module level, or fine-grained coupling, i.e., at the file (or finer) level. We plan to continue our work in two directions: first we want to investigate other types of historical dependencies, for example the one based on bug sharing. The assumption is that two entities sharing a bug, over the system’s history, have an implicit dependency. The greater the number of bugs they share, and the longer the time during which they share bugs, the stronger the dependency is. In the second research direction we plan to use historical dependency information to predict bugs. This would integrate our approaches for historical dependency analysis and bug prediction.