I gave this talk on the doctoral symposium on ICSE 2010. The number of slides was limited to 5 slides. Otherwise I would but things bit more into context.
5. Cause Effect Chain
Software System
Initial Change
What is the long-term impact of the initial change?
6. Cause Effect Chain
Software System
Initial Change
What is the long-term impact of the initial change?
• Quality • Maintainability • Stability • Effort
15. Change Dependencies
Change C2 depends on
change C1
Change C2 can only be
applied after applying C1.
T1 T2
✓
•••
T1 T2
•••
✗
16. Change Dependencies
Change C2 depends on 1. Analyzing source code changes
change C1 (not every revision can be compiled)
Change C2 can only be
applied after applying C1.
T1 T2
✓
•••
T1 T2
•••
✗
17. Change Dependencies
Change C2 depends on 1. Analyzing source code changes
change C1 (not every revision can be compiled)
2. Extracting method definitions and
Change C2 can only be
method calls from changes
applied after applying C1. (added, modified, deleted)
T1 T2
✓
•••
T1 T2
•••
✗
18. Change Dependencies
Change C2 depends on 1. Analyzing source code changes
change C1 (not every revision can be compiled) [1]
2. Extracting method definitions and
Change C2 can only be
method calls from changes
applied after applying C1. (added, modified, deleted)
T1 T2 3. Computing dependencies between
✓
•••
method definition and call changes
T1 T2 (e.g. call depends on previous definition)
•••
✗
[1] Enabling static analysis for partial Java programs, Dagenais and Hendren, OOPSLA '08
21. Using the Dependency Graph
T1 T2 T3 T4 T5
introduced a bug
Rollback!
What else should be
What could be affected?
reviewed?
22. Using the Dependency Graph
T1 T2 T3 T4 T5
introduced a bug
Rollback!
What else should be
What could be affected?
reviewed?
1 2 3 4 5
Long Term Impact
Dependent changes / all later applied changes
(weighted by depth)
23. Using the Dependency Graph
T1 T2 T3 T4 T5
introduced a bug
Rollback!
What else should be
What could be affected?
reviewed?
1 2 3 4 5 1 2 3 4 5
Long Term Impact FanIn / FanOut
Dependent changes / all later applied changes Number of vertices into T
(weighted by depth) Number of vertices leaving T
25. Research Questions
Can we use dependency graphs to detect
critical development activities?
26. Research Questions
Can we use dependency graphs to detect
critical development activities?
Correlate dependency graph measurements with quality,
maintainability or stability?
27. Research Questions
Can we use dependency graphs to detect
critical development activities?
Correlate dependency graph measurements with quality,
maintainability or stability?
Can we improve current defect prediction models using
dependency graphs?
28. Research Questions
Can we use dependency graphs to detect
critical development activities?
Correlate dependency graph measurements with quality,
maintainability or stability?
Can we improve current defect prediction models using
dependency graphs?
Can we extract process models from dependency graphs that
allow risk and effort estimations?
Editor's Notes
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Developing means changing code. And code changes have an effect.
-> Local impact: tests, features, ...
But changes might lead to further changes.
Example: Deprecating a method and introducing a replacement -> Cause effect chain
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Imagine the following project history: 5 transactions, 4 files (simple)
[changes]
Each transaction gets a node
Dependencies between transactions get edges
[explain edges]
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition
Long-term impact based on change dependency.
What is that? -> Definition