Journal of Software Maintenance and Evolution: Research and Practice - Special Issue on the 12th Conference on Software Maintenance and Reengineering (CSMR 2008)
Identifying components in object-oriented programs using dynamic analysis and clustering
CASCON '09 Proceedings of the 2009 Conference of the Center for Advanced Studies on Collaborative Research
SMC'09 Proceedings of the 2009 IEEE international conference on Systems, Man and Cybernetics
Optimization of software components selection for component-based software system development
Computers and Industrial Engineering
On the congruence of modularity and code coupling
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
CBSE'10 Proceedings of the 13th international conference on Component-Based Software Engineering
Survey: A survey on search-based software design
Computer Science Review
Search-based software engineering: Trends, techniques and applications
ACM Computing Surveys (CSUR)
Cooperative clustering for software modularization
Journal of Systems and Software
Hi-index | 0.00 |
The first part of this paper describes an automatic reverse engineering process to infer subsystem abstractions that are useful for a variety of software maintenance activities. This process is based on clustering the graph representing the modules and module-level dependencies found in the source code into abstract structures not in the source code called subsystems. The clustering process uses evolutionary algorithms to search through the enormous set of possible graph partitions, and is guided by a fitness function designed to measure the quality of individual graph partitions. The second part of this paper focuses on evaluating the results produced by our clustering technique. Our previous research has shown through both qualitative and quantitative studies that our clustering technique produces good results quickly and consistently. In this part of the paper we study the underlying structure of the search space of several open source systems. We also report on some interesting findings our analysis uncovered by comparing random graphs to graphs representing real software systems.