Mining Co-Change Information to Understand when Build Changes are Necessary
-
Upload
shane-mcintosh -
Category
Software
-
view
138 -
download
1
description
Transcript of Mining Co-Change Information to Understand when Build Changes are Necessary
![Page 1: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/34.jpg)
11
![Page 35: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/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.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/83.jpg)
![Page 84: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/84.jpg)
![Page 85: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/85.jpg)
![Page 86: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/86.jpg)
![Page 87: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/87.jpg)
![Page 88: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/88.jpg)
![Page 89: Mining Co-Change Information to Understand when Build Changes are Necessary](https://reader034.fdocuments.net/reader034/viewer/2022042816/5598aa4d1a28abb93f8b45b0/html5/thumbnails/89.jpg)