During a long maintenance period, software projects experience architectural erosion and drift, making maintenance tasks more challenging to perform for software engineers unfamiliar with the code base. This paper presents a framework that assists software engineers in recovering a software project’s architecture from its source code. The architectural recovery process is an iterative one that combines clustering based on contextual and structural information in the code base with incremental developer feedback. This process converges when the developer is satisfied with the proposed decomposition of the software, and, as an additional benefit, the framework becomes tuned to aid future evolution of the project. The paper provides both analytic and empirical evaluations of the obtained results; experimental results show a reasonably superior performance of our framework over alternative conventional methods. The proposed framework utilizes a novel compartmentalization technique Coordinated Clustering of Heterogeneous Datasets (CCHD) that relies on contextual and structural information in the code base, but, unlike most previous approaches, does not require specific weights for each information type, which allows it to adapt to different project types and domains.
- Sheikh Motahar Naim, firstname.lastname@example.org
- Kostadin Damevski, email@example.com
- Mahmud Shahriar Hossain, firstname.lastname@example.org
For the Sando Code Search Tool we provide all of the original and preprocessed input data, including the sources for v. 1.7 of this tool, and the variety of lexical and structural data that are used by CCHD.
- Scripts for Performance Measurement
The decomposition produced by CCHD for the following code bases is provided: Sando (v. 1.7), Apache httpd (v. 2.0), JEdit (v. 5.1.0), Apache OODT (v. 0.2), ArchStudio (v. 4) and ITK (v. 4.5.2). For each we provide the classes and methods for 10 clusters. Please contact us for datasets representing different numbers of clusters.
- Sando – 10_clusters_method.csv; 10_clusters_class.csv
- httpd – 10_clusters_method.csv; 10_clusters_class.csv
- jEdit – 10_clusters_method.csv; 10_clusters_class.csv
- OODT – 10_clusters_method.csv; 10_clusters_class.csv
- ArchStudio – 10_clusters_method.csv; 10_clusters_class.csv
- ITK – 10_clusters_method.csv; 10_clusters_class.csv