Upload
sailqu
View
53
Download
0
Embed Size (px)
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?