failure is a four letter word
play

Failure is a four-letter word Andreas Zeller Thomas Zimmermann - PowerPoint PPT Presentation

Failure is a four-letter word Andreas Zeller Thomas Zimmermann Christian Bird PROMISE 2011, Banff, Canada Software failures 2 Defect distributions 3 Failure causes 4 Failure causes 5 Failure causes 6 Failure causes 7 Failure


  1. Failure is a four-letter word Andreas Zeller • Thomas Zimmermann • Christian Bird PROMISE 2011, Banff, Canada

  2. Software failures 2

  3. Defect distributions 3

  4. Failure causes 4

  5. Failure causes 5

  6. Failure causes 6

  7. Failure causes 7

  8. Failure causes 7

  9. Cost of consequence 8

  10. Back to basics 9

  11. C B A Back to basics 9

  12. Basic actions 10

  13. public class ImageViewerPlugin extends AbstractUIPlugin { � //The shared instance. � private static ImageViewerPlugin plugin; � � /** � * The constructor. � */ � public ImageViewerPlugin() { � � plugin = this; � } � /** � * This method is called upon plug-in activation � */ � public void start(BundleContext context) throws Exception { � � super.start(context); � } Basic actions 10

  14. public class ImageViewerPlugin extends AbstractUIPlugin { � //The shared instance. � private static ImageViewerPlugin plugin; � � /** � * The constructor. � */ � public ImageViewerPlugin() { � � plugin = this; � } � /** � * This method is called upon plug-in activation � */ � public void start(BundleContext context) throws Exception { � � super.start(context); � } 11

  15. ////// ******** ttttttttttttttttttttt aaaaaaaaaa uuuuuuuuuuuu cccccccccc v d wwww eeeeeeeeeeeeeeee A ggggggg B hh C iiiiiiiiiiiii E lllllllllllll IIII mmmm PPPP nnnnnnnnnnnnnnnn TTT U ooooooooo pppppppppp VVV rrrrrrrrrr {{{ ssssssssssss }}} 12

  16. Hypotheses 13

  17. 1. We can predict defects from programmer actions. Hypotheses 13

  18. 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. Hypotheses 13

  19. 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 13

  20. 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 14

  21. Files&with& Release& Total&chars& Total&files& defects& Eclipse(2.0( 44,914,520( 6,728( 975((14%)( Eclipse(2.1( 56,068,650( 7,887( 854((11%)( Eclipse(3.0( 76,193,482( 10,593( 1,568((15%)( Table 1: Features of the Eclipse datasets. Eclipse bug data [PROMISE 2007] 15

  22. Eclipse characters 16

  23. Training&Set& Eclipse&2.0& Eclipse&2.1& Eclipse&3.0& Average& Eclipse(2.0( 0.74( 0.39( 0.49( 0.54( Eclipse(2.1( 0.55( 0.64( 0.56( 0.58( Eclipse(3.0( 0.57( 0.40( 0.64( 0.54( Average( 0.62( 0.47( 0.56( 0.55( Table 2: Precision for various training/testing combinations. Precision 17

  24. Training&Set& Eclipse&2.0& Eclipse&2.1& Eclipse&3.0& Average& Eclipse(2.0( 0.74( 0.39( 0.49( 0.54( Eclipse(2.1( 0.55( 0.64( 0.56( 0.58( Eclipse(3.0( 0.57( 0.40( 0.64( 0.54( Average( 0.62( 0.47( 0.56( 0.55( Table 2: Precision for various training/testing combinations. Precision 18

  25. Training&Set& Eclipse&2.0& Eclipse&2.1& Eclipse&3.0& Average& Eclipse(2.0( 0.74( 0.39( 0.49( 0.54( Eclipse(2.1( 0.55( 0.64( 0.56( 0.58( Eclipse(3.0( 0.57( 0.40( 0.64( 0.54( Average( 0.62( 0.47( 0.56( 0.55( Table 2: Precision for various training/testing combinations. Precision 18

  26. Training&Set& Eclipse&2.0& Eclipse&2.1& Eclipse&3.0& Average& Eclipse(2.0( 0.32( 0.27( 0.27( 0.28( Eclipse(2.1( 0.03( 0.18( 0.14( 0.11( Eclipse(3.0( 0.19( 0.16( 0.20( 0.18( Average( 0.18( 0.20( 0.20( 0.19( Table 3: Recall for various training/testing combinations. Recall 19

  27. 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 20

  28. ✔ 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 20

  29. ✔ 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 21

  30. Defect correlations 22

  31. Defect correlations 23

  32. Defect correlations 23

  33. Defect correlations 24

  34. IROP Defect correlations 24

  35. ✔ 1. We can predict defects from programmer actions. 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 25

  36. ✔ 1. We can predict defects from programmer actions. ✔ 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 25

  37. ✔ 1. We can predict defects from programmer actions. ✔ 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 26

  38. Explicit causes 27

  39. Explicit causes 27

  40. IROP keyboard 28

  41. Coding standards 29

  42. if ¡(p ¡!= ¡null) ¡ ¡{ ¡int ¡i; ¡while ¡(p[i] ¡< ¡0) ¡i++; ¡return ¡i; ¡} Coding standards 29

  43. if ¡(p ¡!= ¡null) ¡ ¡{ ¡int ¡i; ¡while ¡(p[i] ¡< ¡0) ¡i++; ¡return ¡i; ¡} when ¡(q ¡!= ¡null) ¡ ¡ ¡{ ¡num ¡n; ¡as ¡(q[n] ¡< ¡0) ¡n++; ¡handback ¡n; ¡} Coding standards 29

  44. when ¡(q ¡!= ¡null) ¡ ¡ ¡{ ¡num ¡n; ¡as ¡(q[n] ¡< ¡0) ¡n++; ¡handback ¡n; ¡} Coding standards 30

  45. 100% semantics preserving when ¡(q ¡!= ¡null) ¡ ¡ ¡{ ¡num ¡n; ¡as ¡(q[n] ¡< ¡0) ¡n++; ¡handback ¡n; ¡} Coding standards 30

  46. New habits 31

  47. W e can s un tet e set majuscul et , and t text s ays ju s as swe lm as antecedently . Let us ju s ban t em! New habits 31

  48. ✔ 1. We can predict defects from programmer actions. ✔ 2. We can isolate defect-prone programmer actions. 3. We can prevent defects by restricting programmer actions. Hypotheses 32

  49. ✔ 1. We can predict defects from programmer actions. ✔ 2. We can isolate defect-prone programmer actions. restricting programmer actions. ✔ 3. We can prevent defects by Hypotheses 32

  50. FAQs and threats 33

  51. 1. How about external validity? (findings based on ≥ 177,000,000 characters + 1,000s of defects; one of largest studies ever) FAQs and threats 33

  52. 1. How about external validity? (findings based on ≥ 177,000,000 characters + 1,000s of defects; one of largest studies ever) 2. Are the correlations significant? (yes – all of them) FAQs and threats 33

  53. 1. How about external validity? (findings based on ≥ 177,000,000 characters + 1,000s of defects; one of largest studies ever) 2. Are the correlations significant? (yes – all of them) 3. Are the measures appropriate? (all code originally input as characters; no abstraction taken that could interfere) FAQs and threats 33

  54. Future work 34

  55. • Automatic renamings (PROMISE → ENGAGEMENT, Eclipse → Eclse) Future work 34

  56. • Automatic renamings (PROMISE → ENGAGEMENT, Eclipse → Eclse) • Abstraction (Failure / mistake / error / problem / bug report vs. success / fame) Future work 34

  57. • Automatic renamings (PROMISE → ENGAGEMENT, Eclipse → Eclse) • Abstraction (Failure / mistake / error / problem / bug report vs. success / fame) • Generalization ( ИРОП principle) Future work 34

  58. Failure is a four-letter word

  59. Failure is a four-letter word

  60. Why all this is wrong

  61. Correlation vs. Causation

  62. Machine Learning works

  63. Cherry Picking

  64. Fix Causes, not Symptoms

  65. Actionable Findings

  66. Our Inspiration http://xkcd.com/882/

  67. Use Book in Class

Recommend


More recommend