wcre2009 alam

28
A Study of the Time Dependence of Code Changes Omar Alam , Bram Adams and Ahmed E. Hassan Software Analysis and Intelligence Lab (SAIL), Queen’s University, Canada 1

Upload: sailqu

Post on 12-Apr-2017

91 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wcre2009 alam

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

Page 2: Wcre2009 alam

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

Page 3: Wcre2009 alam

Why Study Foundational Periods?

3

Extra testing Re-document Staff are around

Managers Need to Know about Foundational Periods

Page 4: Wcre2009 alam

How to Detect Foundational Periods?By Establishing Time Dependence Relations.

function f1() {Call f2()Call f3()}

Page 5: Wcre2009 alam

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()

Page 6: Wcre2009 alam

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

Page 7: Wcre2009 alam

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

Page 8: Wcre2009 alam

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

Page 9: Wcre2009 alam

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

Page 10: Wcre2009 alam

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

Page 11: Wcre2009 alam

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

Page 12: Wcre2009 alam

Case Study

1997-2007

121994-2005

Page 13: Wcre2009 alam

RQ1: How Does the Time Dependence Vary Over Time?

FreeBSDPostgreSQL

Page 14: Wcre2009 alam

RQ1: How Does the Time Dependence Vary Over Time?

FreeBSDPostgreSQL

The age of quarter 0 is not included!

Page 15: Wcre2009 alam

RQ1: How Does the Time Dependence Vary Over Time?

48% of changes build on their same quarters

Page 16: Wcre2009 alam

RQ1: How Does the Time Dependence Vary Over Time?

FreeBSDPostgreSQL

Do Quarters with many changes build on more changes ?

Page 17: Wcre2009 alam

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

Page 18: Wcre2009 alam

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

Page 19: Wcre2009 alam

RQ2: As Projects Age, Do They Build More on Old Periods?

FreeBSDPostgreSQL

Page 20: Wcre2009 alam

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

Page 21: Wcre2009 alam

RQ2: As Projects Age, Do They Build More on Old Periods?

FreeBSDPostgreSQL

Build More on Recent changes

Page 22: Wcre2009 alam

RQ2: As Projects Age, Do They Build More on Old Periods?

FreeBSDPostgreSQL

1.5 years before building on Old changes

Page 23: Wcre2009 alam

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

Page 24: Wcre2009 alam

RQ3: What are the Foundational Periods in a Lifetime of a Project?

FreeBSDPostgreSQL

Plot the Diagonals of the Heatmaps

Page 25: Wcre2009 alam

RQ3: What are the Foundational Periods in a Lifetime of a Project?

FreeBSDPostgreSQL

Page 26: Wcre2009 alam

RQ3: What are the Foundational Periods in a Lifetime of a Project?

FreeBSDPostgreSQL

The First Foundational Period is the Most Foundational

Page 27: Wcre2009 alam

RQ3: What are the Foundational Periods in a Lifetime of a Project?

FreeBSDPostgreSQL

Foundational Quarters Import Large Code or Have Invasive Changes

Page 28: Wcre2009 alam

28