through the looking glass
play

Through the Looking Glass Applying Analytics to Development Michael - PowerPoint PPT Presentation

Through the Looking Glass Applying Analytics to Development Michael Feathers Independent Consultant Wednesday, November 7, 2012 How Much Do We Know? Wednesday, November 7, 2012 Wednesday, November 7, 2012 Wednesday, November 7, 2012


  1. “Through the Looking Glass” Applying Analytics to Development Michael Feathers Independent Consultant Wednesday, November 7, 2012

  2. How Much Do We Know? Wednesday, November 7, 2012

  3. Wednesday, November 7, 2012

  4. Wednesday, November 7, 2012

  5. Wednesday, November 7, 2012

  6. Rationalistic Bias Wednesday, November 7, 2012

  7. Version Control History Wednesday, November 7, 2012

  8. Source Control Change Events as Data Wednesday, November 7, 2012

  9. Git Wednesday, November 7, 2012

  10. Git Commit Wednesday, November 7, 2012

  11. Git Commit commit hash (sha1) time/date stamp committer files actual change Wednesday, November 7, 2012

  12. Git Commit Method Event commit hash (sha1) time/date stamp commit hash (sha1) committer time/date stamp files committer actual change method name method body add/change/delete Wednesday, November 7, 2012

  13. The Open/Closed Principle " software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification " - Bertrand Meyer Wednesday, November 7, 2012

  14. Clojure 400 300 # of commits 200 100 0 files Wednesday, November 7, 2012

  15. Fitnesse 300 225 # of commits 150 75 0 files Wednesday, November 7, 2012

  16. JUnit 70.0 52.5 # of commits 35.0 17.5 0 files Wednesday, November 7, 2012

  17. Wednesday, November 7, 2012

  18. Wednesday, November 7, 2012

  19. Wednesday, November 7, 2012

  20. Wednesday, November 7, 2012

  21. Wednesday, November 7, 2012

  22. A Method Lifeline 30.0 22.5 15.0 7.5 0 time Wednesday, November 7, 2012

  23. Another Method 4 3 2 1 0 time Wednesday, November 7, 2012

  24. Wednesday, November 7, 2012

  25. Wednesday, November 7, 2012

  26. http://www.physorg.com/news/2011-04-early-lunch.html Wednesday, November 7, 2012

  27. Wednesday, November 7, 2012

  28. Wednesday, November 7, 2012

  29. Wednesday, November 7, 2012

  30. Wednesday, November 7, 2012

  31. Commits per minute of each hour repo.commits.map {|_,d| d.min }.freq Wednesday, November 7, 2012

  32. Added Complexity Over Time repo.commits.map {|c,_| repo.commit(c).added_complexity.to_i } Wednesday, November 7, 2012

  33. Amount of Complexity Added by Hour of Day Wednesday, November 7, 2012

  34. Normalized by Commits Wednesday, November 7, 2012

  35. A Lifeline repo.methods.select {|m| m.full_name == "FeelingsController#create" }.first.life_line Wednesday, November 7, 2012

  36. Number of Files Touched Per Commit repo.events.group_by(&:commit).map { |sha, events| events.map(&:file_name).uniq.count }.freq Wednesday, November 7, 2012

  37. The Trending View Wednesday, November 7, 2012

  38. Methods Ascending Wednesday, November 7, 2012

  39. Trending Methods Wednesday, November 7, 2012

  40. Static Views Wednesday, November 7, 2012

  41. Classes By Closure Date [["DummiesController", 2008-04-21 13:03:08 -0700], ["Core::ActiveRecord::AttributeDefaults::ClassMethods", 2008-04-22 16:02:54 -0700], ["Legacy::Database", 2008-04-24 15:37:51 -0700], ["Core::ActiveRecord::AttributeDelegation::ClassMethods", 2008-04-24 20:46:58 -0700], ["Core::ActiveRecord::SkipValidationForHasOnes", 2008-04-29 21:54:32 -0700]] Wednesday, November 7, 2012

  42. Classes By Closure Date Wednesday, November 7, 2012

  43. Temporal Correlation of Class Changes [[["App", "Inventory"], 277], [["Inventory", "Object"], 216], [["Admin", "Inventory"], 195], [["Inventory", "User"], 188], [["Inventory", "Users"], 171], [["Inventory", "Deals"], 167], [["App", "Object"], 159], [["App", "InventoryController"], 152], [["Inventory", "Order"], 149], [["User", "Users"], 149], [["App", "User"], 143], [["Inventory", "InventoryController"], 143], [["Api", "Inventory"], 141], [["Admin", "App"], 136], [["Campaign", "Orders"], 134]] Wednesday, November 7, 2012

  44. Temporal Correlation of Class Changes Wednesday, November 7, 2012

  45. Temporal Correlation of Class Changes Wednesday, November 7, 2012

  46. Enki - A Rails Blogging Platform 5 Unique Committers ["Xavier", "Jason", "Zach", "Pedro", "Gaelian"] 637 method events Spec to method ratios by committer: [0.09245283018867924, "Xavier"], [0.05084745762711865, "Jason"], [0.0, "Zach"], [0.6666666666666666, "Pedro"], [0.0, "Gaelian"]] Number of Method Modifications: Zach => 6 Xavier=> 167 Jason => 10 Pedro => 1 Wednesday, November 7, 2012

  47. Enki - CommentController Class Wednesday, November 7, 2012

  48. Enki - Post Class Wednesday, November 7, 2012

  49. Enki - Ownership Effect Wednesday, November 7, 2012

  50. Enki - Average Lines Per Commit By Month Wednesday, November 7, 2012

  51. Enki - Spec Lifelines Wednesday, November 7, 2012

  52. Enki - Hour Profile Wednesday, November 7, 2012

  53. MercuryApp 5 Unique Committers ["Sarah", "coreyhaines", "Cory", "Spencer", "sarah"] 7788 method events Spec to method ratios by committer: [0.40381791483113066, "Sarah"], [0.5220038748962081, "coreyhaines"], [0.0, "Cory"], [0.0, "Spencer"], [0.5171062009978618, "sarah"] Number of Method Modifications: Cory => 629 Sarah=> 739 Spencer => 2 Wednesday, November 7, 2012

  54. MercuryApp - User Class Wednesday, November 7, 2012

  55. MercuryApp - FeelingsController Class Wednesday, November 7, 2012

  56. MercuryApp - Ownership Effect Wednesday, November 7, 2012

  57. MercuryApp - Average Lines Per Commit By Month Wednesday, November 7, 2012

  58. MercuryApp - Hour Profile Wednesday, November 7, 2012

  59. Wednesday, November 7, 2012

  60. Frequency of Inter-commit Intervals Wednesday, November 7, 2012

  61. Frequency of Inter-commit Intervals Wednesday, November 7, 2012

  62. Frequency of Inter-commit Intervals Rhythm Wednesday, November 7, 2012

  63. Frequency of Inter-commit Intervals Wednesday, November 7, 2012

  64. Average Lines of Code Per Commit By Week Wednesday, November 7, 2012

  65. Complexity Tolerance (Developer A) Wednesday, November 7, 2012

  66. Complexity Tolerance (Developer B) Wednesday, November 7, 2012

  67. Ownership Effect (all methods) Wednesday, November 7, 2012

  68. Code Mining Issues Wednesday, November 7, 2012

  69. The Commit Problem Wednesday, November 7, 2012

  70. The Social Environment Problem Wednesday, November 7, 2012

  71. Blame Wednesday, November 7, 2012

  72. Dangerous Knowledge Wednesday, November 7, 2012

  73. Best Practice may be ‘Per Product Analysis’ Wednesday, November 7, 2012

  74. Metrics Wednesday, November 7, 2012

  75. “Laws” of Metrics Wednesday, November 7, 2012

  76. “Laws” of Metrics 1. Distance Causes Misunderstanding Wednesday, November 7, 2012

  77. “Laws” of Metrics 1. Distance Causes Misunderstanding 2. Highlighting Leads to Focus Wednesday, November 7, 2012

  78. “Laws” of Metrics 1. Distance Causes Misunderstanding 2. Highlighting Leads to Focus 3. Focus Leads to Action Wednesday, November 7, 2012

  79. “Laws” of Metrics 1. Distance Causes Misunderstanding 2. Highlighting Leads to Focus 3. Focus Leads to Action 4. Focus Leads to Side-Effects Wednesday, November 7, 2012

  80. “Laws” of Metrics 1. Distance Causes Misunderstanding 2. Highlighting Leads to Focus 3. Focus Leads to Action 4. Focus Leads to Side-Effects 5. Knowledge Defines Normality Wednesday, November 7, 2012

  81. Things to Look For Wednesday, November 7, 2012

  82. Things to Look For - Relationship between the presence of tests and refactoring Wednesday, November 7, 2012

  83. Things to Look For - Reasons behind high churn in classes and methods (beyond the runaways) Wednesday, November 7, 2012

  84. Things to Look For - Identification Patterns for Good Programming Episodes Wednesday, November 7, 2012

  85. Future Work - Automated commits for full picture of development Wednesday, November 7, 2012

  86. Future Work - Analysis of changes for developer improvement Wednesday, November 7, 2012

  87. Future Work - Catalog of norms for good development Wednesday, November 7, 2012

  88. Future Work - Integration with bug fix data Wednesday, November 7, 2012

Recommend


More recommend