35
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 Meuter SOFT, Vrije Universiteit Brussel

Icsm2009 adams ph_d

  • Upload
    sailqu

  • View
    53

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Icsm2009 adams ph_d

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

Page 2: Icsm2009 adams ph_d

Source code and build system

co-evolve.

We need tools and techniques to understand

this co-evolution.

Page 3: Icsm2009 adams ph_d

12

?

Building a Car

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

Page 4: Icsm2009 adams ph_d

13

Building a Car: Configuration

1. features

2. tools

Page 5: Icsm2009 adams ph_d

14

Building a Car: Actual Building

1. prescriptions

2. dependencies

Page 6: Icsm2009 adams ph_d

17

?

Building Software

Page 7: Icsm2009 adams ph_d

19

Configuration Layer

1. features 2. tools

Page 8: Icsm2009 adams ph_d

20

Build Layer

1. prescriptions 2. dependencies

Page 9: Icsm2009 adams ph_d

21

+

Build System

Source Code

Page 10: Icsm2009 adams ph_d

24

ThunderbirdCaminoSunbirdNVUFirefoxSeaMonkeyGecko

Component Reuse

Mozilla Suitesource code reuse

Page 11: Icsm2009 adams ph_d

25

Build System Reuse?

???

Page 12: Icsm2009 adams ph_d

Source code and build system

co-evolve.

We need tools and techniques to understand

this co-evolution.

Page 13: Icsm2009 adams ph_d

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

Page 14: Icsm2009 adams ph_d

33

Understanding the Build System

embeddedGython

MAKAO

[ICSM '07]

Page 15: Icsm2009 adams ph_d

34

quake3.exe

network

d(a)emon

client UI

client renderer

server

game logic

Quake 3

34

Page 16: Icsm2009 adams ph_d

original game

expansion

pack

Quake 3 conditional compilation

35

Page 17: Icsm2009 adams ph_d

36

Industrial C System

17

Page 18: Icsm2009 adams ph_d

38

(error==0).visible=0

dead code

18

Page 19: Icsm2009 adams ph_d

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

Page 20: Icsm2009 adams ph_d

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]

Page 21: Icsm2009 adams ph_d

43

growth

Evolution of SLOC#fi

les

Page 22: Icsm2009 adams ph_d

44

maintenance to reduce complexity

2.4.02.6.0

Evolution of #dependencies

Page 23: Icsm2009 adams ph_d

48

Linux 2.4.0

23

Page 24: Icsm2009 adams ph_d

49

Linux 2.6.16.18

24

Page 25: Icsm2009 adams ph_d

50

FORCE composite object

circulardependency

chainBuild Idioms

Page 26: Icsm2009 adams ph_d

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

Page 27: Icsm2009 adams ph_d

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

Page 28: Icsm2009 adams ph_d

61

2. The Build System is an Executable Specification of the

Architecture

61

Page 29: Icsm2009 adams ph_d

62

3. Correctness Trumps Efficiency

speculatively removing

sourcecode

dependenciesto speed up

the build

inconsistent build products

drastic speed improvements

Page 30: Icsm2009 adams ph_d

63

4. Configuration Layer Controls the Static Variability of Source Code

Page 31: Icsm2009 adams ph_d

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

Page 32: Icsm2009 adams ph_d

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

Page 33: Icsm2009 adams ph_d

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

Page 34: Icsm2009 adams ph_d

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

Page 35: Icsm2009 adams ph_d

68

Questions?