Experiments with Clustering as a Software Remodularization Method

  • Authors:
  • Nicolas Anquetil;Cédric Fourrier;Timothy C. Lethbridge

  • Affiliations:
  • -;-;-

  • Venue:
  • WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

As valuable software systems become older, reverse engineering becomes increasingly important to companies that have to maintain the code. Clustering is a key activity in reverse engineering that is used to discover improved designs of systems or to extract significant concepts from code.Clustering is an old, highly sophisticated, activity which offers many methods to meet different needs. The various methods have been well documented in the past, however conclusions from the general clustering literature may not apply entirely in the reverse engineering domain. In this paper, we study three things: some clustering algorithms, some metrics that quantify the coupling between entities to be clustered, and how these entities are represented abstractly. Our objective is to establish whether and why each could be used for software remodularization.The results are compared using three quality criteria: design quality (cohesion and coupling), comparison with an expert decomposition, and size of the clusters obtained. The experiments were conducted on three public domain systems (gcc, Linux and Mosaic) and a legacy telecommunications system.Among our findings, we confirm the importance of carefully choosing the scheme that is used to describe the entities being clustered.