wcre2009 alam
TRANSCRIPT
A Study of the Time Dependence of Code Changes
Omar Alam, Bram Adams and Ahmed E. HassanSoftware Analysis and Intelligence Lab (SAIL), Queen’s University, Canada
1
Foundational Periods of Software Development
2
• Software Development consists of building on old changes.
• Older periods provide structure for future changes.
• Important periods for future changes are considered
foundational
Why Study Foundational Periods?
3
Extra testing Re-document Staff are around
Managers Need to Know about Foundational Periods
How to Detect Foundational Periods?By Establishing Time Dependence Relations.
function f1() {Call f2()Call f3()}
How to Detect Foundational Periods?By Establishing Time Dependence Relations.
function f1() {Call f2()Call f3()}
function f1() {Call f2()Call f4()}
Delete f3()Add f4()
How to Detect Foundational Periods?By Establishing Time Dependence Relations.
function f1() {Call f2()Call f3()}
function f1() {Call f2()Call f4()}
Addf4()
Modifyf1()
Modifyf3()
Addf1()
Addf2()
Addf3()
Period 1 Period 2 Period 3
add
How to Detect Foundational Periods?By Establishing Time Dependence Relations.
function f1() {Call f2()Call f3()}
function f1() {Call f2()Call f4()}
Addf4()
Modifyf1()
Modifyf3()
Addf1()
Addf2()
Addf3()
Period 1 Period 2 Period 3
add
remove
How to Detect Foundational Periods?By Establishing Time Dependence Relations.
function f1() {Call f2()Call f3()}
function f1() {Call f2()Call f4()}
Addf4()
Modifyf1()
Modifyf3()
Addf1()
Addf2()
Addf3()
Period 1 Period 2 Period 3
add
remove
How to Detect Foundational Periods?Age of Time Dependence Relations
Addf4()
Modifyf1()
Modifyf3()
Addf1()
Addf2()
Addf3()
Period 1 Period 2 Period 3
add
remove
0 period1 period2 periods
How to Detect Foundational Periods?Backward and Forward Time Dependence
Addf4()
Modifyf1()
Modifyf3()
Addf1()
Addf2()
Addf3()
Period 1 Period 2 Period 3
add
remove
4 Backward Time Dependence
How to Detect Foundational Periods?Backward and Forward Time Dependence
Addf4()
Modifyf1()
Modifyf3()
Addf1()
Addf2()
Addf3()
Period 1 Period 2 Period 3
add
remove
4 Backward Time Dependence
1 Forward Time Dependence
Case Study
1997-2007
121994-2005
RQ1: How Does the Time Dependence Vary Over Time?
FreeBSDPostgreSQL
RQ1: How Does the Time Dependence Vary Over Time?
FreeBSDPostgreSQL
The age of quarter 0 is not included!
RQ1: How Does the Time Dependence Vary Over Time?
48% of changes build on their same quarters
RQ1: How Does the Time Dependence Vary Over Time?
FreeBSDPostgreSQL
Do Quarters with many changes build on more changes ?
RQ1: How Does the Time Dependence Vary Over Time?
Correlation between #changes and #Backward time dependence of a quarter:
0.51 in PostgreSQL0.87 in FreeBSD
RQ1: How Does the Time Dependence Vary Over Time?
48% of changes build on their same quarters
Quarters with many changes DO NOT always indicate building on old quarters
RQ2: As Projects Age, Do They Build More on Old Periods?
FreeBSDPostgreSQL
RQ2: As Projects Age, Do They Build More on Old Periods?
FreeBSDPostgreSQL
Progressively Build on Old Periods
Cycles Between building on New and Old Periods
RQ2: As Projects Age, Do They Build More on Old Periods?
FreeBSDPostgreSQL
Build More on Recent changes
RQ2: As Projects Age, Do They Build More on Old Periods?
FreeBSDPostgreSQL
1.5 years before building on Old changes
RQ2: As Projects Age, Do They Build More on Old Periods?
PostgreSQL:
Progressively Build on Old
FreeBSD:
Cycles between Building on Old and New
Took 1.5 years to stabilize
RQ3: What are the Foundational Periods in a Lifetime of a Project?
FreeBSDPostgreSQL
Plot the Diagonals of the Heatmaps
RQ3: What are the Foundational Periods in a Lifetime of a Project?
FreeBSDPostgreSQL
RQ3: What are the Foundational Periods in a Lifetime of a Project?
FreeBSDPostgreSQL
The First Foundational Period is the Most Foundational
RQ3: What are the Foundational Periods in a Lifetime of a Project?
FreeBSDPostgreSQL
Foundational Quarters Import Large Code or Have Invasive Changes
28