thi*_*eek 22 architecture ooad ndepend code-metrics
我最近使用了NDepend,它为我的.net程序集和相关的pdbs提供了一个很好的报告.
我在报告中发现的最有趣的事情是抽象性与不稳定性图.我想要真正详细地理解这一点,我阅读他们的文档和在线metrices,但它只能在一定程度上有所帮助.
主要是我希望了解如何正确评估图形以及如何稳定地控制抽象性.
这里有一篇非常好的文章就这个问题进行了讨论,但除此之外我还需要更多的内容是"如何控制它?[稳定控制抽象]'

trs*_*hiv 28
抽象性是衡量软件系统刚性的标准.抽象越高,刚度越低(或灵活性越大),反之亦然.如果系统的组件依赖于抽象类或接口,那么系统比直接依赖于具体类更容易扩展和更改.
稳定性是对变化容忍度的衡量标准,因为软件系统在不破坏变更的情况下允许对变更进行更改.这是通过分析系统组件的相互依赖性来确定的.
罗伯特·C·马丁(Robert C. Martin)关于面向对象指标的文章用更多的数量来描述这些概
摘自文章:
可以通过计算与该类别交互的依赖关系来衡量类别的责任,独立性和稳定性.已确定三个指标:
Ca:传入耦合:此类别之外的类数取决于此类别中的类.
Ce:传出耦合:此类别中的类数取决于此类别之外的类.
I:不稳定性:(Ce÷(Ca + Ce)):该度量具有范围[0,1].I = 0表示最大稳定类别.I = 1表示最大不稳定类别.
答:抽象性:(#类别中的抽象类÷类别中类的总数#).该度量范围为[0,1].0表示具体,1表示完全抽象.
在任何特别大的软件系统中,平衡是至关重要的.在这种情况下,系统应该平衡抽象性和稳定性以便"好".AI图上的位置显示了这一点.请阅读文章的解释.