Software Restructuring using Hierarchical Clustering
Graph Drawing and Information Visualization Lab
Department of Computer Science and Engineering
Bangladesh University of Engineering and Technology
account_balance Supported by CodeCrafters International
event Accepted at The 6th India Software Engineering Conference 2013 (ISEC 2013), New Delhi, India
construction Skills used: Java, code refactoring, code quality metrics
arrow_backReturn to Projects
Ill-structured code is difficult to understand and thereby, 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 work, we develop a new hierarchical clustering technique for restructuring software at the function level that improves refactoring visualization by at least 30% over 3 widely popular clustering algorithms, is 60% faster, and yields the same code quality improvements on Java functions extracted from real-life industrial programs.
● Invited for presentation at the Workshop on Graph Drawing and Graph Algorithms (GDGA) 2013, Dhaka, Bangladesh.
article Paper - Preprint 2013
book_2 Master's Thesis
sdk CohesionOptimizer Tool
developer_guide CohesionOptimizer Tool Manual
Image:Freepik