How Much Do We Know? Wednesday, November 16, 2011 Wednesday, - - PowerPoint PPT Presentation

how much do we know
SMART_READER_LITE
LIVE PREVIEW

How Much Do We Know? Wednesday, November 16, 2011 Wednesday, - - PowerPoint PPT Presentation

Software Naturalism Embracing the Real Behind the Ideal Michael Feathers Groupon Wednesday, November 16, 2011 How Much Do We Know? Wednesday, November 16, 2011 Wednesday, November 16, 2011 Wednesday, November 16, 2011 Fault Prediction


slide-1
SLIDE 1

Software Naturalism

Embracing the Real Behind the Ideal

Michael Feathers Groupon

Wednesday, November 16, 2011
slide-2
SLIDE 2

How Much Do We Know?

Wednesday, November 16, 2011
slide-3
SLIDE 3 Wednesday, November 16, 2011
slide-4
SLIDE 4 Wednesday, November 16, 2011
slide-5
SLIDE 5

Fault Prediction System - Elaine J. Weyuker, Thomas J. Ostrand

Wednesday, November 16, 2011
slide-6
SLIDE 6

Models for Project Managers, to help them decide where to apply effort.

Wednesday, November 16, 2011
slide-7
SLIDE 7

Research used 6 large projects built

  • r contracted by AT&T
  • 300-500 KSLOC
  • 2 yrs to 10 yrs
  • 4-50 langs per system
  • 3 month release cycle
Wednesday, November 16, 2011
slide-8
SLIDE 8

Validated the hypothesis that distribution of faults across files is Pareto: > 80% faults are in < 20% of files

Wednesday, November 16, 2011
slide-9
SLIDE 9 Wednesday, November 16, 2011
slide-10
SLIDE 10

Inputs to Prediction Model (per file):

  • LOC
  • New file (y/n)?
  • number of changes in release N-1
  • number of changes in release N-2
  • number of faults in release N-1
  • programming language
Wednesday, November 16, 2011
slide-11
SLIDE 11

Experimented with (per file):

  • Cumulative # of developers
  • Recent # of developers (Release N-1)
  • Number of new developers
Wednesday, November 16, 2011
slide-12
SLIDE 12

Experimented with (per file):

  • Cumulative # of developers
  • Recent # of developers (Release N-1)
  • Number of new developers

Dev-based Inputs did not improve the model much

Wednesday, November 16, 2011
slide-13
SLIDE 13

How Effective Is Modularization? - Neil Thomas and Gail Murphy

Wednesday, November 16, 2011
slide-14
SLIDE 14 Wednesday, November 16, 2011
slide-15
SLIDE 15 Wednesday, November 16, 2011
slide-16
SLIDE 16 Wednesday, November 16, 2011
slide-17
SLIDE 17 Wednesday, November 16, 2011
slide-18
SLIDE 18 Wednesday, November 16, 2011
slide-19
SLIDE 19 Wednesday, November 16, 2011
slide-20
SLIDE 20

The Open/Closed Principle

"software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification"

  • Bertrand Meyer
Wednesday, November 16, 2011
slide-21
SLIDE 21 Wednesday, November 16, 2011
slide-22
SLIDE 22 100 200 300 400 files Clojure # of commits Wednesday, November 16, 2011
slide-23
SLIDE 23 75 150 225 300 files Fitnesse # of commits Wednesday, November 16, 2011
slide-24
SLIDE 24 17.5 35.0 52.5 70.0 files JUnit # of commits Wednesday, November 16, 2011
slide-25
SLIDE 25 Wednesday, November 16, 2011
slide-26
SLIDE 26 Wednesday, November 16, 2011
slide-27
SLIDE 27 Wednesday, November 16, 2011
slide-28
SLIDE 28 Wednesday, November 16, 2011
slide-29
SLIDE 29 Wednesday, November 16, 2011
slide-30
SLIDE 30 7.5 15.0 22.5 30.0 time A Method Lifeline Wednesday, November 16, 2011
slide-31
SLIDE 31

Frequency of Inter-commit Intervals

Wednesday, November 16, 2011
slide-32
SLIDE 32

Frequency of Inter-commit Intervals

Wednesday, November 16, 2011
slide-33
SLIDE 33

Frequency of Inter-commit Intervals Rhythm

