To harness the complexity of big legacy software, software engineering tools need more and more information on these systems. This information may come from analysis of the source code, study of execution traces, computing of metrics, etc. One source of information received less attention than source code: the bugs on the system. Little is known about the evolutionary behavior, lifetime, distribution, and stability of bugs. We propose to consider bugs as first class entities and a useful source of information that can answer such topics. Such analysis is inherently complex, because bugs are intangible, invisible, and difficult to be traced. Therefore, our first task is to extract them, link them to other software artifacts in the project, and explore interactive visualizations of bugs that we call bug maps.

The visualizations provided by BugMaps are based on Distribution Map, a generic technique to reason about the result of software analysis and to help to understand how a given phenomenon is distributed across a software system. Using Distribution Map three metrics can be displayed through height, width and color of the objects. In our maps, small rectangles can represent class histories, bugs, or classes and containers represent packages or package history. BugMaps provides five maps based on the history of the bugs of a system and two maps for a particular snapshot of a system.

Two browsers are then used for analysis, one to deal with the history of bugs (called history browser, which receives as input a history model) and other to deal with a particular snapshot of the system under analysis (called snapshot browser, which receives as input a snapshot model). These browsers are implemented in the Moose Platform.

Screencast: A screencast illustrating the use of the tool is available here.

History browser: HistoryBrowser

Snapshot browser: SnapshotBrowser