The size and complexity of industrial strength software systems are constantly increasing. 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, the authors first present the state of the art in software clustering research. They discuss the clustering methods that have received the most attention from the research community and outline their strengths and weaknesses. Their paper describes each phase of a clustering algorithm separately. They also present the most important approaches for evaluating the effectiveness of software clustering.