软件质量经济学
上QQ阅读APP看书,第一时间看更新

2.8 歪曲软件经济学分析的三大问题

软件是制造出来的产品,因此软件项目应当使用制造经济学的基本方法来分析。150多年来,生产率的标准经济学定义是:

单位劳动力或费用所生产的商品或服务。”

经济学界对质量有多个定义,但是支持制造经济学研究的可行的软件质量定义是:

没有导致应用程序完全停止或产生不准确和不可靠结果的缺陷。”

当然,质量的很多美学方面可能会被考虑,但是美学不在制造经济学范畴之内。一方面,和出色的美感相比,虽然缺乏美感可能会降低销售收入,但是并不会影响软件的制造成本。另一方面,缺陷不仅会增加生产成本也会增长工期,因此它在制造经济学的标准下是一个恰当的研究课题。

遗憾的是,50多年来软件在经济学理解方面一直滞后。有3个主要原因来解释为什么直到2010年软件经济学的研究状况都很不理想,研究充满了错误和错误的假设。实际上,可以用“失职”来解释其中一部分错误。

以下就是这3个歪曲软件经济学(和软件质量经济学)认识的关键问题。

1)软件成本和资源数据“泄漏”和遗漏了软件项目中几乎50%的实际工作量。泄漏导致了生产率看上去比实际的要高。泄漏的部分原因是过度关注于编码,而没有足够留心甚至更加昂贵的非编码成本驱动因子(如需求、设计和业务分析)。出于经济目的,软件项目度量应当使用标准的项目活动分类学,以确保没有重要的成本驱动因子由于错误而被遗漏。

2)传统的LOC(代码行数)度量方法没有标准的定义。物理代码行和逻辑代码语句之间的差异可超过1000%,但两者在被交换使用。任何这两种LOC度量方法都只能用于编码,且只能选用其一。其他的主要成本驱动因子(如需求、设计、业务分析、架构和许多其他事务等)在使用LOC度量方法时都是不可见的。更糟的是,LOC度量方法对高级语言不利,让低级语言看上去比它们实际上要好得多。当研究设计的语言超过一种时,这个问题是如此严重,以至于LOC度量方法应当被归类为“失职”。

3)广泛引用的“单位缺陷成本”度量方法实际上不利于质量,bug最多的应用程序反而得到了最低的单位缺陷成本值。问题在于忽略了固定成本。经常提起的格言“发布后bug修复成本是设计时修复成本的100倍”就是基于一个忽略了固定成本的不严密分析。由于固定成本的存在,下面的规则是适用的:“单位缺陷成本总是在发现缺陷最多的地方最低”。这是为什么前端缺陷总是比后台缺陷廉价。更糟的是,单位缺陷成本度量方法过度关注缺陷修复,却忽略了高质量在缩短工期和降低成本方面更大的经济优势。

要理解软件质量经济学,有必要理解软件经济学本身。而要理解软件经济学,有必要理解由上述3个问题所引起的经济学曲解。