O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Capturing the Long Term Impact of Changes

19.107 visualizações

Publicada em

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.

Publicada em: Tecnologia
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Sex in your area is here: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Capturing the Long Term Impact of Changes

  1. 1. Capturing the Long-Term Impact Of Changes Kim Herzig • Saarland University Advisor: Prof. Andreas Zeller
  2. 2. Cause Effect Chain Software System Initial Change
  3. 3. Cause Effect Chain Software System Initial Change
  4. 4. Cause Effect Chain Software System Initial Change
  5. 5. Cause Effect Chain Software System Initial Change What is the long-term impact of the initial change?
  6. 6. Cause Effect Chain Software System Initial Change What is the long-term impact of the initial change? • Quality • Maintainability • Stability • Effort
  7. 7. Dependency Graph file2 file1 T1 T2 T3 T4 T5 time
  8. 8. Dependency Graph file2 file1 + void foo(){ T1 T2 T3 T4 T5 time
  9. 9. Dependency Graph file2 + x = foo(); file1 + void foo(){ T1 T2 T3 T4 T5 time
  10. 10. Dependency Graph file2 + x = foo(); - void foo(){ file1 + void foo(){ + void foo(int){ T1 T2 T3 T4 T5 time
  11. 11. Dependency Graph - x = foo() file2 + x = foo(); + x = foo(42) - void foo(){ file1 + void foo(){ + void foo(int){ T1 T2 T3 T4 T5 time
  12. 12. Dependency Graph - x = foo() file2 + x = foo(); + x = foo(42) + y = foo(1) - void foo(){ file1 + void foo(){ + void foo(int){ T1 T2 T3 T4 T5 time
  13. 13. Dependency Graph - x = foo() file2 + x = foo(); + x = foo(42) + y = foo(1) - void foo(){ file1 + void foo(){ + void foo(int){ T1 T2 T3 T4 T5 Directed Acyclic Graph time
  14. 14. Change Dependencies
  15. 15. Change Dependencies Change C2 depends on change C1 Change C2 can only be applied after applying C1. T1 T2 ✓ ••• T1 T2 ••• ✗
  16. 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. 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. 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
  19. 19. Using the Dependency Graph T1 T2 T3 T4 T5
  20. 20. Using the Dependency Graph T1 T2 T3 T4 T5 Rollback! What could be affected?
  21. 21. Using the Dependency Graph T1 T2 T3 T4 T5 introduced a bug Rollback! What else should be What could be affected? reviewed?
  22. 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. 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
  24. 24. Research Questions
  25. 25. Research Questions Can we use dependency graphs to detect critical development activities?
  26. 26. Research Questions Can we use dependency graphs to detect critical development activities? Correlate dependency graph measurements with quality, maintainability or stability?
  27. 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. 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?

×