Icse2011 src

37
Build System Maintenance Shane McIntosh

Transcript of Icse2011 src

Build System Maintenance

Shane McIntosh

What is the build system?

2

.c

.c

What is the build system?

2

.c

.c

.o

.o

.exe

Build code is complex...

3

Build Maintenance is a Nuisance for Developers

4

Build Maintenance is a Nuisance for Developers

4

Build Maintenance is a Nuisance for Developers

4Autotools

Make

Build Maintenance is a Nuisance for Developers

4Autotools

Make

Migration to newer build technology

5

Build Bugs Even Affect the End User!

Address Bar

5

Build Bugs Even Affect the End User!

Address Bar Search Bar

5

Build Bugs Even Affect the End User!

Address Bar Search Bar

5

Build Bugs Even Affect the End User!

Address Bar Search Bar

5

Build Bugs Even Affect the End User!

Build Systems Require 12%of a Developer’s

Time (on average)

6

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

Hidden Overhead of the “Build”

Build Systems Require 12%of a Developer’s

Time (on average)

6

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

Hidden Overhead of the “Build”

Build maintenanceslows development!

7

Size Evolution Coupling People

Four Dimensional Study of Build Maintenance

.mk⇒?

.c

8

8

PLplot

9

PLplot

.mk⇒?

.c

Size

9% ofall files

Evolution Coupling

Tightly coupled

People

Dispersed or concentrated

Build churn >> src churn

10

PLplot

.mk⇒?

.c

Size

9% ofall files

Evolution Coupling

Tightly coupled

People

Dispersed or concentrated

Build churn >> src churn

Identifying build maintainers

.c .c .c .ac.c

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

25% build

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

25% build

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

0% build

25% build

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

0% build

25% build

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

0% build 50% build

25% build

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

0% build 50% build

SourceBuild

.c .c

Identifying build maintainers

Change list #1

.c .c .c

Change list #3

Change list #4

.ac.c

Change list #2

0% build 50% build

SourceBuild

.c .c

If you maintain source code, do you maintain build code?

12

25%22%

79%

% of developers

If you maintain source code, do you maintain build code?

12

25%22%

79%

% of developers

Dispersed Ownership:

Build maintenance isdistributed amongst most team members

13

Dispersed Ownership:

Build maintenance isdistributed amongst most team members

13

Concentrated Ownership:A small team is

responsible for mostof the build maintenance

Dispersed Ownership:

Build maintenance isdistributed amongst most team members

13

Concentrated Ownership:A small team is

responsible for mostof the build maintenance

Which build ownership style performs best?

Tool Support Needed for Build Maintenance!

14

Build churn >> source churn

Build maintenance required for 27% of source code tasks

15

PLplot

.mk⇒?

.c

Size

9% ofall files

Evolution Coupling

Tightly coupled

People

Dispersed or concentrated

Build churn >> src churn

15

PLplot

.mk⇒?

.c

Size

9% ofall files

Evolution Coupling

Tightly coupled

People

Dispersed or concentrated

Build churn >> src churn

Questions?