RefactorFirst icon indicating copy to clipboard operation
RefactorFirst copied to clipboard

Use a clustering algorithm to identify classes that should belong together

Open jimbethancourt opened this issue 1 year ago • 0 comments
trafficstars

As @unclebob (I think) said well: "What is used together, goes together. What changes together, goes together."

Use the Chameleon clustering algorithm (or possibly the BIRCH or Spectral Clustering algorithms) to identify what goes together based on both what is used together and what changes together, using the following for the proximity and interconnectedness calculations:

proximity / closeness --> number of times files have been committed together interconnectedness --> edge weight between classes

https://github.com/lbehnke/hierarchical-clustering-java may be able to be used as a starting point.

jimbethancourt avatar Sep 20 '24 02:09 jimbethancourt