你不知道
很难客观地衡量软件质量。很难,没有解决方案。我不想在这个答案中涉足是否可以找到解决方案的问题,而只是指出为什么定义一个解决方案真的很难。
按现状推理
正如Kilian Foth所指出的那样,如果有一种简单的方法来衡量“优质”软件,那么我们所有人都会使用它,并且每个人都会要求它。
在某些项目中,管理人员决定实施某些指标。有时它起作用,有时却没有。我不知道有任何重大关联。特别是关键的系统软件(例如飞机,汽车等)对“确保”软件质量有很多度量要求-我不知道有任何研究表明这些要求实际上会带来更高的质量,并且我对相反。
通过反情报推理
Kilian也已经暗示过,更普遍的说法是“可以并将会使用每个度量”。
衡量指标是什么意思?对于开发人员而言,这是一个有趣的游戏:您可以确保指标值看起来确实不错,同时还能做得很烂。
假设您根据LOC测量缺陷。我该怎么玩?简单-只需添加更多代码!编写愚蠢的代码,导致超过100行无法执行操作,并且每个LOC的缺陷数量突然减少。最重要的是:您实际上是通过这种方式降低了软件质量。
滥用工具的缺点,将其定义扩展到最大,发明了全新的方法。.基本上,开发人员是非常聪明的人,并且如果您的团队中只有一个开发人员具有很有趣的指标,那么您的指标将是可疑的。
这并不是说指标总是不好的-团队对这些指标的态度至关重要。特别是,这意味着对于任何分包商/第三方供应商关系,它都无法正常工作。
定位错误的原因
您要衡量的是软件质量。您要衡量的是一个或多个指标。
在您衡量的内容与您认为会告诉您的内容之间存在差距。这个差距甚至很大。
它始终在我们周围的所有企业中发生。是否曾根据KPI(关键绩效指标)做出过决策?这是同样的问题-您想要一家公司做得很好,但是您需要衡量其他事情。
通过量化推理
指标可以测量。这是我们完全与他们打交道的唯一原因。但是,软件质量超出了这些可衡量的实体的范围,并且有很多难以量化的方面:源代码的可读性如何?您的设计有多可扩展性?新团队成员入职有多难?等等等
仅通过度量标准来判断软件质量,而对您无法量化的质量部分视而不见,肯定是行不通的。
编辑:
摘要
我要指出的是,以上全部内容都是根据指标客观地判断软件的优劣。这意味着,它没有说明您是否以及何时应应用指标。
实际上,这是一个单向的含义:错误的指标意味着错误的代码。单向意味着错误代码不能保证错误的度量标准,也不能保证良好的度量标准可以保证好的代码。另一方面,这本身意味着您可以应用度量标准来判断软件-当您牢记这一含义时。
您对软件A进行了度量,结果表明度量标准确实很差。这样就可以确定代码质量不好。您对软件B进行了测量,并且度量标准还可以,那么您对代码质量一无所知。当实际上只是“代码良好=>指标良好”时,不要愚弄“标准良好=代码良好”。
从本质上讲,您可以使用指标来发现质量问题,而不是质量本身。