《研发企业管理——思想、方法、流程和工具》——1.9 论质量

本节书摘来自异步社区《研发企业管理——思想、方法、流程和工具》一书中的第1章,第1.9节,作者:林锐著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.9 论质量

研发企业管理——思想、方法、流程和工具
1.9.1 什么是产品质量
词典对质量的定义是:(1)典型的或本质的特征;(2)事物固有的或区别于其他事物的特征或本质;(3)优良或出色的程度。

软件能力成熟度模型(Capacity Maturity Model,CMM)对质量的定义是:(1)一个系统、组件或过程符合特定需求的程度;(2)一个系统、组件或过程符合客户或用户的要求或期望的程度。

上述定义很抽象,人们看了准会一脸迷惘。就让我们用“人的健康”来类比解释软件质量:

古时候人们以为长得结实、饭量大就是健康,这显然是不科学的。现代人总是通过考察多方面的生理指标来判断是否健康,如测量身高、体重、心跳、血压、血液和体温等。如果上述因素都合格,那么表明这人是健康的。如果某个指标不合格,则表明此人在某个方面不健康,医生会对症下药。

通过类比,我们这样理解产品质量:

产品质量是许多质量属性的综合体现,各种质量属性反映了产品质量的方方面面。人们通过改善产品的各种质量属性,从而提高产品的整体质量(否则无从下手)。

质量属性可分为两大类:

(1)产品专有的质量属性。例如手机产品的专有质量属性:通话质量、重量、体积、耗电量和样式等。

(2)软件公共质量属性。不管什么产品,只要有软件,就有软件公共质量属性,如正确性、健壮性、可靠性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性和灵活性等。

如表1-1所示是常见的十个软件公共质量属性,供读者了解。
screenshot

产品的质量因素可能非常多,我们还要学会识别质量要素(即重要的质量因素),具体如下:

(1)从商业角度讲,客户最关心的、能成为卖点的质量属性才是质量要素。

(2)从技术角度讲,对整体质量影响最大的那些质量属性才是质量要素。

对于任何一种商业产品,我们首先要识别质量要素,才能给出提高质量的有效建议。如果某些质量属性并不能产生显著的经济效益,那么要少花费精力,只要及格就行。要把精力用在对经济效益贡献最大的质量要素上,而不是一股脑地想把所有的质量属性都做好,否则不仅做不好,还可能得不偿失。

1.9.2 企业的质量观念
为了强调质量的重要性,但凡软件工程教科书总是要举一些历史上发生过的重大软件质量事故,如航天飞机爆炸、核电站失事、爱国者导弹发生故障等。

学术界喜欢宣扬质量至上的理念,而忽视企业的利益,将质量目标凌驾于企业利益之上,这种做法会误导大量读者。许多技术人员都有“质量越高越好”的观念,这种观念是被教科书灌输的。

质量的最高境界是什么?是尽善尽美,即零缺陷,可是哪个企业能够做到零缺陷?

我曾在2002年的著作《高质量程序设计指南——C++/C语言》中宣扬了高质量程序设计的理念,力求使C/C++程序达到零缺陷的质量目标。尽管此书得到了许多程序员的赞同,但是难以在企业中推行。我经过反思之后改变了质量观念:

重视软件质量是应该的,但并不是“质量越高越好”。只有极少数软件应该追求“零缺陷”,对于绝大多数软件而言,企业利益决定了质量目标,而不该把质量目标凌驾于企业利益之上。

航空航天系统对质量要求极高,任何缺陷都有可能导致机毁人亡,所以人们会不惜一切代价去消除缺陷。在发射航天器之前,只要发现任何异常,就会立即取消发射指令,直到异常被消除为止。在这种压力下没有人敢对质量有一丝松懈。

上述严格的系统毕竟是少数,世上绝大多数商业软件的缺陷并不会造成机毁人亡这样的重大损失,否则就没有人敢从事软件开发了。迄今为止,我认识的所有软件人员都没有因为软件缺陷而坐牢或被枪毙。

在日常工作中,我们接触过的软件几乎都是有缺陷的,即便是软件业老大Microsoft,它的软件产品也会出错甚至死机,人们埋怨几句后还会照样使用这样的软件。

如果企业销售出去的产品质量比较差,轻则挨骂,重则被退货甚至被索赔,因此为了提高用户对产品的满意度,企业必须提高产品的质量。但是企业不可能为了追求完美的质量而不惜一切代价,当企业为提高质量所付出的代价超过收入时,这个产品已经没有商业价值了,还不如不开发。

