Walls, Pillars and Beams: A 3D Decomposition of Quality Anomalies (vissoft2016)

Walls, Pillars and Beams: A 3D Decomposition of Quality Anomalies (vissoft2016)

Quality rules are used to capture important implementation and design decisions embedded in a software system’s architecture. They can automatically analyze software and assign quality grades to its components. To provide a meaningful evaluation of quality, rules have to stay up-to-date with the continuously evolving system that they describe. However one would encounter unexpected anomalies during a historical overview because the notion of quality is always changing, while the qualitative evolution analysis requires it to remain constant.
To understand the anomalies in a quality history of a real-world software system we use an immersive visualization that lays out the quality fluctuations in three dimensions based on two co-evolving properties: quality rules and source code. This helps us to identify and separate the impact caused by the changes of each property, and allows us to detect significant mistakes that happened during the development process.

9847702de1f7f19db8c3e158325baa8e?s=128

Yuriy Tymchuk

October 04, 2016
Tweet

Transcript

  1. Walls, Pillars and Beams: A 3D Decomposition of Quality Anomalies

    , Leonel Merino, Mohammad Ghafari and Oscar Nierstrasz Software Composition Group @ University of Bern Yuriy Tymchuk
  2. Walls, Pillars and Beams: A 3D Decomposition of Quality Anomalies

    , Leonel Merino, Mohammad Ghafari and Oscar Nierstrasz Software Composition Group @ University of Bern @yuriy_tymchuk
  3. An intensive conference…

  4. Time to Relax!

  5. None
  6. Palmgrowing

  7. Height Time Analyzing the Process of Palmgrowing

  8. Height Time Analyzing the Process of Palmgrowing

  9. Height Analyzing the Process of Palmgrowing Time

  10. Analyzing the Process of Palmgrowing Height Time

  11. Analyzing the Process of Palmgrowing Height Time

  12. Analyzing the Process of Palmgrowing Height Time

  13. Analyzing the Process of Palmgrowing Height Time

  14. Analyzing the Process of Palmgrowing Height Time

  15. Analyzing the Process of Palmgrowing Height Time

  16. Analyzing the Process of Palmgrowing Height Time

  17. Analyzing the Process of Palmgrowing Height Time

  18. Analyzing the Process of Palmgrowing Height Time

  19. Analyzing the Process of Palmgrowing Height Time

  20. Analyzing the Process of Palmgrowing Height Time

  21. Analyzing the Process of Palmgrowing Height Time

  22. 62.5 125 187.5 Analyzing the Process of Height Time

  23. Pharo 5 Height Time 62.5 125 187.5

  24. Pharo 5 240 packages 5.5K classes 92K methods 680 updates

    Height Time
  25. Time Pharo 5 240 packages 5.5K classes 92K methods 680

    updates SmallLint Height
  26. Time Pharo 5 240 packages 5.5K classes 92K methods 680

    updates SmallLint 8 groups 124 rules 250 updates* CI & Live Height
  27. Time Pharo 5 240 packages 5.5K classes 92K methods 680

    updates SmallLint 8 groups 124 rules 250 updates* Tricorder: Building a Program Analysis Ecosystem. C. Sadowski, J. Gogh, C. Jaspan, E. Soederberg, C. Winter. ICSE’15, pp. 598–608, IEEE, 2015 When QualityAssistant Meets Pharo. Y. Tymchuk , M. Ghafari, O. Nierstrasz. IWST’16, to-be-published, ACM, 2016 * CI & Live Height
  28. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates isNil ifTrue: ifNil: car isNil ifTrue: [ ^ car := Car new ] CI & Live *
  29. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates isNil ifTrue: ifNil: car isNil ifTrue: [ ^ car := Car new ] CI & Live *
  30. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates car isNil ifTrue: [ ^ car := Car new ] CI & Live isNil ifTrue: ifNil:
  31. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates car isNil ifTrue: [ ^ car := Car new ] Critique CI & Live isNil ifTrue: ifNil:
  32. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates CI & Live isNil ifTrue: ifNil: Critiques car isNil ifTrue: [ ^ car := Car new ]
  33. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates Time CI & Live isNil ifTrue: ifNil: car isNil ifTrue: [ ^ car := Car new ] Critiques
  34. Height Time Pharo 5 240 packages 5.5K classes 92K methods

    680 updates SmallLint 8 groups 124 rules 250 updates Time CI & Live isNil ifTrue: ifNil: car isNil ifTrue: [ ^ car := Car new ] Critiques
  35. Pharo 5 SmallLint Time Critiques Height Time Palm - Pharo

    map
  36. Analyzing the Process of Pharoevolution

  37. 680 Versions Critiques Analyzing the Process of Pharoevolution

  38. 40K 30K 20K 10K 680 Versions Critiques 0 Analyzing the

    Process of Pharoevolution
  39. 40K 30K 20K 10K 680 Versions Critiques 0 Analyzing the

    Process of Pharoevolution Number of Critiques Σ=19.5M
  40. 68 Versions Analyzing the Process of Pharoevolution Number of Critiques

    Σ=19.5M Δ=64.5K
  41. Bad Pharoevolution

  42. Good Pharoevolution

  43. None
  44. 5K Rule #xed

  45. 5K Rule #xed 2.5K Rule removed

  46. 5K Rule #xed 3.5K Rule added 2.5K Rule removed

  47. 0.8K Code added 5K Rule #xed 3.5K Rule added 2.5K

    Rule removed
  48. 5K Rule #xed 3.5K Rule added 1K Violation solved 2.5K

    Rule removed 0.8K Code added
  49. None
  50. Why did this irregularity occur? What are the irregularities in

    the system’s evolution?
  51. None
  52. A picture is worth a thousand words “ ” English

    idiom
  53. Every block of stone has a statue inside it and

    it is the task of the sculptor to discover it “ ” Michelangelo
  54. Every piece of data has a visualization that tells a

    story about it and it is the task of the visualization builder to discover it “ ”
  55. Time (Versions) Metrics (Rules)

  56. Time (Versions) Metrics (Rules)

  57. Time (Versions) Metrics (Rules)

  58. Time (Versions) Metrics (Rules)

  59. Time (Versions) Metrics (Rules)

  60. Time (Versions) Metrics (Rules)

  61. Time (Versions) Metrics (Rules)

  62. Time (Versions) Metrics (Rules)

  63. Time (Versions) Metrics (Rules) Code (Packages)

  64. Code (Packages) Time (Versions) Metrics (Rules)

  65. Code (Packages) Time (Versions) Metrics (Rules)

  66. Code (Packages) Time (Versions) Metrics (Rules)

  67. Code (Packages) Time (Versions) Metrics (Rules)

  68. Code (Packages) Time (Versions) Metrics (Rules)

  69. Code (Packages) Time (Versions) Metrics (Rules)

  70. e (Packages) Time (Versions)

  71. e (Packages) Time (Versions)

  72. e (Packages) Time (Versions)

  73. Code (Packages) Time (Versions) Metrics (Rules)

  74. After about 1 working day…

  75. Packages Versions Rules

  76. None
  77. None
  78. What are the irregularities in the system’s evolution?

  79. What are the irregularities in the system’s evolution? “Anti-Matrix”

  80. Packages Versions Rules

  81. Packages Versions Rules

  82. Packages Versions Rules

  83. Packages Versions Rules

  84. Packages Versions Rules

  85. Packages Versions Rules

  86. Color Code Critiques added Critiques removed

  87. Color Code No change Critiques added Critiques removed High change

    High change
  88. Why did this irregularity occur?

  89. None
  90. None
  91. Yes, that’s exactly what we did!

  92. Meet the Anomalies

  93. Wall

  94. Wall Something Went Completely Wrong

  95. Beam

  96. Beam Added/Removed Rule Fixed/Broken Rule Violated Single Rule Resolved Critiques

  97. Beams on a Rule-Pillar

  98. Beams on a Rule-Pillar Refactoring?

  99. Beams on a Rule-Pillar Refactoring? 1 Non-Related Beam

  100. Beams on a Rule-Pillar Refactoring? 1 Non-Related Beam 2 Related

    Beams
  101. Beams on a Rule-Pillar Refactoring? 1 Non-Related Beam 1 Rule

    broken & Fixed 2 Related Beams
  102. Beams on a Rule-Pillar Refactoring? 1 Non-Related Beam 1 Rule

    broken & Fixed 2 Related Beams
  103. Pillar

  104. Pillar Package Addition/Removal

  105. Pillar Package Addition/Removal

  106. Rules on Package-Beam

  107. Rules on Package-Beam

  108. Waldo

  109. Waldo

  110. Waldo

  111. Waldo ±2000 critiques

  112. Waldo

  113. Waldo Wall Pillar Beam

  114. None
  115. Initial Visualization

  116. Final Visualization

  117. Final Visualization

  118. Final Visualization Walls 3×2

  119. Final Visualization Walls added/removed !xed/broken other (non-rule) Beams/Rules 3×2 8

    7 17
  120. Final Visualization Walls added/removed !xed/broken other (non-rule) added/removed modi!ed Beams/Rules

    Pillars/Packages 3×2 8 17 7 42 3
  121. The Original Bar Chart

  122. The Original Bar Chart Cleansed

  123. None
  124. None
  125. None
  126. None
  127. None
  128. None
  129. None
  130. None
  131. None