41
Studying the Evolution of Build Systems Shane McIntosh Queen’s University

Studying the Evolution of Build Systems

  • Upload
    sailqu

  • View
    44

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Studying the Evolution of Build Systems

Studying the Evolution of Build

SystemsShane McIntosh

Queen’s University

Page 2: Studying the Evolution of Build Systems

What is the build system?

2

Page 3: Studying the Evolution of Build Systems

Build systems help practitioners

3

OK Testers

Developers

Managers

Page 4: Studying the Evolution of Build Systems

Build systems require 12%

of a developer’stime (on average)

4

Kumfert, G., and Epperly, T.Software in the DOE: The

Hidden Overhead of the “Build”

Page 5: Studying the Evolution of Build Systems

Address Bar Search Bar

5

4 months beforethe issue was fixed!

Page 6: Studying the Evolution of Build Systems

Research hypothesisBuild system maintenance imposes a

significant degree of overhead on software development

6

Page 7: Studying the Evolution of Build Systems

Studied projects

PLplot7

>30 MLOC!

Page 8: Studying the Evolution of Build Systems

Thesis Overview

1.0 1.1 2.01.High level

evolution analysis

2. Fine-grainedevolution analysis

3. Maintenance Overhead analysis

8

Acceptance Ratio:16/51 = 31%

1.0 2.0

Acceptance Ratio: 62/441 = 14%

1.0 2.0

Page 9: Studying the Evolution of Build Systems

High level evolution

1.Code analysis: Do the static size and complexity of source code and build system evolve similarly?

2.Runtime analysis: Does the build-time complexity evolve?

91.0 1.1 2.0

Page 10: Studying the Evolution of Build Systems

Our approach

10

Page 11: Studying the Evolution of Build Systems

Code analysis(Static)

1.Do the static size and complexity of source code and build system evolve similarly?

2.Does the build-time complexity evolve?

111.0 1.1 2.0

Page 12: Studying the Evolution of Build Systems

12

ANTLRAbstraction

Module Restructuring

Module Restructuring

Source & Build Change Together!

Page 13: Studying the Evolution of Build Systems

Runtime analysis (Dynamic)

1.Do the static size and complexity of source code and build system evolve similarly?

2.Does the build-time complexity evolve?

131.0 1.1 2.0

Page 14: Studying the Evolution of Build Systems

Libs builtfrom source

Build length increases over time

14

Page 15: Studying the Evolution of Build Systems

High level evolution results1.Do the static size and complexity of

source code and build system evolve similarly?

2.Does the build-time complexity evolve?

15

Yes, but events may impact build and

source differently.Yes, length tends to

grow as projects age.

Page 16: Studying the Evolution of Build Systems

Release granularity is too

coarse!1 2 31.1 1.21.1.1 1.1.2 1.1.3

Fixed bug #1234

Added feature #1212

Issue #4444: restructured

module16

Page 17: Studying the Evolution of Build Systems

Fine-grained evolution

1.How many files does a typical build system consist of?

2.How much does a typical build system churn?

3.How large are typical build system changes?

171.0 2.0

Page 18: Studying the Evolution of Build Systems

Revision tagging

1.1.1 1.1.2

Fixed bug #1234 Added feature #1212

Issue #4444: Restructured

module18

Page 19: Studying the Evolution of Build Systems

Revision tagging

Fixed bug #1234

19

Page 20: Studying the Evolution of Build Systems

Size of the build system

1.How many files does a typical build system consist of?

2.How much does a typical build system churn?

3.How large are typical build system changes?

201.0 2.0

Page 21: Studying the Evolution of Build Systems

Build accounts for 9% of files (median)

21

Page 22: Studying the Evolution of Build Systems

Build system rate of change

1.How many files does a typical build system consist of?

2.How much does a typical build system churn?

3.How large are typical build system changes?

221.0 2.0

Page 23: Studying the Evolution of Build Systems

High churn may result in post-release bugs!

Normalized churn is on par with source code

23

Page 24: Studying the Evolution of Build Systems

Size of build changes

1.How many files does a typical build system consist of?

2.How much does a typical build system churn?

3.How large are typical build system changes?

241.0 2.0

Page 25: Studying the Evolution of Build Systems

Build changes add and delete 3-4

linesSource changes add and delete 6-

11 lines25

Page 26: Studying the Evolution of Build Systems

26

Fine-grained evolution1.How many files does a typical build

system consist of?

2.How much does a typical build system churn?

3.How large are typical build system changes?

9% of filesOn par with

sourceAdds and deletes 3-4

lines

Page 27: Studying the Evolution of Build Systems

How do projects cope with build maintenance?

27

Page 28: Studying the Evolution of Build Systems

Build maintenance overhead

1.How often are build changes required to complete development tasks?

2.How do projects distribute build maintenance work?

281.0 2.0

Page 29: Studying the Evolution of Build Systems

Logical coupling

29

LC(Source ⇒ Bld)

= 2 ÷ 4 = 50% 1.0 2.0

Page 30: Studying the Evolution of Build Systems

Logical coupling at revision level is

low!

30

Source ⇒ Build coupling well below 12% estimation!

Page 31: Studying the Evolution of Build Systems

Work item grouping

1.1.1 1.1.2

Fixed bug #1234 Added feature #1212

Issue #4444: Restructured

module31

Page 32: Studying the Evolution of Build Systems

Work item grouping

1.1.1 1.1.2

Fixed bug #1234Oops, forgot somecode for bug

#1234

Page 33: Studying the Evolution of Build Systems

Work item grouping

Bug #1234

33

Fixed bug #1234Oops, forgot somecode for bug

#1234

Page 34: Studying the Evolution of Build Systems

Task-centric analysis

1.How often are build changes required to complete development tasks?

2.How do projects distribute build maintenance work?

341.0 2.0

Page 35: Studying the Evolution of Build Systems

Work item coupling to the

build is high

35

Mozilla’s Source ⇒ Build coupling is very high!

Page 36: Studying the Evolution of Build Systems

Developer-centricanalysis

1.How often are build changes required to complete development tasks?

2.How do projects distribute build maintenance work?

361.0 2.0

Page 37: Studying the Evolution of Build Systems

If you produce source code, do you produce

build code?

37

Page 38: Studying the Evolution of Build Systems

Dispersed Ownership:

Build maintenance is

distributed amongst most team members

38

Concentrated Ownership:

A small team isresponsible for most

of the build maintenance

Page 39: Studying the Evolution of Build Systems

Build maintenance overhead1.How often are build changes

required to complete development tasks?

2.How do projects distribute build maintenance work?

Up to 27% require build changes

Dispersed or concentrated

Page 40: Studying the Evolution of Build Systems

Potential bias Studiedprojects

Allprojects

40

Page 41: Studying the Evolution of Build Systems

41

Questions?