Advances in Software Engineering
Volume 2012 (2012), Article ID 792024, 18 pages
Review Article

Clustering Methodologies for Software Engineering

Department of Computer Science and Engineering, York University, Toronto, ON, Canada M3J 1P3

Received 25 November 2011; Revised 28 February 2012; Accepted 28 February 2012

Academic Editor: Letha Hughes Etzkorn

Copyright © 2012 Mark Shtern and Vassilios Tzerpos. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.


The size and complexity of industrial strength software systems are constantly increasing. This means that the task of managing a large software project is becoming even more challenging, especially in light of high turnover of experienced personnel. Software clustering approaches can help with the task of understanding large, complex software systems by automatically decomposing them into smaller, easier-to-manage subsystems. The main objective of this paper is to identify important research directions in the area of software clustering that require further attention in order to develop more effective and efficient clustering methodologies for software engineering. To that end, we first present the state of the art in software clustering research. We discuss the clustering methods that have received the most attention from the research community and outline their strengths and weaknesses. Our paper describes each phase of a clustering algorithm separately. We also present the most important approaches for evaluating the effectiveness of software clustering.