mining co-change information to understand when build changes are necessary
DESCRIPTION
As a software project ages, its source code is modified to add new features, restructure existing ones, and fix defects. These source code changes often induce changes in the build system, i.e., the system that specifies how source code is translated into deliverables. However, since developers are often not familiar with the complex and occasionally archaic technologies used to specify build systems, they may not be able to identify when their source code changes require accompanying build system changes. This can cause build breakages that slow development progress and impact other developers, testers, or even users. In this paper, we mine the source and test code changes that required accompanying build changes in order to better understand this co-change relationship. We build random forest classifiers using language-agnostic and language-specific code change characteristics to explain when code-accompanying build changes are necessary based on historical trends. Case studies of the Mozilla C++ system, the Lucene and Eclipse open source Java systems, and the IBM Jazz proprietary Java system indicate that our classifiers can accurately explain when build co-changes are necessary with an AUC of 0.60-0.88. Unsurprisingly, our highly accurate C++ classifiers (AUC of 0.88) derive much of their explanatory power from indicators of structural change (e.g., was a new source file added?). On the other hand, our Java classifiers are less accurate (AUC of 0.60-0.78) because roughly 75% of Java build co-changes do not coincide with changes to the structure of a system, but rather are instigated by concerns related to release engineering, quality assurance, and general build maintenance.TRANSCRIPT
![Page 1: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/1.jpg)
Mining Co-Change Information to Understand when Build Changes are Necessary
@shane_mcintosh
Shane McIntosh
Bram Adams
Meiyappan Nagappan
Ahmed E. Hassan
![Page 2: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/2.jpg)
What is a build system?
Source code
2
![Page 3: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/3.jpg)
What is a build system?
Source code
Deliverable
2
![Page 4: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/4.jpg)
.tex
.c
.cc
.o
.o
.dvi
.a
.exe
.deb
Build systems describe how sources are!translated into deliverables
3
![Page 5: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/5.jpg)
Continuous Integration:!Enabled by the
build system
4
.c .mk
![Page 6: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/6.jpg)
Continuous Integration:!Enabled by the
build system
Commit
4
Commit 9719cf0
.c .mk
![Page 7: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/7.jpg)
Continuous Integration:!Enabled by the
build system
Commit
4
BuildCommit 9719cf0
.c .mk
![Page 8: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/8.jpg)
Continuous Integration:!Enabled by the
build system
Commit
4
Build
Test
Commit 9719cf0
.c .mk
![Page 9: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/9.jpg)
Continuous Integration:!Enabled by the
build system
Commit
4
Build
Test
ReportCommit 9719cf0 was successfully integrated
Commit 9719cf0
.c .mk
![Page 10: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/10.jpg)
Continuous Integration:!Enabled by the
build system
Commit
4
Build
Test
ReportCommit 9719cf0 was successfully integrated
Commit 9719cf0
.c .mk
![Page 11: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/11.jpg)
“...nothing can be said to be certain, except death and taxes” - Benjamin Franklin
The Build “Tax”
An Empirical Study of Build Maintenance Effort!
S. McIntosh, B. Adams, T. H. D. Nguyen, Y. Kamei, A. E. Hassan
[ICSE 2011]
Up to 27% of source changes require build
changes, too!
5
![Page 12: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/12.jpg)
Neglected build maintenance!is a frequent cause build breaks
6
.c .mk
![Page 13: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/13.jpg)
Neglected build maintenance!is a frequent cause build breaks
Commit
6
Commit aedd38
.c
.mk
![Page 14: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/14.jpg)
Neglected build maintenance!is a frequent cause build breaks
Commit
6
Commit aedd38
.c
.mk
![Page 15: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/15.jpg)
Neglected build maintenance!is a frequent cause build breaks
Commit
6
BuildCommit aedd38
.c
.mk
![Page 16: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/16.jpg)
Neglected build maintenance!is a frequent cause build breaks
Commit
6
Build
Test
Commit aedd38
.c
.mk
![Page 17: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/17.jpg)
Neglected build maintenance!is a frequent cause build breaks
Commit
6
Build
Test
Commit aedd38
.c
.mk
![Page 18: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/18.jpg)
Neglected build maintenance!is a frequent cause build breaks
Commit
6
Build
Test
Report
Commit aedd38
.c
.mk
Commit aedd38 broke the build!
![Page 19: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/19.jpg)
Neglected build maintenance!can even impact end users
7
![Page 20: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/20.jpg)
Neglected build maintenance!can even impact end users
7
Not working due to linking of
incorrect SQLite library version
![Page 21: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/21.jpg)
Neglected build maintenance!can even impact end users
7
Not working due to linking of
incorrect SQLite library version
When are build!changes necessary?
![Page 22: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/22.jpg)
8
Overview of the studied systems
C++ Java
![Page 23: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/23.jpg)
8
Overview of the studied systems
C++ Java
![Page 24: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/24.jpg)
8
Overview of the studied systems
13 years of
historical data
C++ Java
![Page 25: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/25.jpg)
8
Overview of the studied systems
13 years of
historical data
Single build system for Firefox, Thunderbird, etc.
C++ Java
![Page 26: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/26.jpg)
8
Overview of the studied systems
13 years of
historical data
Single build system for Firefox, Thunderbird, etc.
C++ Java
Total of 16 years of historical data
![Page 27: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/27.jpg)
8
Overview of the studied systems
13 years of
historical data
Single build system for Firefox, Thunderbird, etc.
C++ Java
Proprietary and open
source systems
Total of 16 years of historical data
![Page 28: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/28.jpg)
9
Semi-automatic identification of file types using naming conventions
.mk.c.c.ac.dat.h
![Page 29: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/29.jpg)
9
Semi-automatic identification of file types using naming conventions
.mk.cTest
.cBuildSource
.ac.dat.hBuildTestSource
![Page 30: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/30.jpg)
Grouping related changes according to the work items that they address
10
![Page 31: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/31.jpg)
Grouping related changes according to the work items that they address
.c .c .cChanges .mk
10
![Page 32: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/32.jpg)
Missed code!in #2121
Add feature!#2121
Fix for!bug #1234
Grouping related changes according to the work items that they address
.c .c .c
Transactions
Changes .mk
10
![Page 33: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/33.jpg)
2121
Missed code!in #2121
Add feature!#2121
1234
Fix for!bug #1234
Grouping related changes according to the work items that they address
.c .c .c
Transactions
Work items
Changes .mk
10
![Page 34: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/34.jpg)
11
![Page 35: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/35.jpg)
!
Case study structure
11
![Page 36: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/36.jpg)
!
Case study structure
11
(RQ1)!Co-change frequency
.c .mk?
![Page 37: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/37.jpg)
!
Case study structure
11
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
![Page 38: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/38.jpg)
!
Case study structure
11
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
![Page 39: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/39.jpg)
!
Case study structure
12
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
![Page 40: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/40.jpg)
13
The proportion of build changes that are accompanied by source code changes
.c .mk?
![Page 41: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/41.jpg)
13
The proportion of build changes that are accompanied by source code changes
.c .mk?
.c .c.mk .mk .c.mk
![Page 42: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/42.jpg)
13
The proportion of build changes that are accompanied by source code changes
.c .mk?
.c .cWork!items
.mk
1
.mk .c.mk
32
![Page 43: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/43.jpg)
13
The proportion of build changes that are accompanied by source code changes
.c .mk?
.c .cWork!items
.mk
1
.mk .c.mk
32
2 build co-changes
3 total build changes
![Page 44: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/44.jpg)
14
Build changes are often accompanied by changes to the source code
Mozilla Eclipse Lucene Jazz
Build ⇒ Source 86% 82% 44% 72%
Build ⇒ Test 29% 36% 41% 36%
Build ⇒ Src/Test 88% 82% 53% 77%
.c .mk?
![Page 45: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/45.jpg)
15
Build changes are occasionally accompanied by changes to test code
Mozilla Eclipse Lucene Jazz
Build ⇒ Source 86% 82% 44% 72%
Build ⇒ Test 29% 36% 41% 36%
Build ⇒ Src/Test 88% 82% 53% 77%
.c .mk?
![Page 46: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/46.jpg)
16
53%-88% of build changes are accompanied by changes to source or test code
Mozilla Eclipse Lucene Jazz
Build ⇒ Source 86% 82% 44% 72%
Build ⇒ Test 29% 36% 41% 36%
Build ⇒ Src/Test 88% 82% 53% 77%
.c .mk?
![Page 47: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/47.jpg)
!
Case study structure
17
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
Most build changes are
accompanied by source/test code changes
![Page 48: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/48.jpg)
!
Case study structure
18
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
Most build changes are
accompanied by source/test code changes
![Page 49: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/49.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
![Page 50: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/50.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
Language-agnostic
![Page 51: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/51.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
Language-agnostic
+++ File added
![Page 52: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/52.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
Language-agnostic
+++ File added
.mkHistorical tendencies .c
![Page 53: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/53.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
Language-agnostic
Language-aware
+++ File added
.mkHistorical tendencies .c
![Page 54: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/54.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
Language-agnostic
Language-aware
+++ File added
.mkHistorical tendencies .c
Changed dependencies
import
![Page 55: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/55.jpg)
19
Metrics that may indicate whether a code change will require an accompanying build co-change
Language-agnostic
Language-aware
+++ File added
.mkHistorical tendencies .c
Changed dependencies
import
Changed!conditional compilation
#ifdef
![Page 56: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/56.jpg)
1 2
.mk
20
We train classifiers to identify code changes that require build changes
Work!items
.c.c .c
Random forest classification model
Build change necessary
No build change necessary
![Page 57: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/57.jpg)
1 2
.mk
20
We train classifiers to identify code changes that require build changes
Work!items
.c
.c .cRandom forest classification model
Build change necessary
No build change necessary
![Page 58: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/58.jpg)
1 2
.mk
21
We train classifiers to identify code changes that require build changes
Work!items
.c
Random forest classification model
Build change!necessary
No build change necessary
![Page 59: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/59.jpg)
1 2
.mk
22
We train classifiers to identify code changes that require build changes
Work!items
.c.c .c
Random forest classification model
Build change necessary
No build change necessary
![Page 60: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/60.jpg)
1 2
.mk
22
We train classifiers to identify code changes that require build changes
Work!items
.c
.c .c
Random forest classification model
Build change necessary
No build change necessary
![Page 61: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/61.jpg)
1 2
.mk
23
We train classifiers to identify code changes that require build changes
Work!items
.c .c
Random forest classification model
Build change necessary
No build change!necessary
![Page 62: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/62.jpg)
24
Language-aware metrics add significant explanatory power
Mozilla Eclipse Lucene Jazz
AUC (language-agnostic metrics) 0.84 0.66 0.71 0.57
AUC (language-agnostic and
aware metrics)0.88 0.69 0.78 0.60
![Page 63: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/63.jpg)
25
Mozilla classifiers are highly accurate
Mozilla Eclipse Lucene Jazz
AUC (language-agnostic metrics) 0.84 0.66 0.71 0.57
AUC (language-agnostic and
aware metrics)0.88 0.69 0.78 0.60
![Page 64: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/64.jpg)
26
Java classifiers are less accurate than Mozilla one
Mozilla Eclipse Lucene Jazz
AUC (language-agnostic metrics) 0.84 0.66 0.71 0.57
AUC (language-agnostic and
aware metrics)0.88 0.69 0.78 0.60
![Page 65: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/65.jpg)
27
Java build changes are rarely!driven by code changes
Category Task Amount Correctly classifiedSystem structure Refactorings 19 (25%) 8
General build maintenance
Build tool configuration 15 (20%) 0
Build defects 6 (8%) 0
Release engineering
Add platform support 12 (16%) 2
Packaging fixes 12 (16%) 3
Library versioning 8 (11%) 0
Test maintenance Test infrastructure 3 (4%) 0
![Page 66: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/66.jpg)
!
Case study structure
28
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
Most build changes are
accompanied by source/test code changes
AUCC++ 0.88, AUCJava 0.60-0.88
Java build changes are rarely motivated by code changes
![Page 67: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/67.jpg)
!
Case study structure
29
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
Most build changes are
accompanied by source/test code changes
AUCC++ 0.88, AUCJava 0.60-0.88
Java build changes are rarely motivated by code changes
![Page 68: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/68.jpg)
30
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2456777
11165
413
Random forest classification model
ClassificationWork!Item
123
![Page 69: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/69.jpg)
30
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2456777
11165
413
Random forest classification model
ClassificationWork!Item
123
NoYesYes
![Page 70: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/70.jpg)
30
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2456777
11165
413
Random forest classification model
ClassificationWork!Item
123
NoYesYes
Misclassification rate of 1 ÷ 3 = 0.33
![Page 71: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/71.jpg)
30
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2456777
11165
413
Random forest classification model
ClassificationWork!Item
123
NoYesYes
Randomly
permute values
![Page 72: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/72.jpg)
31
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2
456
77711165
413
Random forest classification model
ClassificationWork!Item
123
![Page 73: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/73.jpg)
31
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2
456
77711165
413
Random forest classification model
ClassificationWork!Item
123
YesYesYes
![Page 74: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/74.jpg)
31
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2
456
77711165
413
Random forest classification model
ClassificationWork!Item
123
YesYesYes
Misclassification rate of 2 ÷ 3 = 0.67
![Page 75: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/75.jpg)
31
Measuring variable importance in random forest classifiers
Random Forests!L. Breiman
[Machine Learning 2001]
500
Var1 Var2
150
Build!change?
NoNoYes
Var3
2
456
77711165
413
Random forest classification model
ClassificationWork!Item
123
YesYesYes
Misclassification rate of 2 ÷ 3 = 0.67
Var1 randomness increases misclassification rate by 0.33
![Page 76: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/76.jpg)
Mozilla Eclipse−core Lucene Jazz
●
●●
●● ●●
●●●●
●
●
●
0.00
0.05
0.10
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Conditional co
mpilation
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Varia
ble
Impo
rtanc
e Sc
ore
32
Variable importance in the!Mozilla classifier
![Page 77: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/77.jpg)
Mozilla Eclipse−core Lucene Jazz
●
●●
●● ●●
●●●●
●
●
●
0.00
0.05
0.10
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Conditional co
mpilation
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Varia
ble
Impo
rtanc
e Sc
ore
32
Variable importance in the!Mozilla classifier
Structure-altering changes are
most important in C++ classifiers
![Page 78: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/78.jpg)
Mozilla Eclipse−core Lucene Jazz
●
●●
●● ●●
●●●●
●
●
●
0.00
0.05
0.10
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Conditional co
mpilation
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Varia
ble
Impo
rtanc
e Sc
ore
32
Variable importance in the!Mozilla classifier
Structure-altering changes are
most important in C++ classifiers
Historical co-change tendencies are also important
![Page 79: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/79.jpg)
33
Variable importance in Java classifiers
Mozilla Eclipse−core Lucene Jazz
●
●●
●● ●●
●●●●
●
●
●
0.00
0.05
0.10
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Conditional co
mpilation
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Varia
ble
Impo
rtanc
e Sc
ore
![Page 80: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/80.jpg)
33
Variable importance in Java classifiers
Mozilla Eclipse−core Lucene Jazz
●
●●
●● ●●
●●●●
●
●
●
0.00
0.05
0.10
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Conditional co
mpilation
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Varia
ble
Impo
rtanc
e Sc
ore Structure-altering is less
important than in Mozilla
![Page 81: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/81.jpg)
33
Variable importance in Java classifiers
Mozilla Eclipse−core Lucene Jazz
●
●●
●● ●●
●●●●
●
●
●
0.00
0.05
0.10
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Conditional co
mpilation
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Prior build co−ch
anges
Number of files
Source added
Test added
Source deleted
Test deleted
Source modifie
d
Test modifie
d
Source renamed
Test renamed
Non−core dependencie
s
Varia
ble
Impo
rtanc
e Sc
ore Structure-altering is less
important than in Mozilla
Java classifiers rely more on historical co-change
tendencies
![Page 82: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/82.jpg)
!
Case study structure
34
(RQ2)!Co-change prediction accuracy
(RQ1)!Co-change frequency
.c .mk?
(RQ3)!Most powerful
co-change indicators
Most build changes are
accompanied by source/test code changes
AUCC++ 0.88, AUCJava 0.60-0.88
Java build changes are rarely motivated by code changes
C++: Structure-altering changes
Java: Historical co-change tendencies
![Page 83: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/83.jpg)
![Page 84: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/84.jpg)
![Page 85: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/85.jpg)
![Page 86: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/86.jpg)
![Page 87: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/87.jpg)
![Page 88: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/88.jpg)
![Page 89: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.vdocument.in/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/89.jpg)