Coherent clusters in source code

Coherent clusters in source code
复制标题

DOI:
10.1016/j.jss.2013.07.040
复制
发表时间:
2014-02
期刊:
J. Syst. Softw.
影响因子:
--
通讯作者:
Syed S. Islam;J. Krinke;D. Binkley;M. Harman
Syed S. Islam;J. Krinke;D. Binkley;M. Harman
中科院分区:
其他
文献类型:
--
作者:
Syed S. Islam;J. Krinke;D. Binkley;M. Harman

文献摘要

被引文献

相似文献

本文介绍了一个大规模的相干相关集群的实证研究结果。在一个连贯的依赖集群中的所有语句依赖于同一组语句,并影响同一组语句;一个连贯集群的语句具有“连贯的”共享向后和向前依赖。我们介绍了一种有效地定位相干团簇的近似方法,并表明它具有97.76%的最小精度。我们的实证研究还发现,尽管他们的紧密的一致性约束,一致的依赖集群是丰富的:23所研究的30个程序的一致性集群,包含至少10%的整个程序。研究这些程序中的聚类模式发现,大多数程序包含多个实质性的连贯聚类。随后的一系列案例研究揭示了所有重要大小的集群都映射到逻辑功能并对应于程序结构。例如,我们表明,对于程序acct,前五个连贯的集群都映射到特定的,但在其他方面不明显,功能。集群可视化还可以显示程序结构中的细微缺陷,并识别潜在的重构候选者。集群间的依赖性的研究是用来突出相干集群是如何相互连接,揭示更高层次的结构,这可以用于逆向工程。最后,研究表明,集群是不相关的程序故障,因为它们保持稳定,在大多数系统的演变。
This paper presents the results of a large scale empirical study ofcoherent dependence clusters. All statements in a coherent dependence cluster depend upon the same set of statements and affect the same set of statements; a coherent cluster's statements have ‘coherent’ shared backward and forward dependence. We introduce an approximation to efficiently locate coherent clusters and show that it has aminimumprecision of 97.76%. Our empirical study also finds that, despite their tight coherence constraints, coherent dependence clusters are in abundance: 23 of the 30 programs studied have coherent clusters that contain at least 10% of the whole program. Studying patterns of clustering in these programs reveals that most programs contain multiple substantial coherent clusters. A series of subsequent case studies uncover that all clusters of significant size map to a logical functionality and correspond to a program structure. For example, we show that for the program acct, the top five coherent clusters all map to specific, yet otherwise non-obvious, functionality. Cluster visualization also brings out subtle deficiencies in program structure and identifies potential refactoring candidates. A study of inter-cluster dependence is used to highlight how coherent clusters are connected to each other, revealing higher-level structures, which can be used in reverse engineering. Finally, studies are presented to illustrate how clusters are not correlated with program faults as they remain stable during most system evolution.