在软件产品中可以测量各种类型的质量,例如,目的(例如最终用途)的适用性,可维护性,效率。其中一些在某种程度上是主观的或特定于领域的(例如,良好的GUI设计原则可能因文化而异,或取决于使用情况,请考虑军事还是消费者使用)。
我感兴趣的是与类型的网络(或图形)及其相互关联性的更深层次的质量形式,也就是说,每种类型所指的是什么类型,是否存在与适当类型有关的清晰可识别的互连性集群。分层体系结构,或者相反,存在大量的类型引用“整体”(“整体”代码)。同样,每种类型和/或方法的大小(例如,以Java字节代码或.Net IL的数量来衡量)也应表明某些大型复杂算法已实现为单片代码块,而不是分解为更易于管理/维护的位置。大块。
基于这种思想的分析可能能够计算至少是质量代理的度量。我怀疑高质量和低质量之间的确切阈值/决策点是主观的,例如,由于可维护性是指人类程序员的可维护性,因此功能分解必须与人的思维方式兼容。因此,我想知道是否存在一个数学上纯净的软件质量定义,可以在所有可能的情况下超越所有可能的软件。
我还想知道这是否是一个危险的想法,即如果客观的质量代理变得流行,那么业务压力将导致开发人员以牺牲整体质量(质量的那些方面未由代理衡量)为代价来追求这些指标。
关于质量的另一种思考方法是从熵的角度。熵是系统从有序状态转变为无序状态的趋势。任何曾经在现实世界中,中型到大型软件项目中工作过的人都将欣赏代码库质量趋于随时间下降的程度。业务压力通常会导致针对新功能的更改(除非质量本身是主要卖点,例如在航空电子软件中),否则质量会因回归问题和“擦鞋”功能而变得不那么适合质量和维护的角度。那么,我们可以衡量软件的熵吗?如果是这样,怎么办?