ModularityCheck
A Tool for Assessing Modularity using Co-Change Clusters
Luciana Silva, Daniel Félix,
Marco Tulio Valente, and Marcelo Maia
http://aserg.labsoft.dcc.ufmg.br
Motivation
What is a well-modularized system?
2
ModularityCheck
• A tool for assessing and exploring modularity
• Using change data (commits)
5
How it Works• Step #1: Co-Change Graph
6
Co-change Graphs
• Geronimo– Density = 0.01
7
Co-change Graphs
• Geronimo– Density = 0.01 sparse
8
Co-change Graphs
• Geronimo– Density = 0.01sparse, but dense subgraphs
9
Co-change Clustering
• Step #2: graph clustering algorithm– Chamaleon– Designed for sparse graphs
• Co-change clusters: – Groups of classes that frequently change
together
• Geronimo:– 21 co-change clusters– Density: 0.80 / cluster
10
Visualization– Step #3: Visualization using distribution maps
11
Co-change Clusters Patterns
• Step #4: Classification in patterns:– Well-encapsulated– Partially encapsulated– Crosscutting
12
Well-encapsulated clusters
13
Well-encapsulated clusters
14
Well-encapsulated clusters
15
Nice modules!
Well-encapsulated clusters
16
Well-encapsulated clusters
17
Well-encapsulated clusters
18
Package Split refactoring?
Partially encapsulated clusters
19
Partially encapsulated clusters
20
Partially encapsulated clusters
21
Move Classrefactoring?
Crosscutting Clusters
22
Crosscutting Clusters
23
Crosscutting Clusters
24
Crosscutting concern?Modularization Flaw?Major refactoring?Re-architecting?
aserg.labsoft.dcc.ufmg.br/modularitycheck
Live Demo Tomorrow – 11:00 AM
25