软件质量管理.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件质量管理.doc》由会员分享,可在线阅读,更多相关《软件质量管理.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 9 章章 软件质量管理软件质量管理.2 9.1 软件的质量属性和质量要素软件的质量属性和质量要素.2 9.2 商业目标决定质量目标商业目标决定质量目标.3 9.3 质量保证能够保证质量吗质量保证能够保证质量吗.4 9.4 质量人员的状况质量人员的状况.6 9.4.1 郁闷的质量人员.6 9.4.2 路在何方.7 9.4.3 赞美诗.8 9.5 全面软件质量管理全面软件质量管理.9 9.5.1 模型.9 9.5.2 质量人员的职责.10 9.5.3 制定质量计划.11 9.5.4 技术评审.13 9.5.5 软件测试.16 9.5.6 过程检查.16 9.5.7 缺陷跟踪工具.17 9.6
2、 小结小结.19 第第 9 章章 软件质量管理软件质量管理 软件质量管理是充满争论的话题。被人们奉为软件质量管理圣经的 CMM 和 ISO9001 似 乎并不奏效,现实和理想之间的差距太大。 本章树立一个重要的理念:商业目标决定质量目标。提高软件质量的最终目的是为了赢 利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是“质量越高越好” , 而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。 经典软件工程教科书以及 CMM 和 ISO9001 总是抛开商业目标谈质量管理,本末倒置, 纸上谈兵,误导了大量读者,所以质量管理才变得那么艰辛。本章给出了一套实用主义的 “全面
3、软件质量管理”方法。 质量人员在全面软件质量管理中发挥重要作用,本章探讨了质量人员的工作状况,给他 们一些声援,并提出了改善工作状况的建议。 9.1 软件的质量属性和质量要素软件的质量属性和质量要素 在讲述软件质量管理方法之前,我们首先要搞清楚什么是软件质量。 词典对质量的定义是: 典型的或本质的特征; 事物固有的或区别于其他事物的特 征或本质; 优良或出色的程度。 CMM 对质量的定义是: 一个系统、组件或过程符合特定需求的程度; 一个系统、 组件或过程符合客户或用户的要求或期望的程度。 上述定义很抽象,人们看了准会一脸迷惘。就让我们用“人的健康”来类比解释软件质 量吧。 古时候人们以为长得
4、结实、饭量大就是健康,这显然是不科学的。现代人总是通过考察 多方面的生理因素来判断是否健康,如测量身高、体重、心跳、血压、血液、体温等。如果 上述因素都合格,那么表明这人是健康的。如果某个因素不合格,则表明此人在某个方面不 健康,医生会对症下药。 通过类比,我们这样理解软件质量: 软软件件质质量是量是许许多多质质量属性的量属性的综综合体合体现现,各种,各种质质量属性反映了量属性反映了软软件件质质量的方方面面。人量的方方面面。人们们通通 过过改善改善软软件的各种件的各种质质量属性,从而提高量属性,从而提高软软件的整体件的整体质质量(否量(否则则无从下手)。无从下手)。 软件的质量属性很多,如正确
5、性、精确性,健壮性、可靠性、容错性、性能、易用性、 安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性、灵活性等。表 9- 1 是常见质量属性的描述,先让读者对软件质量属性有个初步的了解。 质量属性描述 正确性正确性是指软件按照需求正确执行任务的能力。 “正确性”的语义涵盖了“精确性” 。 正确性无疑是第一重要的软件质量属性。 健壮性健壮性是指在异常情况下,软件能够正常运行的能力。正确性与健壮性的区别是: 前者描述软件在需求范围之内的行为,而后者描述软件在需求范围之外的行为。健 壮性有两层含义:一是容错能力,二是恢复能力。 可靠性可靠性是一个与时间相关的属性,指的是在一定环境下,
6、在一定的时间段内,程序 不出现故障的概率,因此是一个统计量,通常用平均无故障时间来衡量。软件可靠 性问题通常是由于设计中没有料到的异常和测试中没有暴露的代码缺陷引起的。 性能性能通常是指软件的“时间空间”效率,而不仅是指软件的运行速度。人们总希 望软件的运行速度高些,并且占用资源少些。 易用性易用性是指用户使用软件的容易程度。软件的易用性要让用户来评价。 清晰性清晰意味着工作成果易读、易理解,开发人员只有在自己思路清晰的时候才可能写 出让别人易读、易理解的程序和文档。 安全性安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。一般地, 如果黑客为非法入侵花费的代价(考虑时间、费用
7、、风险等因素)高于得到的好处, 那么这样的系统就可以认为是安全的。 可扩展性可扩展性反映了软件适应“变化”的能力。在软件开发过程中, “变化”是司空见惯 的事情,如需求、设计的变化,算法的改进、程序的变化等。可扩展性是系统设计 阶段重点考虑的质量属性。 兼容性兼容性是指两个或两个以上的软件相互交换信息的能力。兼容性的商业规则是:弱 者设法与强者兼容,否则无容身之地;强者应当避免被兼容,否则市场将被瓜分。 可移植性软件的可移植性指的是软件不经修改或稍加修改就可以运行于不同软硬件环境 (CPU、OS 和编译器)的能力,主要体现为代码的可移植性。 表 9-1 常见质量属性的描述 什么是软件质量要素?
8、它是指: (1)从技术角度讲,对软件整体质量影响最大的那些质量属性才是质量要素; (2)从商业角度讲,客户最关心的、能成为卖点的质量属性才是质量要素。 对于一个特定的软件而言,我们首先判断什么是质量要素,才能给出提高质量的具体措 施,而不是一股脑地想把所有的质量属性都做好,否则不仅做不好,还可能得不偿失。 如果某些如果某些质质量属性并不能量属性并不能产产生生显显著的著的经济经济效益,我效益,我们们可以忽略它可以忽略它们们,把精力用在,把精力用在对经济对经济效效 益益贡贡献最大的献最大的质质量要素上。量要素上。简简而言之,只有而言之,只有质质量要素才量要素才值值得开得开发发人人员员下功夫去改善。
9、下功夫去改善。 9.2 商业目标决定质量目标商业目标决定质量目标 大凡软件工程教科书为了强调质量的重要性,总是要举一些历史上发生过的重大软件质 量事故,例如航天飞机爆炸、核电站失事、爱国者导弹发生故障等等。这些事故的确不是危 言耸听,给人们敲响了质量的警钟。 学术界总是喜欢宣扬质量至上的理念,而忽视企业的商业利益,将质量目标凌驾于商业 目标之上。我不能评判这种现象是好还是坏,但是的确误导了大量读者。许多软件人员都有 “质量越高越好”的观念,这是被教科书灌输的,而不是他自己领悟出来的。 质量的最高境界是什么?是尽善尽美,即“零缺陷” 。 我曾在著作高质量程序设计指南C+/C 语言中大肆宣扬了高质
10、量程序设计的理 念,力求使 C+程序达到“零缺陷”的质量目标。尽管此书得到了许多程序员的赞同,但是 我经过反思之后改变了质量观念,我要着重指出的是: 重重视软视软件件质质量是量是应该应该的,但是的,但是“质质量越高越好量越高越好”并不是普适的真理。只有极少数并不是普适的真理。只有极少数软软件件应该应该追追 求求“零缺陷零缺陷”, ,对绝对绝大多数大多数软软件而言,商件而言,商业业目目标标决定了决定了质质量目量目标标,而不,而不该该把把质质量目量目标标凌凌驾驾于商于商业业 目目标标之上。之上。 航空航天等系统对质量要求极高,任何缺陷都有可能导致机毁人亡,所以人们不惜一切 代价去消除缺陷。在发射航
11、天器之前,只要发现任何异常,就会立即取消发射指令,直到异 常被消除为止。前苏联做得最过分,许多重大武器系统的负责人都签了生死状,系统研制成 功则获得英雄勋章,失败则被枪毙。在这种压力下没有人敢对质量有一丝松懈。 上述严格系统毕竟是少数,绝大多数普通软件的缺陷并不会造成机毁人亡这样的重大损 失,否则没有人敢从事软件开发了。在日常工作中,我们接触过的软件几乎都是有缺陷的, 即便是软件业老大 Microsoft,它的软件产品也经常出错甚至导致死机,人们骂几句后还会照 样使用有缺陷的软件。 企业的根本目标是为了获取尽可能多的利润,而不是生产完美无缺的产品。如果企业销 售出去的软件的质量比较差,轻则挨骂
12、,重则被退货甚至被索赔,因此为了提高用户对产品 的满意度,企业必须提高产品的质量。但是企业不可能为了追求完美的质量而不惜一切代价, 当企业为提高质量所付出的代价超过销售收益时,这个产品已经没有商业价值了,还不如不 开发。 企业必须权衡质量、效率和成本,产品质量太低了或者太高了,都不利于企业获取利润。 企业理想的质量目标不是“零缺陷”,而是恰好让广大用户满意,并且将提高质量所付出的代价 控制在预算之内。 9.3 质量保证能够保证质量吗质量保证能够保证质量吗 质量保证(Quality Assurance, QA)是 CMM 和 ISO9001 最为推崇的改善软件质量的方法。 基于我亲身实践和调查研
13、究,我敢冒天下之大不讳说一句:质质量保量保证证并不能保并不能保证质证质量,它是量,它是 个美个美丽丽的的谎谎言。言。 CMM 对软件质量保证是这样描述的: 软件质量保证的目的是为管理者提供有关软件过程和产品的适当的可视性。它包括评审 和审核软件产品及其活动,以验证其是否遵守既定的规程和标准,并向有关负责人汇报评审和 审核的结果。 简而言之,质量保证活动就是检查软件项目的“工作过程和工作成果”是否符合既定的 规范。如此简单的活动为什么被冠以“质量保证”这等份量的术语呢? 没有历史典故,经我考究,猜想是源于一个天真的假设: 过程质量与产品质量存在某种程度的因果关系,通常“好的过程”产生“好的产品”
14、,而“差 的过程”将产生“差的产品”。假设企业已经制定了软件过程规范,如果质量保证人员发现某些 项目的“工作过程以及工作成果”不符合既定的规范,那么马上可以断定产品存在缺陷。反之, 如果质量保证人员没有发现不符合既定规范的东西,那么也可以断定产品是合格的。 基于上述假设,质量保证人员即使不是技术专家,他也能够客观地检查和监控产品的质 量。这是质量保证方法吸引人的一面。 但是符合既定规范的东西并不意味着质量一定合格,仅靠规范无法识别出产品中可能存 在的大量缺陷。例如,即使程序员们都按照统一的编程规范来编写程序,但是编程新手的代 码可能错误百出,而高手的代码则无可挑剔,可是质量保证这种方法根本无法
15、识别新手和高 手的差距。质量保证的技术含量太低了,只能检查出肤浅的缺陷,不能对付有技术难度的缺 陷。所以单独的“质量保证”其实并不能“保证质量” 。 有个软件公司过了 CMM3 级,其质量保证人员给我发了一个 email: 我很迷茫,很想找一个人聊聊,希望你能给我点主意,化解我心中的谜团。 昨天我们公司拿到了 CMM3 的证书,但是我一点都高兴不起来。公司宣称,我们的软件质 量大大提高了,但是我却没有信心。我们的过程执行得很好,但是我觉得并没有在很大程度上 改善产品的质量。 今天还有一个项目经理跟我诉苦:前一阶段大家都忙于执行过程,但是他的产品质量令人 很不满意,尤其是测试做的很不到位。我是这
16、个项目的 SQA,所以我很理解他,但是我帮不上 他的忙。因为他们的过程执行得很好,这个项目可是通过 CMM3 级正式评估了的。 当然,执行 CMM 有不少好处,比如文档全面完整了,项目管理的可视性提高了。但是对 于我们公司而言,它并没有在根本上提高我们公司的软件能力。 比如概要设计,开发人员根本就不知道用来干吗的,怎么能指望他们写出高质量的概要设 计说明书出来。而在做技术评审的时候,他们很少能找出逻辑性的错误,只能发现一些诸如错 别字之类的小错误。我们几乎每一个配置项都要经过评审,但是大部分评审都只能发现一些无 关痛痒的问题。 公司已经通过 CMM3 级了,我认为过程执行得很好了,可是软件质量
17、仍然比较差。这是怎 么回事啊,你觉得原因在哪里? 这个 email 很有代表性,它反映了一个共性问题:公司按照公司按照 CMM3 级的要求执行,而且级的要求执行,而且 质量人员也认为执行过程符合既定的规范,但是软件产品的质量仍然低下质量人员也认为执行过程符合既定的规范,但是软件产品的质量仍然低下。 所以我说“质量保证并不能保证质量”,这句话一点都不过分。质量保证对于保证质量质量保证对于保证质量 而言只是必要的手段,而不是充分的手段。而言只是必要的手段,而不是充分的手段。质量保证这个术语名不副实,含义模糊,我强烈 建议将“质量保证”改名为“过程检查”,免得误导国内企业。 那么怎么才能保证软件的质
18、量呢?请阅读本章第 5 节“全面软件质量管理”。 9.4 质量人员的状况质量人员的状况 9.4.1 郁闷的质量人员郁闷的质量人员 由于工作关系,我和不少软件机构的质量人员打过交道。我觉得有必要反映一下质量人 员的状况,给他们一些声援。 接上个 email,那位质量人员继续向我诉说: 我现在觉得很郁闷,CMM 评估前还有目标,评估完了冷静下来却觉得效果很差,很没劲。 项目经理向我诉苦,他们过程执行的很好,但是对产品质量很不满意,我却无能为力,我这个 QA 还有什么用处啊!所以我现在干活没有动力,因为不能产生效益,做再多的工作也觉得是 白干。而且我现在手头有 5 个项目要跟踪,还不包括一些整理培训
19、记录的杂活,我觉得自己连 工人也不如。我有一些很好的想法却无处发挥,所以我很迷茫,很矛盾地考虑去留问题。 类似的 email 我大概收到十来个。 在汉语字典里找不到“郁闷”这个词,它是现代人发明的。郁闷的滋味各色各样,只有 正在郁闷的人感受最真切。我发现在软件职业里,质量人员是最郁闷的一族。郁闷的共同特 征有: (1)在执行质量保证活动时,经常受别人的气,真是吃力不讨好。 (2)如果项目取得成功,主要功劳都被项目主管霸占了,领导们至多会给质量人员一些口 头上的感谢。领导们嘴上重视产品的质量,但是内心并不重视质量人员。 (3)质量人员没有实质性的权力,没有成就感,但是却对质量负有最多的责任。 (
20、4)待遇一般,看不到升迁的机会,没有盼头,要么成为打杂的,要么另寻出路。 在企业里,职位是有高低之分的,但是人人都是平等的。郁闷的滋味是很不好受的,为 啥老是让质量人员郁闷呢,这显然很不公平。我曾经做过伤害质量人员的事情,现在良心发 现,在这里道个歉,并声援他们。 两年前,我在一个软件事业部负责推广软件工程和 CMM。公司领导比较重视,给我 6 个全职人员,有充足的资金,声势浩大,那时我比较自负,很少采用协商的方式解决纠纷。 公司有专门的质量部门,定期到各事业部检查质量。由于我们事业部采用的是 CMM,而质 量部门采用的是 ISO9000 标准,我不懂他的,他不懂我的,所以产生了纠纷。事业部的
21、各级 领导都有销售压力,用他们的话说是:没有时间陪质量部门的人“玩” ,大家都有“对付” 而不是“配合”质量部门的心态。 有一次质量部门要检查某个重点项目的文档,偏偏这个项目是保密的,一方要检查一方 要保密,双方弄僵了。在事业部内部开会的时候,这个重点项目的负责人大发脾气说:我最 烦那些人,看么看不懂,还老是来检查,别说项目是保密的,就是不保密的我也不给看。大 家火得很热烈,我就火上加油给质量部门发了 email,大致意思是“你们搞 ISO9000 的人不 懂软件工程,不懂 CMM,不懂得软件开发却老是来检查软件项目,对本事业部只有干扰而 没有帮助” ,email 言词激烈。我把 email
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 质量管理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内