基于扩展Jaccard系数的Java程序聚类研究
在软件工程实践中,为了提升Java源代码质量,使其更好地符合“高内聚、低耦合”的设计要求,本研究提出了一个基于扩展Jaccard系数的Java程序聚类方法。这种技术不仅考虑了类之间的继承和关联关系,还考虑了方法的调用者和被调用关系。研究者实施了一个原型系统,以辅助软件维护工作,将多个紧密相关的类聚类到同一个包中。测试结果表明,经过调整后的Java源代码结构,更符合“高内聚、低耦合”的特征。 本研究的出发点是为了改善Java源代码的质量,以满足设计要求中的“高内聚、低耦合”特点。高内聚意味着一个类或模块的职责明确且集中,而低耦合则指的是类或模块之间相互依赖性小。这样的设计能使得软件变更控制的影响范围更小,而且软件维护成本也会相应降低。 在软件工程中,经常会遇到由于编程风格与设计文档不严格一致等问题,导致实现的代码不完全符合“高内聚、低耦合”的特征。为解决这一问题,研究者调查了如何基于先前的研究成果,改进Java源代码结构,使其满足“高内聚、低耦合”的特征。通过将继承、关联和方法调用等关系映射到属性上,并将类映射为实体,提出了一种扩展的Jaccard系数来定义实体之间的距离,并使用层次聚类算法提供(半)自动化软件支持,用于修改程序结构。 层次聚类算法是一种无监督学习方法,通过连续合并(或分割)最相似(或不相似)的实体,形成一棵有层次的聚类树(或称为树状图)。本研究中的层次聚类算法用于软件重构,帮助开发者理解程序的结构并进行相应的调整。 Jaccard系数是一种度量样本集合相似度的指标,广泛应用于统计学和计算机科学中,特别是在聚类算法中常用于衡量数据集之间的相似性。传统的Jaccard系数是针对集合的,而扩展Jaccard系数则针对实体间的各种关系进行了扩展,能够更精细地反映出类之间的相似性。 本研究的一个主要贡献是扩展了Jaccard系数的应用范围,使其不仅限于数据集的相似度度量,而是适用于对象和实体之间的复杂关系。通过定义新的距离度量,扩展Jaccard系数能够更准确地反映Java类之间的继承、关联以及方法调用关系。 此外,本研究还强调了软件重构的重要性。软件重构是在不改变软件外部行为的情况下,对软件内部结构进行改进,以提高其可读性、可维护性和可扩展性。通过软件重构,开发者可以重新组织软件的设计和实现,以减少维护成本和复杂性,增强软件质量。 本研究提出的原型系统为软件维护者提供了一个半自动化工具,通过自动识别类之间的关系,并辅助将相关类聚集在一起,从而辅助软件维护和重构的工作。通过这种方式,软件维护者可以更快速地识别和调整代码库中类的组织结构,达到提高代码质量的目的。 本研究通过扩展Jaccard系数和层次聚类算法,提出了一种新的方法来分析和改进Java程序的类结构,目的是为了更好地实现软件设计中的“高内聚、低耦合”原则,从而提高软件的可维护性和质量。这项工作在软件工程领域具有重要的理论和实际应用价值,为后续的软件重构和代码质量提升工作提供了新的思路和工具。