SlideShare une entreprise Scribd logo
1  sur  89
Télécharger pour lire hors ligne
Mining Co-Change Information 
to Understand when Build 
Changes are Necessary 
@shane_mcintosh 
Shane 
McIntosh 
Bram 
Adams 
Meiyappan 
Nagappan 
Ahmed E. 
Hassan
What is a build system? 
Source 
code 
2
What is a build system? 
Source 
code 
Deliverable 
2
Build systems describe how sources are! 
.c 
.cc 
.tex 
.o 
.o 
.dvi 
.a 
.exe 
.pdf 
.deb 
translated into deliverables 
3
Continuous Integration:! 
Enabled by the 
build system 
4 
.c .mk
Continuous Integration:! 
Enabled by the 
build system 
Commit 
4 
Commit 
9719cf0 
.c .mk
Continuous Integration:! 
Enabled by the 
build system 
Commit 
4 
Build 
Commit 
9719cf0 
.c .mk
Continuous Integration:! 
Enabled by the 
build system 
Commit 
4 
Build 
Test 
Commit 
9719cf0 
.c .mk
Commit 
9719cf0 
Continuous Integration:! 
Enabled by the 
build system 
Commit 
4 
Build 
Test 
Report 
Commit 
9719cf0 was 
successfully 
integrated 
.c .mk
Commit 
9719cf0 
Continuous Integration:! 
Enabled by the 
build system 
Commit 
4 
Build 
Test 
Report 
Commit 
9719cf0 was 
successfully 
integrated 
.c .mk
“...nothing can be 
said to be certain, 
except death and 
taxes” 
- Benjamin Franklin 
The Build “Tax” 
Up to 27% of source 
changes require build 
changes, too! 
An Empirical Study of Build 
Maintenance Effort! 
S. McIntosh, B. Adams, T. H. D. 
Nguyen, Y. Kamei, A. E. Hassan 
[ICSE 2011] 
5
Neglected build maintenance! 
is a frequent cause build breaks 
6 
.c .mk
Commit 
Neglected build maintenance! 
is a frequent cause build breaks 
6 
Commit 
aedd38 
.c 
.mk
Commit 
Neglected build maintenance! 
is a frequent cause build breaks 
6 
Commit 
aedd38 
.c 
.mk
Commit 
Neglected build maintenance! 
is a frequent cause build breaks 
6 
Build 
Commit 
aedd38 
.c 
.mk
Commit 
Neglected build maintenance! 
is a frequent cause build breaks 
6 
Build 
Test 
Commit 
aedd38 
.c 
.mk
Commit 
Neglected build maintenance! 
is a frequent cause build breaks 
6 
Build 
Test 
Commit 
aedd38 
.c 
.mk
Commit 
Neglected build maintenance! 
is a frequent cause build breaks 
6 
Build 
Test 
Report 
Commit 
aedd38 
.c 
.mk 
Commit 
aedd38 
broke the 
build!
Neglected build maintenance! 
can even impact end users 
7
Neglected build maintenance! 
can even impact end users 
7 
Not working due 
to linking of 
incorrect SQLite 
library version
Neglected build maintenance! 
can even impact end users 
7 
When are build! 
changes necessary? 
Not working due 
to linking of 
incorrect SQLite 
library version
Overview of the studied systems 
8 
C++ Java
Overview of the studied systems 
8 
C++ Java
Overview of the studied systems 
8 
C++ Java 
13 years of 
historical data
Overview of the studied systems 
8 
C++ Java 
13 years of 
historical data 
Single build system for 
Firefox, Thunderbird, etc.
Overview of the studied systems 
8 
C++ Java 
13 years of 
historical data 
Single build system for 
Firefox, Thunderbird, etc. 
Total of 16 years of 
historical data
Overview of the studied systems 
8 
C++ Java 
13 years of 
historical data 
Single build system for 
Firefox, Thunderbird, etc. 
Total of 16 years of 
historical data 
Proprietary and open 
source systems
Semi-automatic identification of file 
types using naming conventions 
.m..cck ..ad.caht 
9
Semi-automatic identification of file 
types using naming conventions 
.c .mk 
.c 
Source Build 
Test 
.h .dat .ac 
Source Test Build 
9
Grouping related changes according 
to the work items that they address 
10
Grouping related changes according 
to the work items that they address 
.c .c .c 
Changes 
.mk 
10
Grouping related changes according 
to the work items that they address 
Missed code! 
in #2121 
.c .c .c 
Add feature! 
#2121 
Fix for! 
bug #1234 
Changes 
Transactions 
.mk 
10
Grouping related changes according 
to the work items that they address 
Missed code! 
2121 
in #2121 
.c .c .c 
Add feature! 
#2121 
Fix for! 
bug #1234 
1234 
Changes 
Transactions 
Work items 
.mk 
10
11
! 
Case study structure 
11
! 
Case study structure 
11 
(RQ1)! 
Co-change 
frequency 
.c ? .mk
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
11 
(RQ1)! 
Co-change 
frequency 
.c ? .mk
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
11 
(RQ1)! 
Co-change 
frequency 
.c ? .mk 
(RQ3)! 
Most powerful 
co-change 
indicators
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
12 
(RQ1)! 
Co-change 
frequency 
.c ? .mk 
(RQ3)! 
Most powerful 
co-change 
indicators
The proportion of build changes that are 
accompanied by source code changes 
13 
.c ? .mk
The proportion of build changes that are 
accompanied by source code changes 
.mk .c .c .mk .mk .c 
13 
.c ? .mk
The proportion of build changes that are 
accompanied by source code changes 
13 
.c ? .mk 
.c .c 
Work! 
items 
.mk 
1 
.mk .mk .c 
2 3
The proportion of build changes that are 
accompanied by source code changes 
13 
.c ? .mk 
.c .c 
Work! 
items 
.mk 
1 
.mk .mk .c 
2 3 
2 build co-changes 
3 total build changes
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% 
14 
.c ? .mk
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% 
15 
.c ? .mk
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% 
16 
.c ? .mk
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
17 
(RQ1)! 
Co-change 
frequency 
.c ? .mk 
(RQ3)! 
Most powerful 
co-change 
indicators 
Most build 
changes are 
accompanied 
by source/test 
code changes
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
18 
(RQ1)! 
Co-change 
frequency 
.c ? .mk 
(RQ3)! 
Most powerful 
co-change 
indicators 
Most build 
changes are 
accompanied 
by source/test 
code changes
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
19
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
19 
Language-agnostic
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
19 
Language-agnostic 
+++ File added
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
19 
Language-agnostic 
+++ File added 
Historical .c 
.mk 
tendencies
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
Language-agnostic 
Language-aware 
19 
+++ File added 
Historical .c 
.mk 
tendencies
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
Language-agnostic 
Language-aware 
19 
+++ File added 
Historical .c 
.mk 
tendencies 
Changed 
dependencies 
import
Metrics that may indicate whether a code change 
will require an accompanying build co-change 
Language-agnostic 
Language-aware 
19 
+++ File added 
Historical .c 
.mk 
tendencies 
Changed 
dependencies 
import 
Changed! 
conditional 
compilation 
#ifdef
We train classifiers to identify code 
changes that require build changes 
.mk 
1 2 
20 
Work! 
items 
.c .c .c 
Random forest 
classification model 
Build change 
necessary 
No build change 
necessary
We train classifiers to identify code 
changes that require build changes 
.mk 
1 2 
20 
Work! 
items 
.c 
Ran.dcom .fcorest 
classification model 
Build change 
necessary 
No build change 
necessary
We train classifiers to identify code 
changes that require build changes 
.mk 
1 2 
21 
Work! 
items 
.c 
Random forest 
classification model 
Build change! 
necessary 
No build change 
necessary
We train classifiers to identify code 
changes that require build changes 
.mk 
1 2 
22 
Work! 
items 
.c .c .c 
Random forest 
classification model 
Build change 
necessary 
No build change 
necessary
We train classifiers to identify code 
changes that require build changes 
.mk 
1 2 
22 
Work! 
items 
.c 
.c .c 
Random forest 
classification model 
Build change 
necessary 
No build change 
necessary
We train classifiers to identify code 
changes that require build changes 
.mk 
1 2 
23 
Work! 
items 
.c .c 
Random forest 
classification model 
Build change 
necessary 
No build change! 
necessary
Language-aware metrics add 
significant explanatory power 
Mozilla Eclipse Lucene Jazz 
24 
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
Mozilla classifiers are highly 
accurate 
Mozilla Eclipse Lucene Jazz 
25 
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
Java classifiers are less accurate 
than Mozilla one 
Mozilla Eclipse Lucene Jazz 
26 
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
Java build changes are rarely! 
driven by code changes 
Category Task Amount Correctly 
System structure Refactorings 19 (25%) class8ified 
General build 
27 
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
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
28 
(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
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
29 
(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
Measuring variable importance in 
random forest classifiers 
30 
Var1 Var2 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
777 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3
Measuring variable importance in 
random forest classifiers 
30 
Var1 Var2 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
777 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3 
No 
Yes 
Yes
Measuring variable importance in 
random forest classifiers 
30 
Var1 Var2 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
777 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3 
No 
Yes 
Yes 
Misclassification rate of 
1 ÷ 3 = 0.33
Measuring variable importance in 
random forest classifiers 
30 
Var1 Var2 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
777 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3 
No 
Yes 
Yes 
Randomly 
permute values
Measuring variable importance in 
random forest classifiers 
31 
Var1 Var2 
777 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3
Measuring variable importance in 
random forest classifiers 
31 
Var1 Var2 
777 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3 
Yes 
Yes 
Yes
Measuring variable importance in 
random forest classifiers 
31 
Var1 Var2 
777 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3 
Yes 
Yes 
Yes 
Misclassification rate of 
2 ÷ 3 = 0.67
Measuring variable importance in 
random forest classifiers 
Var1 randomness increases 
misclassification rate by 0.33 
31 
Var1 Var2 
777 
500 
Random Forests! 
L. Breiman 
[Machine Learning 2001] 
150 
Build! 
change? 
No 
No 
Yes 
Var3 
2 
456 
111 
65 
4 
13 
Random forest 
classification model 
Classification 
Work! 
Item 
1 
2 
3 
Yes 
Yes 
Yes 
Misclassification rate of 
2 ÷ 3 = 0.67
Variable importance in the! 
Mozilla classifier 
Mozilla Eclipse−core ● 
● 
● 
● 
● ● ●● 
●● 
0.10 
0.05 
0.00 
Non−core dependencies 
Conditional compilation 
Test deleted 
Source modified 
Test added 
Source deleted 
Source added 
Prior build co−changes 
Test modified 
Source renamed 
Test renamed 
Test added 
Source deleted 
Source added 
Number of files 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
Test modified 
Source renamed 
Number of files 
Test renamed 
Source added 
Test Source Variable Importance Score 
32
Variable importance in the! 
Mozilla classifier 
Mozilla Eclipse−core ● 
● 
● 
● 
● ● ●● 
●● 
0.10 
0.05 
0.00 
Non−core dependencies 
Conditional compilation 
Test deleted 
Source modified 
Test added 
Source deleted 
Source added 
Prior build co−changes 
Test modified 
Source renamed 
Test renamed 
Test added 
Source deleted 
Source added 
Number of files 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
Test modified 
Source renamed 
Number of files 
Test renamed 
Source added 
Test Source Variable Importance Score 
32 
Structure-altering 
changes are 
most important in 
C++ classifiers
Variable importance in the! 
Mozilla classifier 
Mozilla Eclipse−core ● 
● 
● 
● 
● ● ●● 
●● 
0.10 
0.05 
0.00 
Non−core dependencies 
Conditional compilation 
Test deleted 
Source modified 
Test added 
Source deleted 
Source added 
Prior build co−changes 
Test modified 
Source renamed 
Test renamed 
Test added 
Source deleted 
Source added 
Number of files 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
Test modified 
Source renamed 
Number of files 
Test renamed 
Source added 
Test Source Variable Importance Score 
32 
Structure-altering 
changes are 
most important in 
C++ classifiers 
Historical co-change 
tendencies 
are also important
Variable importance in Java 
classifiers 
Eclipse−core Lucene Jazz 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
33 
● ●● 
●● 
● 
● 
● 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
Test modified 
Source renamed 
added 
Test added 
Source deleted 
Test added 
Source deleted 
Number of files 
Test renamed 
Source added 
Test modified 
Source renamed 
Non−core dependencies 
Test deleted 
Source modified 
Test added 
Source deleted 
Number of files 
Test renamed 
Source added 
Test modified 
Source renamed 
Test renamed
Variable importance in Java 
classifiers 
Eclipse−core Lucene Jazz 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
33 
● ●● 
●● 
● 
● 
● 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
Test modified 
Source renamed 
added 
Test added 
Source deleted 
Test added 
Source deleted 
Number of files 
Test renamed 
Source added 
Test modified 
Source renamed 
Non−core dependencies 
Test deleted 
Source modified 
Test added 
Source deleted 
Number of files 
Test renamed 
Source added 
Test modified 
Source renamed 
Test renamed 
Structure-altering is less 
important than in Mozilla
Variable importance in Java 
classifiers 
Eclipse−core Lucene Jazz 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
33 
● ●● 
●● 
● 
● 
● 
Non−core dependencies 
Prior build co−changes 
Test deleted 
Source modified 
Test modified 
Source renamed 
added 
Test added 
Source deleted 
Test added 
Source deleted 
Number of files 
Test renamed 
Source added 
Test modified 
Source renamed 
Non−core dependencies 
Test deleted 
Source modified 
Test added 
Source deleted 
Number of files 
Test renamed 
Source added 
Test modified 
Source renamed 
Test renamed 
Structure-altering is less 
important than in Mozilla 
Java classifiers rely more 
on historical co-change 
tendencies
! 
Case study structure 
(RQ2)! 
Co-change 
prediction 
accuracy 
34 
(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
Mining Co-Change Information to Understand when Build Changes are Necessary
Mining Co-Change Information to Understand when Build Changes are Necessary
Mining Co-Change Information to Understand when Build Changes are Necessary
Mining Co-Change Information to Understand when Build Changes are Necessary
Mining Co-Change Information to Understand when Build Changes are Necessary
Mining Co-Change Information to Understand when Build Changes are Necessary
Mining Co-Change Information to Understand when Build Changes are Necessary

Contenu connexe

Tendances

Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Shane McIntosh
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)Bram Adams
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Daniel Barker
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsDaniel Barker
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...Vincenzo Ferme
 
.Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 .Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 Amanda Rousseau
 
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...Work-Bench
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)Borislav Traykov
 
Team Development and Release Management
Team Development and Release ManagementTeam Development and Release Management
Team Development and Release ManagementSalesforce Partners
 
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build SystemsAn Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build Systemscorpaulbezemer
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMatthew McCullough
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineVeaceslav Gaidarji
 
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...Puppet
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyMatthew McCullough
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUGMatthew McCullough
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidyMarkus Werle
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Martin de Keijzer
 
Madrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultadesMadrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultadesJavier Delgado Garrido
 

Tendances (20)

Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
 
.Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 .Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017
 
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)
 