Wednesday, November 16, 2011
slide-34
SLIDE 34

Frequency of Inter-commit Intervals

Wednesday, November 16, 2011
slide-35
SLIDE 35

Average Lines of Code Per Commit By Week

Wednesday, November 16, 2011
slide-36
SLIDE 36

Complexity Tolerance (Developer A)

Wednesday, November 16, 2011
slide-37
SLIDE 37

Complexity Tolerance (Developer B)

Wednesday, November 16, 2011
slide-38
SLIDE 38

Ownership Effect (all methods)

Wednesday, November 16, 2011
slide-39
SLIDE 39

Methods Ascending (5)

Wednesday, November 16, 2011
slide-40
SLIDE 40

Trending Methods

Wednesday, November 16, 2011
slide-41
SLIDE 41

Classes By Closure Date

Wednesday, November 16, 2011
slide-42
SLIDE 42

Temporal Correlation of Class Changes

Wednesday, November 16, 2011
slide-43
SLIDE 43

Behavioral Economics

Wednesday, November 16, 2011
slide-44
SLIDE 44 Wednesday, November 16, 2011
slide-45
SLIDE 45 Wednesday, November 16, 2011
slide-46
SLIDE 46

Is it easier to add code to an existing method or to add a new method?

Wednesday, November 16, 2011
slide-47
SLIDE 47

Is it easier to add a method to an existing class or to add it a new class?

Wednesday, November 16, 2011
slide-48
SLIDE 48

We should not be surprised by what we see.

Wednesday, November 16, 2011
slide-49
SLIDE 49

Commits By Hour

chart(['hour','commits'],method_events(events).freq_by {|e| e.date.hour })

Wednesday, November 16, 2011
slide-50
SLIDE 50

Commits By Minute

chart(['hour','commits'],method_events(events).freq_by {|e| e.date.min })

Wednesday, November 16, 2011
slide-51
SLIDE 51

Method and Spec Changes Per Hour of Day

Wednesday, November 16, 2011
slide-52
SLIDE 52 1 2 3 4 time Another Method Wednesday, November 16, 2011
slide-53
SLIDE 53 Wednesday, November 16, 2011
slide-54
SLIDE 54

Code Blindness

Wednesday, November 16, 2011
slide-55
SLIDE 55

Walking Out of Code Blindness

Wednesday, November 16, 2011
slide-56
SLIDE 56

Walking Out of Code Blindness

Total Ignorance

Wednesday, November 16, 2011
slide-57
SLIDE 57

Walking Out of Code Blindness

Total Ignorance Metrics Targeted

Wednesday, November 16, 2011
slide-58
SLIDE 58 Wednesday, November 16, 2011
slide-59
SLIDE 59

There is nothing more abstract than 4 (except maybe 5).

Wednesday, November 16, 2011
slide-60
SLIDE 60

Walking Out of Code Blindness

Total Ignorance Metrics Targeted Qualitatively Assessing

Wednesday, November 16, 2011
slide-61
SLIDE 61 Wednesday, November 16, 2011
slide-62
SLIDE 62 Wednesday, November 16, 2011
slide-63
SLIDE 63 Wednesday, November 16, 2011
slide-64
SLIDE 64

Walking Out of Code Blindness

Total Ignorance Metrics Targeted Qualitatively Assessing Lifecycle Managing

Wednesday, November 16, 2011
slide-65
SLIDE 65 Wednesday, November 16, 2011
slide-66
SLIDE 66

Walking Out of Code Blindness

Total Ignorance Metrics Targeted Qualitatively Assessing Lifecycle Managing Integrated Knowing

Wednesday, November 16, 2011
slide-67
SLIDE 67

Conway’s Law

Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization's communication structure.

Wednesday, November 16, 2011
slide-68
SLIDE 68

Code Team Org

Wednesday, November 16, 2011
slide-69
SLIDE 69 Wednesday, November 16, 2011
slide-70
SLIDE 70 Wednesday, November 16, 2011
slide-71
SLIDE 71 Wednesday, November 16, 2011
slide-72
SLIDE 72

Peter Provost - The Bufferfly Effect

Wednesday, November 16, 2011
slide-73
SLIDE 73 Wednesday, November 16, 2011
slide-74
SLIDE 74 Wednesday, November 16, 2011