企业的主要目标是为了获取合理的利润,而不是生产完美无缺的产品。产品质量太低了或者太高了,都有可能不利于企业获取利润。企业理想的质量目标不是“零缺陷”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。

事实上,在合法经营的前提下,“质量高低”和“企业效益高低”有四种对应关系:

(1)质量高,效益高。

(2)质量低,效益低。

(3)质量高,效益低。

(4)质量低,效益高。

前两种符合人之常识,而后两种不符合人之常识(出乎意料之外),上述4种情况都普遍存在,详见本书第2章“企业管理中的经济学原理”。

1.9.3 全面质量管理模型
质量的死对头是缺陷,缺陷是混在产品中的人们不喜欢、不想要的东西,它对产品没有好处只有坏处。人们常说的Bug就是缺陷的形象比喻。

显然,缺陷越多质量越低,缺陷越少质量越高,提高产品质量的基本手段是消除产品中的缺陷。

让我们看看中国古代郎中治病的故事,受点启发。

在中国古代,有一家三兄弟全是郎中。其中老三知名度最高,二哥次之,大哥最低。人们好奇,问老三:“你们兄弟三人谁的医术最高?”

老三回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我成了全国名医。我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人都说二哥是好郎中。我大哥不外出治病,他深知人们生病的原因,所以能够预防家里人生病,他的医术只有我们家里才知道。”

上述故事里,郎中三兄弟是三种治病方式的代言人。相似地,提高产品质量也有三种方式。

1.老大治病方式
老大治病的方式最高明,如果人们能够预防生病,那么就用不着看医生了。提高产品质量最高明的手段是:在开发过程中有效地防止工作成果产生缺陷,将高质量内建于开发过程之中。主要措施是“不断地提高技术水平,不断地提高规范化水平”。

2.老二治病方式
即使一个人严守养生之道,身体状况良好,但总是会意外地生病的,生了病就要去看医生。老二治病的方式就是医院的模式,病人越早看病,就越早治好,治病的代价就越低。同理,在研发过程中,即使人们的技术水平很高,并且严格遵守规范,但是人非机器,总是会犯错误的,因此无法完全避免产生缺陷。那么怎么办呢?

当工作成果刚刚产生时马上进行质量检查,及时找出并消除工作成果中的缺陷。这种方式效率高、代价低,人们一般都能学会。最常用的方法是技术评审、测试和过程检查,已经被企业广泛采用并取得了成效。

3.老三治病方式
老三治病的方式代价最高,只能是不得已而为之。可在现实之中,大多数企业都采用老三的方式来对付质量问题。典型现象是:在产品交付之前,没有及时消除缺陷。当产品交付给用户后,用着用着就出错了,赶紧请开发者来补救。

根据上述事例和分析,我提炼出直观的“全面质量管理模型”,如图1-1所示。该模型的主要措施有:

(1)质量要素和目标分析。从商业利益和技术角度识别哪些质量属性是本产品(或项目)的质量要素,给出各个质量要素的恰当目标。这样相关人员可以把精力集中在改善质量要素上,既要使客户感到满意,又要使开发方承受得起。

(2)技术评审。通过同行专家对工作成果的评审讨论,尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量。技术评审可以在任何开发阶段执行,不必等到软件、硬件可以运行之际,越早消除缺陷就越能降低开发成本。开发人员能够及时地得到同行专家的帮助和指导,无疑会加深对工作成果的理解,更好地预防缺陷,这在一定程度上提高了开发生产率。

(3)测试与纠错。一旦开发完成某个模块,开发者要先进行自我测试,然后请测试员测试。若测试发现缺陷,开发者要及时纠错。

screenshot

(4)过程检查。也叫质量保证,实质就是检查项目的“工作过程和工作成果”是否符合既定的规范。符合规范的工作成果不见得就是高质量的,但是明显不符合规范的工作成果十有八九是不合格的。在执行过程检查的时候,如果发现了问题,应该记录在问题跟踪工具中,以便问题得到及时处理。

(5)缺陷(问题)跟踪。人们在技术评审、测试、过程检查时,可能发现不少缺陷(或问题),应当使用缺陷(问题)跟踪工具,便于相关人员及时处理缺陷,随时了解缺陷的状态变化。

(6)持续提升企业的技术水平和规范化水平。这是企业要长期坚持的内功,不要指望速成。内功打好了,无论什么项目(产品),都能够实现内建高质量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值