What Is a Change?

Before we can analyze the relationship between the modularity of a system and the changes developers make to that system, we first need a consistent definition of a change.

All of the projects we studied use Bugzilla (http://www.bugzilla.org) as a central bug-tracking system. Bug reports, despite their name, are not limited to just tracking defects; indeed, bug reports are also used to track feature requests (referred to as “enhancements” in Bugzilla). Thus, each report captures the notion of a single logical change to the system, which could be made either to fix a defect or to add new functionality to the system.

Table 21-2 shows the ratio of these two types of reports for the changes that we studied. For all three projects, the majority of the changes are fixes for defects in the system, although more than a quarter of the Mylyn changes are actually enhancements.

Table 21-2. Ratio of change types for each system

Project

Total changes

Defects (%)

Enhancements (%)

Evolution

1,939

1,792 (92.4%)

147 (7.6%)

Firefox

11,710

11,198 (95.6%)

512 (4.4%)

Mylyn

3,055

2,247 (73.6%)

808 (26.4%)

Each of these three projects uses a source control system that organizes and tracks changes using a notion of atomic commit operations. Each commit may modify multiple files and includes various metadata, including an identifier for the committer (typically a username or email address), the date and time at which the commit occurred, and a free-text description of the changes ...

Get Making Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.