直接类耦合 (DCC) 指标

问题描述 投票:0回答:1

我正在尝试了解直接类耦合(DCC)。我尝试计算类图的 DCC 指标,但我不知道我读的文章如何获得值 2:

有人可以解释一下如何计算吗?

class uml metrics software-design software-quality
1个回答
0
投票

直接类耦合度量是衡量一个类对系统中其他类的依赖性的度量。与其他类的依赖关系越多,重用该类或维护它就越困难。虽然我没有找到 Bansiya 和 Davis 在 2002 年定义它的原始文章,但我在其他学术论文以及 1997 年的 DDJ 文章中找到了它的描述,其中 Bansiya 和 Davis 描述了一种计算指标的工具自动从源代码:

与一个类直接相关的不同数量的类的计数,包括通过属性声明和方法中的消息传递(参数)相关的类。

此外,它与CBO(对象类之间的耦合)的相似性,特别是关于不计入耦合的继承,以及关于仅计一次的相同类之间的多个关系,导致以下分析:

  • EntryStation
    仅具有主要类型的属性:无耦合
  • User
    :无耦合
  • ATM
    Consortium
    (共享聚合)相关联,并具有
    CashierStation
    属性:与 2 个类耦合
  • CashierStation
    有一个
    EntryStation
    属性和
    Branch
    属性 ans 也与 Branch 相关联:与 2 个类耦合
  • Consortium
    ATM
    相关联,并具有
    Branch
    EntryStation
    User
    属性:与 4 个类耦合!
  • Branch
    关联并具有
    CashierStation
    属性。它具有
    ATM
    User
    属性:与 3 个类耦合!

所以从整体上看,最大耦合是 4,而不是 2。耦合总数为 11。每个类的平均值为 1.83(与 2 相差不远)。

不同的计算可能是什么?

  • 如果只看关联而忽略属性(错误),你会发现 1。
  • 如果只关注关联而忽略属性(错误)并将继承误解为关联,那么结果就是 2。
  • 如果只查看属性,您会发现 3。这是错误的,因为根据 Bansiya & Davis 的说法,此计算不是 DCC,而是 DAC(基于直接属性的耦合)
  • 如果忽略私有属性,您仍然会发现 3,无论如何这都是错误的,因为它会故意忽略公开和间接公开私有属性的 getter/setter(该图没有显示参数和返回类型,但我们可以猜测他们)。

总之,您确定这篇文章是正确的吗?或者文章是否只提到了一个特定类别的 DCC 值为 2?

© www.soinside.com 2019 - 2024. All rights reserved.