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

Developers' Perception of Co-change Patterns: An Empirical Study (ICSME 2015)

Developers' Perception of Co-change Patterns: An Empirical Study (ICSME 2015)

Co-change clusters are groups of classes that frequently change together. They are proposed as an alternative modular view, which can be used to assess the traditional decomposition of systems in packages. To investigate developer’s perception of co-change clusters, we report in this paper a study with experts on six systems, implemented in two languages. We mine 102 co-change clusters from the version history of such systems, which are classified in three patterns regarding their projection to the package structure: Encapsulated, Crosscutting, and Octopus. We then collect the perception of expert developers on such clusters, aiming to ask two central questions: (a) what concerns and changes are captured by the extracted clusters? (b) do the extracted clusters reveal design anomalies? We conclude that Encapsulated Clusters are often viewed as healthy designs and that Crosscutting Clusters tend to be associated to design anomalies. Octopus Clusters are normally associated to expected class distributions, which are not easy to implement in an encapsulated way, according to the interviewed developers.

ASERG, DCC, UFMG

October 05, 2015
Tweet

More Decks by ASERG, DCC, UFMG

Other Decks in Research

Transcript

  1. Developers’ Perception of Co-change Patterns: An Empirical Study Luciana Silva,

    Marco T. Valente Marcelo Maia Nicolas Anquetil UFMG – Brazil UFU – Brazil INRIA – France ICSME 2015, Bremen
  2. 3

  3. Encapsulated Clusters 9 9 9 9 9 9 9 9

    9 9 9 9 9 9 9 9 9 9 9 9 MorphicPager 10 10 10 10 10 SeasideExamples 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 SeasideCore 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 SeasideRendering 9
  4. Encapsulated Clusters 9 9 9 9 9 9 9 9

    9 9 9 9 9 9 9 9 9 9 9 9 MorphicPager 10 10 10 10 10 SeasideExamples 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 SeasideCore 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 SeasideRendering Nice modules? 9
  5. Crosscutting Clusters 8 8 8 8 8 8 8 8

    8 session 8 8 action 8 8 8 model.task 8 8 8 model.egp 8 8 8 model.involved 8 8 action.task 8 util 10
  6. Crosscutting Clusters 8 8 8 8 8 8 8 8

    8 session 8 8 action 8 8 8 model.task 8 8 8 model.egp 8 8 8 model.involved 8 8 action.task 8 util Crosscutting concern? Modularity flaw? Major refactoring? Re-architecting? 10
  7. Octopus Clusters 18 18 18 18 18 18 18 18

    18 18 18 18 18 18 18 18 Finder 18 RoassalPaintings 18 18 18 18 18 18 11
  8. Octopus Clusters 18 18 18 18 18 18 18 18

    18 18 18 18 18 18 18 18 Finder 18 RoassalPaintings 18 18 18 18 18 18 Move class refactoring? 11
  9. Research Questions RQ #1: To what extent do the proposed

    co-change patterns cover real instances of clusters? 12
  10. Research Questions RQ #1: To what extent do the proposed

    co-change patterns cover real instances of clusters? RQ #2: How developers describe the clusters matching the proposed co-change patterns? 12
  11. Research Questions RQ #1: To what extent do the proposed

    co-change patterns cover real instances of clusters? RQ #2: How developers describe the clusters matching the proposed co-change patterns? RQ #3: To what extent do the clusters matching the proposed co-change patterns indicate design anomalies? 12
  12. Study Design Pharo System Description Seaside Framework for web applications

    Moose Software and data analysis Fuel Object serialization framework Epicea Tool to share untangled commits Glamour Infrastructure for impl. browsers 14
  13. Study Design Pharo System Description Seaside Framework for web applications

    Moose Software and data analysis Fuel Object serialization framework Epicea Tool to share untangled commits Glamour Infrastructure for impl. browsers 14
  14. Study Design Pharo System Description Seaside Framework for web applications

    Moose Software and data analysis Fuel Object serialization framework Epicea Tool to share untangled commits Glamour Infrastructure for impl. browsers 14
  15. RQ #2. Developer’s Perception 10 10 10 10 10 SeasideExamples

    10 10 10 10 10 SeasideCore 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 SeasideRendering Rendering: web widgets and rendering logic Core: widget library Glamour 20
  16. 10 10 10 10 10 SeasideExamples 10 10 10 10

    10 SeasideCore 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 SeasideRendering “The Presenter classes represent an abstract description for a widget, … concrete widget by the Renderer. … widget library (Core) is changed, the Renderer logic is also changed. After that, the Examples are updated.” Glamour’s Developer 21 RQ #2. Developer’s Perception
  17. “The developer … new browser … the guidelines for packages

    in Glamour. Despite of these classes define clearly the browser creation concern, ...” Glamour’s developer 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 MorphicPager 9 9 9 9 9 9 9 9 9 9 23 RQ #3. Design Anomalies
  18. 24 RQ #2. Developer’s Perception Functional Concerns “CreateArticle is a

    quite generic use case … . …, when implementing a new use case, … change classes associated to CreateArticle” Syspol’s developer
  19. RQ #2. Developer’s Perception  Non-functional Concerns 8 8 8

    8 8 8 8 8 8 session 8 8 action 8 8 8 model.task 8 8 8 model.egp 8 8 8 model.involved 8 8 action.task 8 util This cluster implements Access to database and Article template 25
  20. Low cohesion/high coupling Contains “one of the classes with the

    highest coupling in the system.” SysPol’s developer 28 RQ #3. Design Anomalies
  21. Complex concerns “this is a difficult part to understand in

    the system and its implementation is quite complex.” SysPol’s developer 29 RQ #3. Design Anomalies
  22. Package decomposition problem “this package includes implementation logic that should

    be in an under layer.” SysPol’s developer 30 RQ #3. Design Anomalies
  23. 31 RQ #2. Developer’s Perception 18 18 18 18 18

    18 18 18 18 18 18 18 18 18 18 18 Finder 18 RoassalPaintings 18 18 18 18 18 18 Used to display visualizations inside browsers. Moose Browsers – Moose panels Generic class for visualization
  24. “Unfortunately, … difficult to localize changes in just one package.

    … Shielding changes is not absolutely possible.” Glamour’s developer 36