Team Development and Release Management
Team Development and Release ManagementTeam Development and Release Management
Team Development and Release Management
 
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build SystemsAn Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins Pipeline
 
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
 
Let your tests drive your code
Let your tests drive your codeLet your tests drive your code
Let your tests drive your code
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-Tidy
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
 
Madrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultadesMadrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultades
 

En vedette

Orchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionOrchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionShane McIntosh
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenanceShane McIntosh
 
130426 yujuan jiang - will my patch make it and how fast
130426   yujuan jiang - will my patch make it and how fast130426   yujuan jiang - will my patch make it and how fast
130426 yujuan jiang - will my patch make it and how fastPtidej Team
 
Icsm2009 adams ph_d
Icsm2009 adams ph_dIcsm2009 adams ph_d
Icsm2009 adams ph_dSAIL_QU
 
Studying the Evolution of Build Systems
Studying the Evolution of Build SystemsStudying the Evolution of Build Systems
Studying the Evolution of Build SystemsSAIL_QU
 
Msr2010 mc intosh
Msr2010 mc intoshMsr2010 mc intosh
Msr2010 mc intoshSAIL_QU
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenanceSAIL_QU
 
Module System in Standard ML
Module System in Standard MLModule System in Standard ML
Module System in Standard MLKeheliya Gallaba
 
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...Igor Wiese
 
