2.1 Bug History Analysis
Bug tracking systems are used by developers, quality as
surance people, testers, and end users to provide feedback on
software systems. They are also used in software evolution
research to perform retrospective system analysis [3,8]. In
this context bugs are linked to software artifacts (e.g., files,
classes) using different heuristics, with the aim of detecting
the most problematic parts of the system, i.e., the ones af
fected by many bugs. Some approaches model bugs as mere
numbers (e.g., file x is affected by n bugs, file y by m), while
others also model bug properties such as the description, the
severity, the person assigned to fix it, etc. However, bugs are
often considered as an unwanted “side dish” of the evolu
tion phenomenon, and they are modeled as “static” entities
affecting the source code.
We have proposed an approach in which we consider
bugs as first-level entities which can change and evolve over
time. In particular we have focused on the bug life cycle, i.e.,
the history of a bug and the various states it traverses. Our
hypothesis is that bug histories represent a valuable source
of information that can lead to interesting insights about a
system, that would be hard or impossible to obtain by mod
eling the bugs as static entities. Based on the information we
recovered from Bugzilla (or Issuezilla), we have introduced
two visualization techniques aimed at understanding bugs at
two different levels of granularity:
1. System Radiography. This visualization renders bug
information at the system level and provides indications
about which parts of the system are affected by what
kind of bugs at which point in time. It is a high-level
indicator of the system health and serves as a basis for
reverse engineering activities.
2. Bug Watch. This visualization provides information
about a specific bug and is helpful to understand the
various phases that it traversed. The view supports the
characterization of bugs and the identification of the
most critical ones, based on their histories.
The proposed approach provided two main contributions:
(1) introducing the concept of a bug’s life, i.e., bugs are con
sidered as evolving entities which change over time. Study
ing the history of bugs permits an accurate characterization
of them. (2) Introducing a new criterion for bug criticality:
besides the severity and priority we have also considered the
life cycle. The underlying assumption is that bugs reopened
several times are more critical.