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

第1章 定义软件质量和经济价值

1.1 引言

本书讨论两个多年来一直模棱两可、很难讲明白的主题:软件质量和经济价值。

正如前言中所提到的,模棱两可的原因是存在很多不同的观点,每种观点对这两个术语的解释都不相同。比如,软件质量的含义对客户来说和对开发人员来说就是不同的。经济价值的含义对厂商来说和对消费者来说也是不一样的。对厂商来说,收益是价值的关键因素,而对于消费者来说,工作特性才是首要的价值。这些会在本书后续章节加以讨论。

通过研究广泛的观点并从每个观点中提取其要点,作者希望能给出可行的、相对比较明确的定义。

本书中所说的软件质量,远远超出了功能性质量(除了可用性和可靠的性能外,客户可能会作出反应的这种事)。质量当然也包括这些方面,但可以进一步扩展到非功能性质量(软件对其应该做的事做得有多好)和结构化质量(随着业务需求因业务条件的变化而变化,软件持续满足业务需求的能力有多好)。

软件质量为什么重要

在工业化国家,人们从6岁甚至更早就开始使用计算机。而在美国,16岁的年轻人中将近60%有计算机和软件使用知识。某些技术高超的黑客被捕时只有16岁。

根据美国人口普查局的估计,2010年美国人口约为309800135人。每天使用计算机进行工作或娱乐,或者两者兼而有之的人数占总人口的30%。也就是说,大约有92940040个美国人每天都会使用计算机。

大约65%的美国人通过各种方式使用嵌入式软件,如智能手机、数码相机、电子表、汽车制动系统和引擎控制装置、家用电器和娱乐设备。很多人没有意识到嵌入式软件在控制这些设备,但事实就是这样。换句话说,大约有201370087个美国人拥有并使用含有嵌入式软件的设备。

几乎100%的美国人将个人数据存储在各种各样的在线数据库中,这些数据库可能由美国人口调查局、美国国家税务局、美国州政府、市政府、银行、保险公司、信用卡公司以及信用评级公司来维护。

再来看一下商业方面。来自多方面的数据(如《福布斯》、Manta、《商业周刊》、美国商务部劳工统计局和其他来源)显示,美国有大约22553779家公司(截至2010年年底)。这些公司中约有65%在企业运营、零售、结算和其他用途中使用计算机和软件,也就是有约14659956家美国公司在使用计算机和软件。(企业软件的使用范围从基本的电子制表软件到整个企业资源规划(ERP)包,还有数以百计的其他应用程序。)

基于来自Manta网站的数据,在美国部署的软件是由约77186家软件公司提供的,另外还有10000家美国公司生产带有嵌入式软件的设备。大量的嵌入式软件和设备公司已经转移到了中国大陆、中国台湾、日本、印度及其他海外国家和地区。向海外迁移的一个例外是军事装备和武器系统中用到的嵌入式软件,出于安全原因生产商依然趋向于留在美国。

美国军事部门和国防部(the Department of Defense,DoD)拥有并部署的软件比历史上任何其他组织都多。事实上,美国国防部拥有并部署的软件很可能比其他所有国家的军事组织加起来都多。现在美国整个防区的指挥控制、后勤保障和武器系统的实际操作都依赖于软件。美国的国防系统是高度计算机化的,因此软件质量是美国国防战略中的关键组成部分。

我们甚至没有意识到自己淹没在软件的海洋中,这些软件操作着我们的大部分生产设备,管理着几乎所有公民的档案,并且运行在我们的大多数汽车、家电和娱乐设备上。我们的运输系统、医疗系统和政府运作都依赖于计算机和软件,因此也就依赖于高的软件质量水平。

软件是人类历史上使用最为广泛的产品之一,但它和人类历史上任何别的产品相比,也有着最高的故障率,而这主要归咎于其低劣的质量。

基于作者对其客户们的观察以及他在担任专家证人期间的观察,规模在10000个功能点内的应用程序的取消率约为31%。这些被取消的项目的平均成本大约是35000000美元。相比之下,同样规模在10000个功能点内,顺利完成且具有高质量水平的项目的成本仅仅约为20000000美元。

当由外包供应商开发的项目被取消,并且客户控告违约时,诉讼中原告的平均成本约为5000000美元,被告约为7000000美元。如果被告败诉,那么其损失赔偿金最高能达到25000000美元。而且,因为大多数美国法院会追诉间接损失赔偿,所以被告的实际损失可能还要大得多。

在作者的那些涉及外包业务的客户中,约有5%的合同在法院以违约的方式结束。原告的索赔包括彻底的失败、交付的软件不可用,或者交付的软件有太多的缺陷以至于使用软件的坏处超过了好处。

截至2011年,在美国软件应用程序的每个功能点的平均构建成本约为1000美元,五年的平均维护和支持成本约为1000美元:每个功能点的成本共计2000美元。对于有效地结合使用了缺陷预防和缺陷清除活动,从而达到高质量等级的项目,其每个功能点平均开发成本只有大约700美元,维护支持成本降至500美元:每个功能点共计1200美元。

从另一个角度看,美国目前大约有24000000人从事软件工程工作,这里考虑了软件工程师以及相关的职位(如系统分析师)。在任意一天,由于较差的质量控制,这些工作人员中大概有1000000人会花一整天的时间寻找和修复bug(并且在不经意间,在这个过程中又会引入新的bug)。

因此,所有这些统计都证明这样一个事实,表现为缺陷预防的更好的软件质量控制和更有效的缺陷清除,二者能够将约720000名软件人员解放出来,去做更有成效的工作而不是修复bug,这样很容易地就能降低美国大约50%的软件开发和维护成本。

