A quantitative framework for software restructuring
Journal of Software Maintenance: Research and Practice
Measuring Design-Level Cohesion
IEEE Transactions on Software Engineering
Experiments with Clustering as a Software Remodularization Method
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Using Automatic Clustering to Produce High-Level System Organizations of Source Code
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Software Engineering: A Practitioner's Approach (McGraw-Hill Series in Computer Science)
Software Engineering: A Practitioner's Approach (McGraw-Hill Series in Computer Science)
Applications of clustering techniques to software partitioning, recovery and restructuring
Journal of Systems and Software - Special issue: Applications of statistics in software engineering
On the Automatic Modularization of Software Systems Using the Bunch Tool
IEEE Transactions on Software Engineering
Application of graph theory to OO software engineering
Proceedings of the 2006 international workshop on Workshop on interdisciplinary software engineering research
Program restructuring using clustering techniques
Journal of Systems and Software - Special issue: Selected papers from the 4th source code analysis and manipulation (SCAM 2004) workshop
Object-Oriented Software Systems Restructuring through Clustering
ICAISC '08 Proceedings of the 9th international conference on Artificial Intelligence and Soft Computing
Foundations of Software Testing
Foundations of Software Testing
Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm
Advances in Engineering Software
Software Module Clustering as a Multi-Objective Search Problem
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
Ill-structured code is difficult to understand and thereby is costly to maintain and reuse. Software restructuring techniques based on hierarchical agglomerative clustering (HAC) algorithms have been widely used to restructure large modules with low cohesion into smaller modules with high cohesion, without changing the overall behaviour of the software. These techniques generate clustering trees, of modules, that are sliced at different cut-points to obtain desired restructurings. Choosing appropriate cut-points has always been a difficult problem in clustering. Previous HAC techniques generate clustering trees that have large number of cut-points. Moreover, many of those cut-points return clusters of which only a few lead to a meaningful restructuring of the software. In this paper, we give a new hierarchical clustering technique, the (k, w)-Core Clustering ((k, w)-CC) technique, for restructuring software at the function level that generates clustering trees with lower number of cut-points, which yield a lower number of redundant clusters. (k, w)-CC gives good restructurings. To establish this, we provide an experimental comparison of (k, w)-CC with four previous HAC techniques: single linkage algorithm (SLINK), complete linkage algorithm (CLINK), weighted pair group method of arithmetic averages (WPGMA), and adaptive k-nearest neighbour algorithm (A-KNN). In the experiments, the techniques were implemented on Java functions extracted from real-life industrial programs.