26
A Large-Scale Empirical Study of the Relationship between Build Technology and Build Maintenance Shane McIntosh Ahmed E. Hassan Bram Adams Meiyappan Nagappan Audris Mockus

Buildtechs

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Buildtechs

A Large-Scale Empirical Study of the Relationship between Build

Technology and Build Maintenance

ShaneMcIntosh

Ahmed E. Hassan

BramAdams

MeiyappanNagappan

Audris Mockus

Page 2: Buildtechs

What is a build system?Source code

2

Page 3: Buildtechs

What is a build system?Source code

2

Deliverable

Page 4: Buildtechs

3

.tex

.c

.cc

.o

.o

.dvi

Build systems describe how sources are translated into deliverables

.a

.exe

.pdf

.deb

Page 5: Buildtechs

4) Publishresults

1) Listen forchanges

2) Buildchanges

3) Executetests

ContinuousIntegration:Enabled by

the build system

4

Page 6: Buildtechs

“...nothing can be said to be certain, except death and taxes”

- Benjamin Franklin

The Build “Tax”

An Empirical Study of Build Maintenance EffortS. 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 7: Buildtechs

Teams even migrate to different build technologies

6

Page 8: Buildtechs

...But does build technology really influence build

maintenance activity?

7

Page 9: Buildtechs

Low-Level

Abstraction-Based

Low-level scripts generated from

project metadata

Framework-Driven

Assumes standard project layout and

dependencies

8

MakeRake

Autotools

Dependency Management

Automatically manages 3rd-party API dependencies

File-level dependencies are explicitly declared

Page 10: Buildtechs

Low-Level

Abstraction-Based

File-level dependencies are explicitly declared

Low-level scripts generated from

project metadata

Framework-Driven

Assumes standard project layout and

dependencies

9

MakeRake

Autotools

Dependency Management

Automatically manages 3rd-party API dependencies

Page 11: Buildtechs

Low-Level

Abstraction-Based

File-level dependencies are explicitly declared

Low-level scripts generated from

project metadata

Framework-Driven

Assumes standard project layout and

dependencies

10

MakeRake

Autotools

Dependency Management

Automatically manages 3rd-party API dependencies

Page 12: Buildtechs

Low-Level

Abstraction-Based

File-level dependencies are explicitly declared

Low-level scripts generated from

project metadata

Framework-Driven

Assumes standard project layout and

dependencies

11

MakeRake

Autotools

Dependency Management

Automatically manages 3rd-party API dependencies

Page 13: Buildtechs

Low-Level

Abstraction-Based

File-level dependencies are explicitly declared

Low-level scripts generated from

project metadata

Framework-Driven

Assumes standard project layout and

dependencies

12

MakeRake

Autotools

Dependency Management

Automatically manages 3rd-party API dependencies

Page 14: Buildtechs

Amassing and indexing a large sample of version

control systemsTowards the census of public

source code historyA. Mockus [MSR 2009]

Mining a Large-Scale Corpus

843,976 source code repositories!

13

Page 15: Buildtechs

Amassing and indexing a large sample of version

control systemsTowards the census of public

source code historyA. Mockus [MSR 2009]

repo.or.cz

Software ForgesMining a Large-

Scale Corpus

843,976 source code repositories!

13

Page 16: Buildtechs

Amassing and indexing a large sample of version

control systemsTowards the census of public

source code historyA. Mockus [MSR 2009]

repo.or.cz

Software Forges

Software Ecosystems

Mining a Large-Scale Corpus

843,976 source code repositories!

13

Page 17: Buildtechs

Amassing and indexing a large sample of version

control systemsTowards the census of public

source code historyA. Mockus [MSR 2009]

repo.or.cz

Software Forges

Software Ecosystems

Large Projects

Mining a Large-Scale Corpus

843,976 source code repositories!

13

Page 18: Buildtechs

Low−level Abstraction Frame Dependency

0

100

200

Ant Jam Makefile Rake SCons Autotools CMake Maven Bundler Ivy

Build

chu

rn ra

teFramework builds tend to churn most repo.or.cz

Software Forges

14

Page 19: Buildtechs

−0.2

0.2

0.4

0.6

0.8

1.0

1.2

Apache − Ant vs. Maven Debian − Make vs. Autotools GNU − Make vs. Autotools

Logi

cal c

oupl

ing

Source code coupling is tightest with framework

and abstraction

Low-level Abstraction

Software Ecosystems

15

Low-level Framework Low-level Abstraction

Page 20: Buildtechs

● ●

●●

●●

●●

●●●●

●●

●●

●●

● ●●

●●●

●●

●●

0.05

0.10

0.15

0.20

2006 2008 2010

Build

aut

hor r

atio

Android

● ●

●●

●●

●●

●●

● ●●

●●

●●

●●

●●

●●●

●●

●●

● ●

●●

●●

●●

●● ●

●●

●●

●● ●

0.4

0.5

0.6

0.7

2000 2004 2008

Build

aut

hor r

atio

GNOME

●●

●●

●●

● ●

● ●

● ●●

●●

● ●

●●

●●

● ●

●●

● ●

●●

● ●●

●●

●●

● ●

●●

●●

●●

●●●

●●

●●

● ●

●●

●●

● ●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●●

● ●●

●●

0.25

0.50

0.75

1.00

1996 2000 2004 2008 2012

Build

aut

hor r

atio

PostgreSQL

●●

●●

●●

●●

●●

●●

●●

●● ●

●●

●●

●●

●●

●●●

●●●

●●

●●

0.00

0.25

0.50

0.75

1.00

2000 2004 2008 2012

Build

aut

hor r

atio

KDE

AutotoolsAuthorshipdecreases

Large Projects

16

Migration helps!

Page 21: Buildtechs

● ●

●●

●●

●●

●●●●

●●

●●

●●

● ●●

●●●

●●

●●

0.05

0.10

0.15

0.20

2006 2008 2010

Build

aut

hor r

atio

Android

● ●

●●

●●

●●

●●

● ●●

●●

●●

●●

●●

●●●

●●

●●

● ●

●●

●●

●●

●● ●

●●

●●

●● ●

0.4

0.5

0.6

0.7

2000 2004 2008

Build

aut

hor r

atio

GNOME

●●

●●

●●

● ●

● ●

● ●●

●●

● ●

●●

●●

● ●

●●

● ●

●●

● ●●

●●

●●

● ●

●●

●●

●●

●●●

●●

●●

● ●

●●

●●

● ●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●●

● ●●

●●

0.25

0.50

0.75

1.00

1996 2000 2004 2008 2012

Build

aut

hor r

atio

PostgreSQL

●●

●●

●●

●●

●●

●●

●●

●● ●

●●

●●

●●

●●

●●●

●●●

●●

●●

0.00

0.25

0.50

0.75

1.00

2000 2004 2008 2012

Build

aut

hor r

atio

KDE

AutotoolsAuthorshipdecreases

Large Projects

Teams dedicate build experts to help cope

with the build tax16

Migration helps!

Page 22: Buildtechs
Page 23: Buildtechs
Page 24: Buildtechs
Page 25: Buildtechs
Page 26: Buildtechs