buildtechs

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

Upload: shane-mcintosh

Post on 15-Jan-2015

240 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

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