在软件产品中可以测量各种类型的质量,例如适合于目的(例如,最终用途),可维护性,效率。其中一些是主观的或领域特定的(例如,好的GUI设计原则可能在不同的文化中是不同的,或者依赖于使用环境,考虑军事和消费者的使用)。
我感兴趣的是与类型的网络(或图)及其相互关联相关的更深层次的质量形式,也就是说,每种类型指的是什么类型,是否存在与适当分层的体系结构相关的清晰可识别的互连群集,或者相反,是否存在类型引用的大“球”(“整体式”代码)。此外,每种类型和/或方法的大小(例如,以Java字节码或.Net IL的数量衡量)应该给出一些指示,表明大型复杂算法在哪里被实现为单片代码块,而不是被分解为更易管理/可维护的块。
基于这样的想法的分析可能能够计算出至少是质量的代理的指标。我怀疑高质量和低质量之间的确切阈值/决策点是主观的,例如,因为我们所说的可维护性是指程序员的可维护性,因此功能分解必须与人类思维的工作方式兼容。因此,我想知道是否可以有一个数学上的纯软件质量定义,在所有可能的场景中超越所有可能的软件。
我还想知道这是不是一个危险的想法,如果客观的质量代理变得流行,那么业务压力将导致开发人员以牺牲整体质量为代价来追求这些度量标准(那些未由代理衡量的质量方面)。
附录:另一种思考质量的方式是从熵的角度。熵是系统从有序状态恢复到无序状态的趋势。任何曾经在现实世界中从事过中大型软件项目的人都会意识到代码库的质量随着时间的推移而趋于下降的程度。业务压力通常会导致专注于新功能的更改(除非质量本身是主要卖点,例如在航空电子软件中),以及由于回归问题和从质量和维护角度来看不适合的“穿鞋”功能而导致的质量下降。那么,我们可以测量软件的熵吗?如果是这样,又是如何做到的呢?
发布于 2011-07-24 03:01:24
至少对于.NET代码而言,NDepend将为我们提供迄今为止最好的软件质量度量标准。他们有82种不同的代码metrics。这就是你要找的东西吗?如果您是一名.NET程序员,您可能会发现这篇关于非常流行/大型开源项目的NDepend分析的blog post很有趣。
https://stackoverflow.com/questions/6802320
复制相似问题