  Maintenance of existing software requires a large amount of time for
comprehending the source code. The architecture of a software, however, may not
be clear to maintainers if up to date documentations are not available.
Software clustering is often used as a remodularisation and architecture
recovery technique to help recover a semantic representation of the software
design. Due to the diverse domains, structure, and behaviour of software
systems, the suitability of different clustering algorithms for different
software systems are not investigated thoroughly. Research that introduce new
clustering techniques usually validate their approaches on a specific domain,
which might limit its generalisability. If the chosen test subjects could only
represent a narrow perspective of the whole picture, researchers might risk not
being able to address the external validity of their findings. This work aims
to fill this gap by introducing a new approach, Explaining Software Clustering
for Remodularisation, to evaluate the effectiveness of different software
clustering approaches. This work focuses on hierarchical clustering and Bunch
clustering algorithms and provides information about their suitability
according to the features of the software, which as a consequence, enables the
selection of the most optimum algorithm and configuration from our existing
pool of choices for a particular software system. The proposed framework is
tested on 30 open source software systems with varying sizes and domains, and
demonstrates that it can characterise both the strengths and weaknesses of the
analysed software clustering algorithms using software features extracted from
the code. The proposed approach also provides a better understanding of the
algorithms behaviour through the application of dimensionality reduction
techniques.
