Reengineering the Modularity of OO Systems - Brito e Abreu, F. (Object-Oriented Technology. ECOOP’98 Workshop Reader, 2002)
GOODLY (a Generic Object Oriented Design Language? Yes!) allows expressing the most relevant object oriented design information. Thirteen different coupling categories could be identified in GOODLY. The interconnection strength between two classes, which we called affinity, allowed to build a dissimilarity matrix among the classes of a given software system. That matrix drove several variants of a hierarchical agglomerative clustering algorithm that we applied to a sample of systems that was selected according to a set of criteria such as: diversity in level of abstraction, language and application domain, considerable size and maturity. We found out that the adopted clustering method has a strong influence on the matching level with the clustering performed by humans. The two best matches were obtained with the average linkage within groups and ward methods and the two worst with the median and centroid methods. For a chosen clustering method, the matching level increases as the average number of classes per module decreases.