本书稍后也会提到,由高质量而节省的成本是和应用程序规模成正比的。随着软件项目规模的增大,高质量水平所节省的成本也会增加。表1-1给出了对应于低质量、平均质量和高质量软件应用程序的一般开发成本。

和这三个质量水平相关的技术和方法会在本章后续部分讨论和说明,这也是大型软件项目风险如此高的原因。简单地说,“高质量”列包括有效的缺陷预防、有效的测试前缺陷清除(如审查和静态分析),以及和其他列相比更加有效的测试。

软件质量很重要的另外一个主要原因在于,低质量会以不愉快的方式影响到每个人,每次出现错误的计费时,每次算错缴税额度时,每次因为错误理由导致信用评级改变时,软件质量差都是问题的一部分。

2010年年初,很多计算机纷纷关闭,包括医院在内的许多企业被迫中断营业,这都是因为迈克菲(MacAfee)反病毒应用程序错误地把微软Windows的部分程序识别成病毒并阻止加载它们导致的。

根据2010年7月25日Computerworld杂志的报道,英国石油公司(BP)爆炸并沉没的钻井平台在最终的灾难发生前一个月内曾有频繁且严重的计算机问题。这些问题妨碍了对大量的数据进行分析,而这些分析有可能会及时警告操作员关闭抽油作业。

如果你的汽车制动系统不能正常运行,如果家电意外故障,或者一家医院出现医疗事故,较差的软件质量很可能是问题的一部分。

如果一个航班延误超过两个小时,或者大面积停电影响到整个区域如新英格兰,同样,较差的软件质量很可能是问题的一部分。

截至2011年,软件已经成为如此基础的商品,因此从考虑普通美国公民拥有并使用了多少软件开始研究是很有用的。表1-2展示了与正常生活相关的典型的软件量。

表1-2中的数据来自网络资源,以及构建各种应用程序的客户提供的私有数据。

不是每个人都有这些电器和设备,但大约一半的人有。很多人所拥有的甚至比表1-2列出的还多,比如拥有多辆汽车、多部手机和很多电器。软件质量很重要,因为截至2011年软件是几乎所有复杂机器的主要运行部件。

软件质量重要的另外一个原因是很多人需要高质量的软件应对日常工作。表1-3展示了部分职位(包括知识型工作)典型的软件使用模式,它是通过观察、与各行各业的从业者讨论,以及和软件提供商的共同研究得出的。

从表1-3中可以看出,现代社会中所有知识型工作者都大量依赖计算机和软件来完成工作。因此,这些人非常依赖于软件的高质量水平。每次出现计算机故障或者软件故障时,很多知识型工作者就不得不停止手头的工作,直到故障得以修复。当然,在当今世界电力故障也能导致停工。

本书的一位作者曾经是一起软件违约诉讼案件中的专家证人。当他在波士顿作证时发生了电力故障,导致法庭速记员不能做文字记录。结果,四位律师、一位速记员和两位专家证人等了大约两个小时才能继续进行作证。断电期间我们都按正常比例拿到了工资。我们如此依赖于计算机和软件,以至于某些器件不可用时就得停止工作。

因飓风和自然灾害导致停电后也发生了类似的情况。许多零售店无法记录销售信息,其中一些一直停业,虽然既有店员,也有潜在的客户。如果计算机和软件不能工作,很多企业就没法再运营。

软件和计算机在现代商业和政府运作中的应用如此深入,让全球经济处于严重的风险之中。军事策划者们都知道,大气中的核爆炸产生的电磁脉冲(EMP)能摧毁晶体管和电子电路。它们也能让汽油这样的液体燃料爆炸,或者引爆储存的武器。

通过设计,可以将这些“电子炸弹”在足够高的地方引爆,从而避免人员伤亡,但是它们又能对雷达、发电机、电视、计算机等电子设备造成重大破坏。

截至2011年,大多数主要国家的军火库中都已拥有了电子炸弹。CBS新闻报道称,第二次伊拉克战争中,一个或者多个电子炸弹切断了巴格达的电力供应,但并没有造成建筑物损坏或者人员伤亡。这可能也是战后恢复巴格达的电力如此之困难的原因之一。

软件质量很重要的最后一个原因是,很多政府机构和公司在他们的电脑里存放着我们的个人信息。因此,在今天,质量和安全都是至关紧要的问题。

表1-4展示了各种保存着我们的个人信息的机构,以及在这些机构中工作并有权限访问这些数据的可能人数。而这些数据包括我们的财务状况、社保账号、医疗记录、生日、职业、家庭情况、收入,以及许许多多的其他私人信息。

看到保存着至关重要的数据的政府机构和公司的数目,以及对这些数据拥有读取权限的人员数目,就难怪未来五年有15%的美国公民的身份信息可能会被盗了。

一份国会报告显示,美国网络攻击事件由2008年的43000起增加到2009年的80000多起。在本书写作时,很可能有超过10000名美国黑客正在试图盗取信用卡和财务信息。计算机、网络和智能手机都存在相当大的风险中。安全漏洞和质量差紧密相关,并且很多攻击是基于已知的质量缺陷的。

因为计算机和软件是当今用于工业和政府部门运作的主要工具,所以软件质量和软件安全是当今世界最重要的话题之一。事实上,质量和安全的重要性在未来十年内会不断增加。

从经济学的角度来讲,更高的软件质量水平能同时缩短开发周期,减少开发和维护成本,提高客户满意度,提高团队士气,以及改进软件工程职业的状态。