Skip to main content
QUICK REVIEW

[论文解读] A Semantic-Based Approach for Detecting and Decomposing God Classes

Lee Junha, Donghun Lee|arXiv (Cornell University)|Apr 9, 2012
Natural Language Processing Techniques参考文献 21被引用 3
一句话总结

本文提出了一种基于语义的检测方法,通过分析方法交互和类关系来识别上帝类并分解其职责,利用类间与类内方法交互所衍生的语义相似度。该方法在 JMeter v2.5.1 上实现了 0.919 的高 F-measure,证明了其在不依赖内部属性-方法引用的情况下,对职责识别与分解具有极高的准确性。

ABSTRACT

Cohesion is a core design quality that has a great impact on posterior development and maintenance. By the nature of software, the cohesion of a system is diminished as the system evolves. God classes are code defects resulting from software evolution, having heterogeneous responsibilities highly coupled with other classes and often large in size, which makes it difficult to maintain the system. The existing work on identifying and decomposing God classes heavily relies on internal class information to identify God classes and responsibilities. However, in object-oriented systems, responsibilities should be analyzed with respect to not only internal class information, but also method interactions. In this paper, we present a novel approach for detecting God classes and decomposing their responsibilities based on the semantics of methods and method interactions. We evaluate the approach using JMeter v2.5.1 and the results are promising.

研究动机与目标

  • 解决现有上帝类检测技术仅依赖内部类结构和属性-方法关系所带来的局限性。
  • 通过跨类方法交互的语义分析,提升上帝类中职责识别的准确性。
  • 在无需详细属性引用的情况下,实现在设计与代码层面系统化检测与分解上帝类。
  • 提供一种稳健的、基于语义的重构方法,用于处理因职责混杂而难以维护的大型高内聚类。

提出的方法

  • 使用类间方法交互、类内方法交互以及类关系类型来度量方法的语义相似度。
  • 应用 Resnik 的语义相似度分类法分析类间方法交互,结合类内交互与类关系类型对结果进行优化。
  • 基于优化后的语义相似度得分构建加权图,以表示上帝类的结构及其职责。
  • 结合语义相似度阈值,利用 NOM(方法数量)、CBO(基础类耦合度)和 IC(继承耦合度)等指标检测上帝类。
  • 通过基于语义相似度的聚类方法分解职责,使用由互语义相似度(ISS)的均值与标准差导出的阈值。
  • 通过精确率、召回率与 F-measure 评估职责检测的准确性,将自动识别的职责与人工评审的基准结果进行对比。

实验结果

研究问题

  • RQ1基于方法交互与类关系的语义相似度是否能有效检测出传统基于内部结构的方法所遗漏的上帝类?
  • RQ2与基于属性的方法相比,对方法交互进行语义分析在多大程度上提升了上帝类中职责识别的准确性?
  • RQ3所提出的方法在将上帝类职责分解为结构清晰、可重用的类方面效果如何?
  • RQ4不同阈值设置对各类上帝类职责检测 F-measure 的影响如何?
  • RQ5该方法是否能在无需详细属性-方法引用的情况下,有效应用于设计与代码两个层面?

主要发现

  • 在 JMeter v2.5.1 中检测到的上帝类上,该方法的平均 F-measure 达到 0.919,表明职责检测具有很高的准确性。
  • $MenuFactory$ 和 $ProxyControl$ 类的职责被精确识别,与人工评审结果完全一致,证明了其检测能力的精确性。
  • 在 1.3 至 1.5 的阈值范围内,F-measure 始终保持在 0.9 以上,表明在不同配置设置下性能稳定可靠。
  • 结果显示出 ISS(互语义相似度)的显著差异,表明被检测到的上帝类具有很高的成功分解可能性。
  • 该方法无需属性-方法引用数据,因此可应用于设计阶段,此时此类细节尚不可用。
  • 通过引入基于方法交互分析的行为语义,该方法优于传统内聚度量,减少了上帝类检测中的主观性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。