OO设计质量指标

时间:2014-02-28 11:01:53

标签: oop software-design

我正在阅读由罗伯特·马丁撰写的关于OO设计质量指标的科学paper

在他的论文中,他描述了“一组指标可用于衡量面向对象设计的质量,以及该设计子系统之间的相互依赖性”

他继续谈论如何在抽象和不稳定之间取得良好的平衡。以下是他撰写的指标及其计算方法:

Na:包中的具体和抽象类(和接口)的数量是包的可扩展性的指示。

传入耦合(Ca):包外的类的数量取决于包中的类。

传出耦合(Ce):包内的类的数量取决于包外的类。

抽象性(A):分析包中抽象类(和接口)的数量与分析包中类的总数之比。此度量标准的范围是0到1,A = 0表示完全具体的包,A = 1表示完全抽象的包。

不稳定性(I):传出偶合(Ce)与总偶合(Ce + Ca)的比率,使得I = Ce /(Ce + Ca)。该指标是包的变化弹性的指标。此度量的范围是0到1,I = 0表示完全稳定的包,I = 1表示完全不稳定的包。

与主序列的距离(D):包与理想化线A + I = 1的垂直距离。该指标表示包在抽象性和稳定性之间的平衡。直接在主序列上的包在其抽象性和稳定性方面是最佳平衡的。理想的包是完全抽象和稳定的(x = 0,y = 1)或完全混凝土和不稳定(x = 1,y = 0)。此度量的范围是0到1,D = 0表示与主序列重合的包,D = 1表示尽可能远离主序列的包。

我做了以下简单的设计。

enter image description here

我对最后一个指标(D)感到困惑。如果我计算度量D(图中的D'),我得到负值-0.5。但是,如果我读到描述,那么值应该在0和1之间。另外wikipedia表明对于度量接口也被视为抽象类。但我无法从论文中做到这一点。这是真的?

enter image description here

我做错了什么吗?相信这个设计,虽然很小,但不是那么糟糕吗?

1 个答案:

答案 0 :(得分:1)

如果D是“距离”那么你应该考虑它的绝对值,论文中的公式也有绝对算子......我不确定你是如何计算距离的,或者我误解了你。

关于考虑抽象类和接口我认为它们都是提供“接口框架”的机制,这意味着保持接口级别的依赖性而不是具体的类......所以我认为将它们视为同样的东西是安全的尽管存在一些差异。