1/12 International Workshop on Principles of Software Evolution · Helsinki, Finland, 1 September 2003 How History Justifies System Architecture (or not) Thomas Zimmermann (with Stephan Diehl and Andreas Zeller) Lehrstuhl Softwaretechnik Universit¨ at des Saarlandes, Saarbr¨ ucken, Germany
22
Embed
How History Justifies System Architecture (or Not)
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1/12
�
�
�
�
�
�
International Workshop on Principles of Software Evolution · Helsinki, Finland, 1 September 2003
How History JustifiesSystem Architecture (or not)
Thomas Zimmermann(with Stephan Diehl and Andreas Zeller)
Lehrstuhl SoftwaretechnikUniversitat des Saarlandes, Saarbrucken, Germany
2/12
�
�
�
�
�
�
The Problem
Your task: extend the debug component in GCC!
You identify the variable xcoff debug hooks.
What else do you need to change?
2/12
�
�
�
�
�
�
The Problem
Your task: extend the debug component in GCC!
You identify the variable xcoff debug hooks.
What else do you need to change?
General issue: only change coupled entities!
You can detect existing coupling by
• Program Analysis—e.g. def-use associations.
• Learning from History—entities changed together.
3/12
�
�
�
�
�
�
Evolutionary Coupling
gcc/gcc/dbxout.c [134] gcc/gcc/sdbout.c [74]34
dbx_debug_hooks
xcoff_debug_hooks
sdb_debug_hooks
[12]
[10]
[12]
3/12
�
�
�
�
�
�
Evolutionary Coupling
gcc/gcc/dbxout.c [134] gcc/gcc/sdbout.c [74]34
dbx_debug_hooks
xcoff_debug_hooks
sdb_debug_hooks
[12]
[10]
[12]12
10 10
dbx_debug_hooks
xcoff_debug_hooks
sdb_debug_hooks
[12]
[10]
[12]
Support: How much evidence (= simultaneous changes)?Confidence: How relevant is coupling for participants?
3/12
�
�
�
�
�
�
Evolutionary Coupling
gcc/gcc/dbxout.c [134] gcc/gcc/sdbout.c [74]34
dbx_debug_hooks
xcoff_debug_hooks
sdb_debug_hooks
[12]
[10]
[12]
4
4
xcoff_debug_hooks sdb_global_decl()
[4]
4
dbx_functions_end()
[7]
dbx_symbol_name()
[6] 2
12
10 10
dbx_debug_hooks
xcoff_debug_hooks
sdb_debug_hooks
[12]
[10]
[12]
Support: How much evidence (= simultaneous changes)?Confidence: How relevant is coupling for participants?
4/12
�
�
�
�
�
�
What We Do
Our ROSE prototype analyzes evolution of CVS archives.
ROSE
Step 1: Restore Transactions from CVS
Step 2: Identify Modified Entities
Reengineering Of Software EvolutionCVS
Metrics
Couplings
Graphs
ROSE determines entities at different granularities: