Icsm2009 adams ph_d

Preview:

Citation preview

Bram Adams

SAIL, Queen's University

http://

sailhome.cs.queensu.ca/

~bram/

Co-evolution of Source Code and the Build System

Supervisors:

Herman Tromp GH-SEL, Ghent University

Wolfgang De MeuterSOFT, Vrije Universiteit Brussel

Source code and build system

co-evolve.

We need tools and techniques to understand

this co-evolution.

12

?

Building a Car

http://behrns.files.wordpress.com/2008/03/ikea-car.jpg

13

Building a Car: Configuration

1. features

2. tools

14

Building a Car: Actual Building

1. prescriptions

2. dependencies

17

?

Building Software

19

Configuration Layer

1. features 2. tools

20

Build Layer

1. prescriptions 2. dependencies

21

+

Build System

Source Code

24

ThunderbirdCaminoSunbirdNVUFirefoxSeaMonkeyGecko

Component Reuse

Mozilla Suitesource code reuse

25

Build System Reuse?

???

Source code and build system

co-evolve.

We need tools and techniques to understand

this co-evolution.

1.Research Hypothesis

2.Tool Support to Understand Build Systems

3.Evolution of Linux Kernel Build System

4.Conceptual Reasons of Co-evolution

5.The Pitfalls of PhD Research

6.Conclusion

33

Understanding the Build System

embeddedGython

MAKAO

[ICSM '07]

34

quake3.exe

network

d(a)emon

client UI

client renderer

server

game logic

Quake 3

34

original game

expansion

pack

Quake 3 conditional compilation

35

36

Industrial C System

17

38

(error==0).visible=0

dead code

18

1.Research Hypothesis

2.Tool Support to Understand Build Systems

3.Evolution of Linux Kernel Build System

4.Conceptual Reasons of Co-evolution

5.The Pitfalls of PhD Research

6.Conclusion

41

Linux Case Study

time

0.01 1.0

1.2.0

2.0.1

2.2.0

2.4.0

2.6.0

2.6.21.5

[ERCIM '07]

43

growth

Evolution of SLOC#fi

les

44

maintenance to reduce complexity

2.4.02.6.0

Evolution of #dependencies

48

Linux 2.4.0

23

49

Linux 2.6.16.18

24

50

FORCE composite object

circulardependency

chainBuild Idioms

1.Research Hypothesis

2.Tool Support to Understand Build Systems

3.Evolution of Linux Kernel Build System

4.Conceptual Reasons of Co-evolution

5.The Pitfalls of PhD Research

6.Conclusion

60

1. Modular source code needs a modular build

systempure recursive

makelist-style

recursive make

8 yearsnon-recursive

make2 years

recursive make with external

build directory

3 years

61

2. The Build System is an Executable Specification of the

Architecture

61

62

3. Correctness Trumps Efficiency

speculatively removing

sourcecode

dependenciesto speed up

the build

inconsistent build products

drastic speed improvements

63

4. Configuration Layer Controls the Static Variability of Source Code

1.Research Hypothesis

2.Tool Support to Understand Build Systems

3.Evolution of Linux Kernel Build System

4.Conceptual Reasons of Co-evolution

5.The Pitfalls of PhD Research

6.Conclusion

65

I'm Grateful my Supervisors ...

•gave me the freedom to develop my "hobby project" into a PhD dissertation

•stimulated me to attend conferences and workshops

•taught me to learn from rejected papers

66

I Should Have Known that ...

•a concise dissertation is more impressive than a wordy one ;-)

•even vegetarians like salami slicing

•statistics is your friend

1.Research Hypothesis

2.Tool Support to Understand Build Systems

3.Evolution of Linux Kernel Build System

4.Conceptual Reasons of Co-evolution

5.The Pitfalls of PhD Research

6.Conclusion

68

Questions?

Recommended