“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
Wednesday, November 7, 2012
Rationalistic Bias Wednesday, November 7, 2012
Version Control History Wednesday, November 7, 2012
Source Control Change Events as Data Wednesday, November 7, 2012
Git Wednesday, November 7, 2012
Git Commit Wednesday, November 7, 2012
Git Commit commit hash (sha1) time/date stamp committer files actual change Wednesday, November 7, 2012
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
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
Clojure 400 300 # of commits 200 100 0 files Wednesday, November 7, 2012
Fitnesse 300 225 # of commits 150 75 0 files Wednesday, November 7, 2012
JUnit 70.0 52.5 # of commits 35.0 17.5 0 files Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
A Method Lifeline 30.0 22.5 15.0 7.5 0 time Wednesday, November 7, 2012
Another Method 4 3 2 1 0 time Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
http://www.physorg.com/news/2011-04-early-lunch.html Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
Wednesday, November 7, 2012
Commits per minute of each hour repo.commits.map {|_,d| d.min }.freq Wednesday, November 7, 2012
Added Complexity Over Time repo.commits.map {|c,_| repo.commit(c).added_complexity.to_i } Wednesday, November 7, 2012
Amount of Complexity Added by Hour of Day Wednesday, November 7, 2012
Normalized by Commits Wednesday, November 7, 2012
A Lifeline repo.methods.select {|m| m.full_name == "FeelingsController#create" }.first.life_line Wednesday, November 7, 2012
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
The Trending View Wednesday, November 7, 2012
Methods Ascending Wednesday, November 7, 2012
Trending Methods Wednesday, November 7, 2012
Static Views Wednesday, November 7, 2012
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
Classes By Closure Date Wednesday, November 7, 2012
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
Temporal Correlation of Class Changes Wednesday, November 7, 2012
Temporal Correlation of Class Changes Wednesday, November 7, 2012
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
Enki - CommentController Class Wednesday, November 7, 2012
Enki - Post Class Wednesday, November 7, 2012
Enki - Ownership Effect Wednesday, November 7, 2012
Enki - Average Lines Per Commit By Month Wednesday, November 7, 2012
Enki - Spec Lifelines Wednesday, November 7, 2012
Enki - Hour Profile Wednesday, November 7, 2012
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
MercuryApp - User Class Wednesday, November 7, 2012
MercuryApp - FeelingsController Class Wednesday, November 7, 2012
MercuryApp - Ownership Effect Wednesday, November 7, 2012
MercuryApp - Average Lines Per Commit By Month Wednesday, November 7, 2012
MercuryApp - Hour Profile Wednesday, November 7, 2012
Wednesday, November 7, 2012
Frequency of Inter-commit Intervals Wednesday, November 7, 2012
Frequency of Inter-commit Intervals Wednesday, November 7, 2012
Frequency of Inter-commit Intervals Rhythm Wednesday, November 7, 2012
Frequency of Inter-commit Intervals Wednesday, November 7, 2012
Average Lines of Code Per Commit By Week Wednesday, November 7, 2012
Complexity Tolerance (Developer A) Wednesday, November 7, 2012
Complexity Tolerance (Developer B) Wednesday, November 7, 2012
Ownership Effect (all methods) Wednesday, November 7, 2012
Code Mining Issues Wednesday, November 7, 2012
The Commit Problem Wednesday, November 7, 2012
The Social Environment Problem Wednesday, November 7, 2012
Blame Wednesday, November 7, 2012
Dangerous Knowledge Wednesday, November 7, 2012
Best Practice may be ‘Per Product Analysis’ Wednesday, November 7, 2012
Metrics Wednesday, November 7, 2012
“Laws” of Metrics Wednesday, November 7, 2012
“Laws” of Metrics 1. Distance Causes Misunderstanding Wednesday, November 7, 2012
“Laws” of Metrics 1. Distance Causes Misunderstanding 2. Highlighting Leads to Focus Wednesday, November 7, 2012
“Laws” of Metrics 1. Distance Causes Misunderstanding 2. Highlighting Leads to Focus 3. Focus Leads to Action Wednesday, November 7, 2012
“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
“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
Things to Look For Wednesday, November 7, 2012
Things to Look For - Relationship between the presence of tests and refactoring Wednesday, November 7, 2012
Things to Look For - Reasons behind high churn in classes and methods (beyond the runaways) Wednesday, November 7, 2012
Things to Look For - Identification Patterns for Good Programming Episodes Wednesday, November 7, 2012
Future Work - Automated commits for full picture of development Wednesday, November 7, 2012
Future Work - Analysis of changes for developer improvement Wednesday, November 7, 2012
Future Work - Catalog of norms for good development Wednesday, November 7, 2012
Future Work - Integration with bug fix data Wednesday, November 7, 2012
Recommend
More recommend