Abstract:Program clustering for large and complex systems improves the effectiveness and efficiency of software maintenance and is a basis for acquiring reusable components. In this paper, a functional requirement based hierarchical agglomerative approach to this problem is proposed. In this approach, the semantic information existing in the descriptions of functional requirements is employed to acquire a high-level logic view of the given system. Furthermore, the corresponding source code artifacts for each requirement are acquired through the dynamic analysis. The requirements hierarchy and the requirement-artifact relationships are then used to recover the hierarchical organization of the source code. The clustering results of this approach have the mapping to the application domain. In addition, due to the dynamic analysis, the granularity of this approach is flexible.