Unicode - What you need to know
Unicode - What you need to knowUnicode - What you need to know
Unicode - What you need to knowKeheliya Gallaba
 
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...Igor Wiese
 
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...Igor Wiese
 
O que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasO que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasElaine Naomi
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 

En vedette (19)

Orchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionOrchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software Evolution
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
 
130426 yujuan jiang - will my patch make it and how fast
130426   yujuan jiang - will my patch make it and how fast130426   yujuan jiang - will my patch make it and how fast
130426 yujuan jiang - will my patch make it and how fast
 
Icsm2009 adams ph_d
Icsm2009 adams ph_dIcsm2009 adams ph_d
Icsm2009 adams ph_d
 
Studying the Evolution of Build Systems
Studying the Evolution of Build SystemsStudying the Evolution of Build Systems
Studying the Evolution of Build Systems
 
Msr2010 mc intosh
Msr2010 mc intoshMsr2010 mc intosh
Msr2010 mc intosh
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
 
Module System in Standard ML
Module System in Standard MLModule System in Standard ML
Module System in Standard ML
 
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
 
Unicode - What you need to know
Unicode - What you need to knowUnicode - What you need to know
Unicode - What you need to know
 
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
 
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
 
Qt Apresentação
Qt ApresentaçãoQt Apresentação
Qt Apresentação
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
O que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasO que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidas
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 

