Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Yuriy Tymchuk

October 04, 2016
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Research

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

    View Slide

  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

    View Slide

  3. An intensive conference…

    View Slide

  4. Time to Relax!

    View Slide

  5. View Slide

  6. Palmgrowing

    View Slide

  7. Height
    Time
    Analyzing the Process of Palmgrowing

    View Slide

  8. Height
    Time
    Analyzing the Process of Palmgrowing

    View Slide

  9. Height
    Analyzing the Process of Palmgrowing
    Time

    View Slide

  10. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  11. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  12. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  13. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  14. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  15. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  16. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  17. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  18. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  19. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  20. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  21. Analyzing the Process of Palmgrowing
    Height
    Time

    View Slide

  22. 62.5
    125
    187.5
    Analyzing the Process of
    Height
    Time

    View Slide

  23. Pharo 5
    Height
    Time
    62.5
    125
    187.5

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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
    *

    View Slide

  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
    *

    View Slide

  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:

    View Slide

  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:

    View Slide

  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 ]

    View Slide

  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

    View Slide

  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

    View Slide

  35. Pharo 5 SmallLint Time
    Critiques
    Height
    Time
    Palm - Pharo map

    View Slide

  36. Analyzing the Process of Pharoevolution

    View Slide

  37. 680
    Versions
    Critiques
    Analyzing the Process of Pharoevolution

    View Slide

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

    View Slide

  39. 40K
    30K
    20K
    10K
    680
    Versions
    Critiques
    0
    Analyzing the Process of Pharoevolution
    Number of Critiques Σ=19.5M

    View Slide

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

    View Slide

  41. Bad Pharoevolution

    View Slide

  42. Good Pharoevolution

    View Slide

  43. View Slide

  44. 5K Rule #xed

    View Slide

  45. 5K Rule #xed
    2.5K Rule removed

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  49. View Slide

  50. Why did this irregularity occur?
    What are the irregularities in the system’s evolution?

    View Slide

  51. View Slide

  52. A picture is worth
    a thousand words


    English idiom

    View Slide

  53. Every block of stone
    has a statue inside it
    and it is the task of the
    sculptor to discover it


    Michelangelo

    View Slide

  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


    View Slide

  55. Time (Versions)
    Metrics (Rules)

    View Slide

  56. Time (Versions)
    Metrics (Rules)

    View Slide

  57. Time (Versions)
    Metrics (Rules)

    View Slide

  58. Time (Versions)
    Metrics (Rules)

    View Slide

  59. Time (Versions)
    Metrics (Rules)

    View Slide

  60. Time (Versions)
    Metrics (Rules)

    View Slide

  61. Time (Versions)
    Metrics (Rules)

    View Slide

  62. Time (Versions)
    Metrics (Rules)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  70. e (Packages)
    Time (Versions)

    View Slide

  71. e (Packages)
    Time (Versions)

    View Slide

  72. e (Packages)
    Time (Versions)

    View Slide

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

    View Slide

  74. After about 1 working day…

    View Slide

  75. Packages
    Versions
    Rules

    View Slide

  76. View Slide

  77. View Slide

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

    View Slide

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

    View Slide

  80. Packages
    Versions
    Rules

    View Slide

  81. Packages
    Versions
    Rules

    View Slide

  82. Packages
    Versions
    Rules

    View Slide

  83. Packages
    Versions
    Rules

    View Slide

  84. Packages
    Versions
    Rules

    View Slide

  85. Packages
    Versions
    Rules

    View Slide

  86. Color Code
    Critiques added
    Critiques removed

    View Slide

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

    View Slide

  88. Why did this irregularity occur?

    View Slide

  89. View Slide

  90. View Slide

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

    View Slide

  92. Meet the Anomalies

    View Slide

  93. Wall

    View Slide

  94. Wall
    Something Went Completely Wrong

    View Slide

  95. Beam

    View Slide

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

    View Slide

  97. Beams on a Rule-Pillar

    View Slide

  98. Beams on a Rule-Pillar
    Refactoring?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  103. Pillar

    View Slide

  104. Pillar
    Package Addition/Removal

    View Slide

  105. Pillar
    Package Addition/Removal

    View Slide

  106. Rules on Package-Beam

    View Slide

  107. Rules on Package-Beam

    View Slide

  108. Waldo

    View Slide

  109. Waldo

    View Slide

  110. Waldo

    View Slide

  111. Waldo
    ±2000 critiques

    View Slide

  112. Waldo

    View Slide

  113. Waldo
    Wall Pillar Beam

    View Slide

  114. View Slide

  115. Initial Visualization

    View Slide

  116. Final Visualization

    View Slide

  117. Final Visualization

    View Slide

  118. Final Visualization
    Walls 3×2

    View Slide

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

    View Slide

  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

    View Slide

  121. The Original Bar Chart

    View Slide

  122. The Original Bar Chart
    Cleansed

    View Slide

  123. View Slide

  124. View Slide

  125. View Slide

  126. View Slide

  127. View Slide

  128. View Slide

  129. View Slide

  130. View Slide

  131. View Slide