Similaire à Mining Co-Change Information to Understand when Build Changes are Necessary

Studying the Software Development Overhead of Build Systems
Studying the Software Development Overhead of Build SystemsStudying the Software Development Overhead of Build Systems
Studying the Software Development Overhead of Build SystemsSAIL_QU
 
Icse2011 src
Icse2011 srcIcse2011 src
Icse2011 srcSAIL_QU
 
Prepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenPrepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenSonatype
 
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenAll Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenFab L
 
Bounded Model Checking for C Programs in an Enterprise Environment
Bounded Model Checking for C Programs in an Enterprise EnvironmentBounded Model Checking for C Programs in an Enterprise Environment
Bounded Model Checking for C Programs in an Enterprise EnvironmentAdaCore
 
Advanced Techniques for Initiating the DevOps Journey
Advanced Techniques for Initiating the DevOps JourneyAdvanced Techniques for Initiating the DevOps Journey
Advanced Techniques for Initiating the DevOps JourneyCA Technologies
 
Keynote VST2020 (Workshop on Validation, Analysis and Evolution of Software ...
Keynote VST2020 (Workshop on  Validation, Analysis and Evolution of Software ...Keynote VST2020 (Workshop on  Validation, Analysis and Evolution of Software ...
Keynote VST2020 (Workshop on Validation, Analysis and Evolution of Software ...University of Antwerp
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityWeaveworks
 
Code quality
Code qualityCode quality
Code qualityProvectus
 
Continuous delivery from the trenches
Continuous delivery from the trenchesContinuous delivery from the trenches
Continuous delivery from the trenchesMichael Medin
 
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Atlassian
 
DevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsDevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsTechWell
 
Software Build processes and Git
Software Build processes and GitSoftware Build processes and Git
Software Build processes and GitAlec Clews
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationMd.Zahidur Rahman
 
Delivery at Scale
Delivery at ScaleDelivery at Scale
Delivery at ScaleAgilar
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019RackN
 
The Science of database CICD - UKOUG Breakthrough
The Science of database CICD - UKOUG BreakthroughThe Science of database CICD - UKOUG Breakthrough
The Science of database CICD - UKOUG BreakthroughJasmin Fluri
 
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationDelivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationAspire Systems
 
Building cloud native apps with .net core 3.0 and kubernetes
Building cloud native apps with .net core 3.0 and kubernetesBuilding cloud native apps with .net core 3.0 and kubernetes
Building cloud native apps with .net core 3.0 and kubernetesNilesh Gule
 

Similaire à Mining Co-Change Information to Understand when Build Changes are Necessary (20)

Studying the Software Development Overhead of Build Systems
Studying the Software Development Overhead of Build SystemsStudying the Software Development Overhead of Build Systems
Studying the Software Development Overhead of Build Systems
 
Icse2011 src
Icse2011 srcIcse2011 src
Icse2011 src
 
Prepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenPrepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/Green
 
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenAll Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
 
Bounded Model Checking for C Programs in an Enterprise Environment
Bounded Model Checking for C Programs in an Enterprise EnvironmentBounded Model Checking for C Programs in an Enterprise Environment
Bounded Model Checking for C Programs in an Enterprise Environment
 
Advanced Techniques for Initiating the DevOps Journey
Advanced Techniques for Initiating the DevOps JourneyAdvanced Techniques for Initiating the DevOps Journey
Advanced Techniques for Initiating the DevOps Journey
 
Keynote VST2020 (Workshop on Validation, Analysis and Evolution of Software ...
Keynote VST2020 (Workshop on  Validation, Analysis and Evolution of Software ...Keynote VST2020 (Workshop on  Validation, Analysis and Evolution of Software ...
Keynote VST2020 (Workshop on Validation, Analysis and Evolution of Software ...
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
 
Code quality
Code qualityCode quality
Code quality
 
Continuous delivery from the trenches
Continuous delivery from the trenchesContinuous delivery from the trenches
Continuous delivery from the trenches
 
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
 
DevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsDevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More Defects
 
Software Build processes and Git
Software Build processes and GitSoftware Build processes and Git
Software Build processes and Git
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
 
Delivery at Scale
Delivery at ScaleDelivery at Scale
Delivery at Scale
 
Delivery at Scale
Delivery at ScaleDelivery at Scale
Delivery at Scale
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019
 
The Science of database CICD - UKOUG Breakthrough
The Science of database CICD - UKOUG BreakthroughThe Science of database CICD - UKOUG Breakthrough
The Science of database CICD - UKOUG Breakthrough
 
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationDelivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous Integration
 
Building cloud native apps with .net core 3.0 and kubernetes
Building cloud native apps with .net core 3.0 and kubernetesBuilding cloud native apps with .net core 3.0 and kubernetes
Building cloud native apps with .net core 3.0 and kubernetes
 

Dernier

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 

Dernier (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 

Mining Co-Change Information to Understand when Build Changes are Necessary

  • 1. Mining Co-Change Information to Understand when Build Changes are Necessary @shane_mcintosh Shane McIntosh Bram Adams Meiyappan Nagappan Ahmed E. Hassan
  • 2. What is a build system? Source code 2
  • 3. What is a build system? Source code Deliverable 2
  • 4. Build systems describe how sources are! .c .cc .tex .o .o .dvi .a .exe .pdf .deb translated into deliverables 3
  • 5. Continuous Integration:! Enabled by the build system 4 .c .mk
  • 6. Continuous Integration:! Enabled by the build system Commit 4 Commit 9719cf0 .c .mk
  • 7. Continuous Integration:! Enabled by the build system Commit 4 Build Commit 9719cf0 .c .mk
  • 8. Continuous Integration:! Enabled by the build system Commit 4 Build Test Commit 9719cf0 .c .mk
  • 9. Commit 9719cf0 Continuous Integration:! Enabled by the build system Commit 4 Build Test Report Commit 9719cf0 was successfully integrated .c .mk
  • 10. Commit 9719cf0 Continuous Integration:! Enabled by the build system Commit 4 Build Test Report Commit 9719cf0 was successfully integrated .c .mk
  • 11. “...nothing can be said to be certain, except death and taxes” - Benjamin Franklin The Build “Tax” Up to 27% of source changes require build changes, too! An Empirical Study of Build Maintenance Effort! S. McIntosh, B. Adams, T. H. D. Nguyen, Y. Kamei, A. E. Hassan [ICSE 2011] 5
  • 12. Neglected build maintenance! is a frequent cause build breaks 6 .c .mk
  • 13. Commit Neglected build maintenance! is a frequent cause build breaks 6 Commit aedd38 .c .mk
  • 14. Commit Neglected build maintenance! is a frequent cause build breaks 6 Commit aedd38 .c .mk
  • 15. Commit Neglected build maintenance! is a frequent cause build breaks 6 Build Commit aedd38 .c .mk
  • 16. Commit Neglected build maintenance! is a frequent cause build breaks 6 Build Test Commit aedd38 .c .mk
  • 17. Commit Neglected build maintenance! is a frequent cause build breaks 6 Build Test Commit aedd38 .c .mk
  • 18. Commit Neglected build maintenance! is a frequent cause build breaks 6 Build Test Report Commit aedd38 .c .mk Commit aedd38 broke the build!
  • 19. Neglected build maintenance! can even impact end users 7
  • 20. Neglected build maintenance! can even impact end users 7 Not working due to linking of incorrect SQLite library version
  • 21. Neglected build maintenance! can even impact end users 7 When are build! changes necessary? Not working due to linking of incorrect SQLite library version
  • 22. Overview of the studied systems 8 C++ Java
  • 23. Overview of the studied systems 8 C++ Java
  • 24. Overview of the studied systems 8 C++ Java 13 years of historical data
  • 25. Overview of the studied systems 8 C++ Java 13 years of historical data Single build system for Firefox, Thunderbird, etc.
  • 26. Overview of the studied systems 8 C++ Java 13 years of historical data Single build system for Firefox, Thunderbird, etc. Total of 16 years of historical data
  • 27. Overview of the studied systems 8 C++ Java 13 years of historical data Single build system for Firefox, Thunderbird, etc. Total of 16 years of historical data Proprietary and open source systems
  • 28. Semi-automatic identification of file types using naming conventions .m..cck ..ad.caht 9
  • 29. Semi-automatic identification of file types using naming conventions .c .mk .c Source Build Test .h .dat .ac Source Test Build 9
  • 30. Grouping related changes according to the work items that they address 10
  • 31. Grouping related changes according to the work items that they address .c .c .c Changes .mk 10
  • 32. Grouping related changes according to the work items that they address Missed code! in #2121 .c .c .c Add feature! #2121 Fix for! bug #1234 Changes Transactions .mk 10
  • 33. Grouping related changes according to the work items that they address Missed code! 2121 in #2121 .c .c .c Add feature! #2121 Fix for! bug #1234 1234 Changes Transactions Work items .mk 10
  • 34. 11
  • 35. ! Case study structure 11
  • 36. ! Case study structure 11 (RQ1)! Co-change frequency .c ? .mk
  • 37. ! Case study structure (RQ2)! Co-change prediction accuracy 11 (RQ1)! Co-change frequency .c ? .mk
  • 38. ! Case study structure (RQ2)! Co-change prediction accuracy 11 (RQ1)! Co-change frequency .c ? .mk (RQ3)! Most powerful co-change indicators
  • 39. ! Case study structure (RQ2)! Co-change prediction accuracy 12 (RQ1)! Co-change frequency .c ? .mk (RQ3)! Most powerful co-change indicators
  • 40. The proportion of build changes that are accompanied by source code changes 13 .c ? .mk
  • 41. The proportion of build changes that are accompanied by source code changes .mk .c .c .mk .mk .c 13 .c ? .mk
  • 42. The proportion of build changes that are accompanied by source code changes 13 .c ? .mk .c .c Work! items .mk 1 .mk .mk .c 2 3
  • 43. The proportion of build changes that are accompanied by source code changes 13 .c ? .mk .c .c Work! items .mk 1 .mk .mk .c 2 3 2 build co-changes 3 total build changes
  • 44. 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% 14 .c ? .mk
  • 45. 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% 15 .c ? .mk
  • 46. 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% 16 .c ? .mk
  • 47. ! Case study structure (RQ2)! Co-change prediction accuracy 17 (RQ1)! Co-change frequency .c ? .mk (RQ3)! Most powerful co-change indicators Most build changes are accompanied by source/test code changes
  • 48. ! Case study structure (RQ2)! Co-change prediction accuracy 18 (RQ1)! Co-change frequency .c ? .mk (RQ3)! Most powerful co-change indicators Most build changes are accompanied by source/test code changes
  • 49. Metrics that may indicate whether a code change will require an accompanying build co-change 19
  • 50. Metrics that may indicate whether a code change will require an accompanying build co-change 19 Language-agnostic
  • 51. Metrics that may indicate whether a code change will require an accompanying build co-change 19 Language-agnostic +++ File added
  • 52. Metrics that may indicate whether a code change will require an accompanying build co-change 19 Language-agnostic +++ File added Historical .c .mk tendencies
  • 53. Metrics that may indicate whether a code change will require an accompanying build co-change Language-agnostic Language-aware 19 +++ File added Historical .c .mk tendencies
  • 54. Metrics that may indicate whether a code change will require an accompanying build co-change Language-agnostic Language-aware 19 +++ File added Historical .c .mk tendencies Changed dependencies import
  • 55. Metrics that may indicate whether a code change will require an accompanying build co-change Language-agnostic Language-aware 19 +++ File added Historical .c .mk tendencies Changed dependencies import Changed! conditional compilation #ifdef
  • 56. We train classifiers to identify code changes that require build changes .mk 1 2 20 Work! items .c .c .c Random forest classification model Build change necessary No build change necessary
  • 57. We train classifiers to identify code changes that require build changes .mk 1 2 20 Work! items .c Ran.dcom .fcorest classification model Build change necessary No build change necessary
  • 58. We train classifiers to identify code changes that require build changes .mk 1 2 21 Work! items .c Random forest classification model Build change! necessary No build change necessary
  • 59. We train classifiers to identify code changes that require build changes .mk 1 2 22 Work! items .c .c .c Random forest classification model Build change necessary No build change necessary
  • 60. We train classifiers to identify code changes that require build changes .mk 1 2 22 Work! items .c .c .c Random forest classification model Build change necessary No build change necessary
  • 61. We train classifiers to identify code changes that require build changes .mk 1 2 23 Work! items .c .c Random forest classification model Build change necessary No build change! necessary
  • 62. Language-aware metrics add significant explanatory power Mozilla Eclipse Lucene Jazz 24 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
  • 63. Mozilla classifiers are highly accurate Mozilla Eclipse Lucene Jazz 25 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
  • 64. Java classifiers are less accurate than Mozilla one Mozilla Eclipse Lucene Jazz 26 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
  • 65. Java build changes are rarely! driven by code changes Category Task Amount Correctly System structure Refactorings 19 (25%) class8ified General build 27 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
  • 66. ! Case study structure (RQ2)! Co-change prediction accuracy 28 (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
  • 67. ! Case study structure (RQ2)! Co-change prediction accuracy 29 (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
  • 68. Measuring variable importance in random forest classifiers 30 Var1 Var2 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 777 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3
  • 69. Measuring variable importance in random forest classifiers 30 Var1 Var2 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 777 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3 No Yes Yes
  • 70. Measuring variable importance in random forest classifiers 30 Var1 Var2 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 777 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3 No Yes Yes Misclassification rate of 1 ÷ 3 = 0.33
  • 71. Measuring variable importance in random forest classifiers 30 Var1 Var2 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 777 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3 No Yes Yes Randomly permute values
  • 72. Measuring variable importance in random forest classifiers 31 Var1 Var2 777 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3
  • 73. Measuring variable importance in random forest classifiers 31 Var1 Var2 777 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3 Yes Yes Yes
  • 74. Measuring variable importance in random forest classifiers 31 Var1 Var2 777 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3 Yes Yes Yes Misclassification rate of 2 ÷ 3 = 0.67
  • 75. Measuring variable importance in random forest classifiers Var1 randomness increases misclassification rate by 0.33 31 Var1 Var2 777 500 Random Forests! L. Breiman [Machine Learning 2001] 150 Build! change? No No Yes Var3 2 456 111 65 4 13 Random forest classification model Classification Work! Item 1 2 3 Yes Yes Yes Misclassification rate of 2 ÷ 3 = 0.67
  • 76. Variable importance in the! Mozilla classifier Mozilla Eclipse−core ● ● ● ● ● ● ●● ●● 0.10 0.05 0.00 Non−core dependencies Conditional compilation Test deleted Source modified Test added Source deleted Source added Prior build co−changes Test modified Source renamed Test renamed Test added Source deleted Source added Number of files Non−core dependencies Prior build co−changes Test deleted Source modified Test modified Source renamed Number of files Test renamed Source added Test Source Variable Importance Score 32
  • 77. Variable importance in the! Mozilla classifier Mozilla Eclipse−core ● ● ● ● ● ● ●● ●● 0.10 0.05 0.00 Non−core dependencies Conditional compilation Test deleted Source modified Test added Source deleted Source added Prior build co−changes Test modified Source renamed Test renamed Test added Source deleted Source added Number of files Non−core dependencies Prior build co−changes Test deleted Source modified Test modified Source renamed Number of files Test renamed Source added Test Source Variable Importance Score 32 Structure-altering changes are most important in C++ classifiers
  • 78. Variable importance in the! Mozilla classifier Mozilla Eclipse−core ● ● ● ● ● ● ●● ●● 0.10 0.05 0.00 Non−core dependencies Conditional compilation Test deleted Source modified Test added Source deleted Source added Prior build co−changes Test modified Source renamed Test renamed Test added Source deleted Source added Number of files Non−core dependencies Prior build co−changes Test deleted Source modified Test modified Source renamed Number of files Test renamed Source added Test Source Variable Importance Score 32 Structure-altering changes are most important in C++ classifiers Historical co-change tendencies are also important
  • 79. Variable importance in Java classifiers Eclipse−core Lucene Jazz Non−core dependencies Prior build co−changes Test deleted Source modified 33 ● ●● ●● ● ● ● Non−core dependencies Prior build co−changes Test deleted Source modified Test modified Source renamed added Test added Source deleted Test added Source deleted Number of files Test renamed Source added Test modified Source renamed Non−core dependencies Test deleted Source modified Test added Source deleted Number of files Test renamed Source added Test modified Source renamed Test renamed
  • 80. Variable importance in Java classifiers Eclipse−core Lucene Jazz Non−core dependencies Prior build co−changes Test deleted Source modified 33 ● ●● ●● ● ● ● Non−core dependencies Prior build co−changes Test deleted Source modified Test modified Source renamed added Test added Source deleted Test added Source deleted Number of files Test renamed Source added Test modified Source renamed Non−core dependencies Test deleted Source modified Test added Source deleted Number of files Test renamed Source added Test modified Source renamed Test renamed Structure-altering is less important than in Mozilla
  • 81. Variable importance in Java classifiers Eclipse−core Lucene Jazz Non−core dependencies Prior build co−changes Test deleted Source modified 33 ● ●● ●● ● ● ● Non−core dependencies Prior build co−changes Test deleted Source modified Test modified Source renamed added Test added Source deleted Test added Source deleted Number of files Test renamed Source added Test modified Source renamed Non−core dependencies Test deleted Source modified Test added Source deleted Number of files Test renamed Source added Test modified Source renamed Test renamed Structure-altering is less important than in Mozilla Java classifiers rely more on historical co-change tendencies
  • 82. ! Case study structure (RQ2)! Co-change prediction accuracy 34 (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