您好,欢迎访问三七文档
全面软件质量管理—剖析软件质量的内涵—内建高质量而非修补质量Page2目录目录1.1.引言引言2.2.软件质量属性和质量要素软件质量属性和质量要素3.3.商业目标决定质量目标商业目标决定质量目标4.4.质量保证能够保证质量吗质量保证能够保证质量吗5.5.质量人员的状况质量人员的状况6.6.全面软件质量管理:模型全面软件质量管理:模型7.7.全面软件质量管理:制定质量计划全面软件质量管理:制定质量计划8.8.全面软件质量管理:技术评审全面软件质量管理:技术评审9.9.全面软件质量管理:软件测试全面软件质量管理:软件测试10.10.全面软件质量管理:过程检查全面软件质量管理:过程检查11.11.全面软件质量管理:缺陷跟踪工具全面软件质量管理:缺陷跟踪工具Page31.1.引言引言––软件质量管理是充满争论的话题。被人们奉为软件质量管理圣经的软件质量管理是充满争论的话题。被人们奉为软件质量管理圣经的CMMCMM和和ISO9001ISO9001似乎并不奏效,现实和理想之间的差距太大。似乎并不奏效,现实和理想之间的差距太大。––经典软件工程教科书以及经典软件工程教科书以及CMMCMM和和ISO9001ISO9001总是抛开商业目标谈质量总是抛开商业目标谈质量管理,本末倒置,纸上谈兵,误导了大量读者,所以质量管理才变得管理,本末倒置,纸上谈兵,误导了大量读者,所以质量管理才变得那么艰辛。世界上还没有万能的软件质量管理圣经,我们不要迷信那么艰辛。世界上还没有万能的软件质量管理圣经,我们不要迷信CMMCMM和和ISO9000ISO9000。。––要多向有实战经验的同行专家请教,但是不要轻信要多向有实战经验的同行专家请教,但是不要轻信““纸上谈兵纸上谈兵””的专的专家。家。––本文给出了一套实用主义的本文给出了一套实用主义的““全面软件质量管理全面软件质量管理””方法。方法。––重要的理念:重要的理念:商业目标决定质量目标商业目标决定质量目标。。提高软件质量的最终目的是提高软件质量的最终目的是为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是言,并不是““质量越高越好质量越高越好””,而是恰好让广大用户满意,并且将提高,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内质量所付出的代价控制在预算之内。。Page42.2.软件质量属性和质量要素软件质量属性和质量要素2.12.1如何描述质量如何描述质量––词典对质量的定义是:①词典对质量的定义是:①典型的或本质的特征;②典型的或本质的特征;②事物固有的或事物固有的或区别于其他事物的特征或本质;③区别于其他事物的特征或本质;③优良或出色的程度。优良或出色的程度。––CMMCMM对质量的定义是:①对质量的定义是:①一个系统、组件或过程符合特定需求的程一个系统、组件或过程符合特定需求的程度;②度;②一个系统、组件或过程符合客户或用户的要求或期望的程一个系统、组件或过程符合客户或用户的要求或期望的程度。度。––上述定义很抽象,人们看了准会一脸迷惘。就让我们用上述定义很抽象,人们看了准会一脸迷惘。就让我们用““人的健康人的健康””来类比解释软件质量。来类比解释软件质量。古时候人们以为长得结实、饭量大就是健康,这显然是不科学的。现代古时候人们以为长得结实、饭量大就是健康,这显然是不科学的。现代人总是通过考察多方面的生理因素来判断是否健康,如测量身高、体人总是通过考察多方面的生理因素来判断是否健康,如测量身高、体重、心跳、血压、血液、体温等。如果上述因素都合格,那么表明这人重、心跳、血压、血液、体温等。如果上述因素都合格,那么表明这人是健康的。如果某个因素不合格,则表明此人在某个方面不健康,医生是健康的。如果某个因素不合格,则表明此人在某个方面不健康,医生会对症下药。会对症下药。Page52.2.软件质量属性和质量要素软件质量属性和质量要素––通过类比,我们这样理解软件质量:通过类比,我们这样理解软件质量:软件质量是许多质量属性的软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面。人们通过改综合体现,各种质量属性反映了软件质量的方方面面。人们通过改善软件的各种质量属性,从而提高软件的整体质量(否则无从下善软件的各种质量属性,从而提高软件的整体质量(否则无从下手)。手)。––软件的质量属性很多,如正确性、精确性,健壮性、可靠性、容错软件的质量属性很多,如正确性、精确性,健壮性、可靠性、容错性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性、灵活性等。植性、可测试性、可维护性、灵活性等。––上述这些质量属性之间上述这些质量属性之间““你中有我,我中有他你中有我,我中有他””,非常缠绵。如果开,非常缠绵。如果开发人员每天要面对那么多的质量属性咬文嚼字,不久就会迂腐得像发人员每天要面对那么多的质量属性咬文嚼字,不久就会迂腐得像孔乙己,因此我们有必要对质量属性做些分类和整合。质量属性可孔乙己,因此我们有必要对质量属性做些分类和整合。质量属性可分为两大类:分为两大类:““功能性功能性””与与““非功能性非功能性””,后者有时也称为,后者有时也称为““能力能力””((CapabilityCapability)。)。Page62.2.软件质量属性和质量要素软件质量属性和质量要素2.22.2十大软件质量因素十大软件质量因素––功能性质量因素:正确性,健壮性,可靠性功能性质量因素:正确性,健壮性,可靠性––非功能性质量因素:性能,易用性,清晰性,安全性,可扩展性,非功能性质量因素:性能,易用性,清晰性,安全性,可扩展性,兼容性,可移植性兼容性,可移植性––为什么是为什么是““十大十大””质量因素质量因素☺☺––逐一解释逐一解释““十大十大””质量因素(参见《高质量程序设计指南质量因素(参见《高质量程序设计指南————C++/CC++/C语言》)语言》)Page72.2.软件质量属性和质量要素软件质量属性和质量要素2.32.3软件质量要素软件质量要素––什么是软件质量要素?什么是软件质量要素?((11)从技术角度讲,对软件整体质量影响最大的那些质量属性才是质)从技术角度讲,对软件整体质量影响最大的那些质量属性才是质量要素;量要素;((22)从商业角度讲,客户最关心的、能成为卖点的质量属性才是质量)从商业角度讲,客户最关心的、能成为卖点的质量属性才是质量要素。要素。––对于一个特定的软件而言,我们首先判断什么是质量要素,才能给对于一个特定的软件而言,我们首先判断什么是质量要素,才能给出提高质量的具体措施,而不是一股脑地想把所有的质量属性都做出提高质量的具体措施,而不是一股脑地想把所有的质量属性都做好,否则不仅做不好,还可能得不偿失。好,否则不仅做不好,还可能得不偿失。––如果某些质量属性并不能产生显著的经济效益,我们可以忽略它如果某些质量属性并不能产生显著的经济效益,我们可以忽略它们,把精力用在对经济效益贡献最大的质量要素上。简而言之,只们,把精力用在对经济效益贡献最大的质量要素上。简而言之,只有质量要素才值得开发人员下功夫去改善。有质量要素才值得开发人员下功夫去改善。Page82.2.软件质量属性和质量要素软件质量属性和质量要素2.42.4正确性正确性––正确性是指软件按照需求正确执行任务的能力。正确性是指软件按照需求正确执行任务的能力。““正确性正确性””的语义涵的语义涵盖了盖了““精确性精确性””。。––正确性无疑是第一重要的软件质量属性。正确性无疑是第一重要的软件质量属性。––技术评审和测试的第一关都是检查工作成果的正确性。技术评审和测试的第一关都是检查工作成果的正确性。––机器不会主动欺骗人,软件运行出错通常都是人造成的,所以不要机器不会主动欺骗人,软件运行出错通常都是人造成的,所以不要找借口埋怨机器有毛病。找借口埋怨机器有毛病。Page92.2.软件质量属性和质量要素软件质量属性和质量要素2.52.5健壮性健壮性––健壮性是指在异常情况下,软件能够正常运行的能力。健壮性是指在异常情况下,软件能够正常运行的能力。––正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。范围之外的行为。––开发者往往把异常情况错当成正常情况而不作处理,结果降低了健开发者往往把异常情况错当成正常情况而不作处理,结果降低了健壮性。壮性。––用户才不管正确性与健壮性的区别,反正软件出了差错都是开发方用户才不管正确性与健壮性的区别,反正软件出了差错都是开发方的错。所以提高软件的健壮性也是开发者的义务。的错。所以提高软件的健壮性也是开发者的义务。––健壮性有两层含义:一是容错能力,二是恢复能力。健壮性有两层含义:一是容错能力,二是恢复能力。从语义上理解,恢复不及容错那么健壮。从语义上理解,恢复不及容错那么健壮。UnixUnix容错能力很强,可惜不好用。容错能力很强,可惜不好用。WindowsWindows容错能力较差,但是恢复能力很好,而且很好用。占了容错能力较差,但是恢复能力很好,而且很好用。占了90%90%的的操作系统市场。操作系统市场。Page102.2.软件质量属性和质量要素软件质量属性和质量要素2.62.6可靠性可靠性––可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。概率。––可靠性本来是硬件领域的术语。比如某个电子设备在刚开始工作时可靠性本来是硬件领域的术语。比如某个电子设备在刚开始工作时挺好的,但由于器件在工作中其物理性质会发生变化(如发热),慢挺好的,但由于器件在工作中其物理性质会发生变化(如发热),慢慢地系统的功能或性能就会失常。所以一个从设计到生产完全正确的慢地系统的功能或性能就会失常。所以一个从设计到生产完全正确的硬件系统,在工作中未必就是可靠的。硬件系统,在工作中未必就是可靠的。––软件在运行时不会发生物理性质的变化,人们常以为如果软件的某软件在运行时不会发生物理性质的变化,人们常以为如果软件的某个功能是正确的,那么它一辈子都是正确的。可是我们无法对软件进个功能是正确的,那么它一辈子都是正确的。可是我们无法对软件进行彻底地测试,无法根除软件中潜在的错误。平时软件运行得好好行彻底地测试,无法根除软件中潜在的错误。平时软件运行得好好的,说不准哪一天就不正常了,如有千年等一回的的,说不准哪一天就不正常了,如有千年等一回的““千年虫千年虫””问题,司问题,司空见惯的空见惯的““内存泄露内存泄露””、、““误差累积误差累积””问题等等。问题等等。Page112.2.软件质量属性和质量要素软件质量属性和质量要素––软件可靠性分析通常采用统计方法,遗憾的是目前可供第一线开发软件可靠性分析通常采用统计方法,遗憾的是目前可供第一线开发人员使用的成果很少见,大多数文章限于理论研究。口语中的可靠人员使用的成果很少见,大多数文章限于理论研究。口语中的可靠性含义宽泛,几乎囊括了正确性、健壮性。只要人们发现系统有毛性含义宽泛,几乎囊括了正确性、健壮性。只要人们发现系统有毛病,便归结为可靠性差。从专业角度讲,这种说法是确切的。病,便归结为可靠性差。从专业角度讲,这种说法是确切的。––时隐时现的错误一般都属于可靠性问题,纠错的代价很高。例如当时隐时现的错误一般都属于可靠性问题,纠错的代价很高。例如当维护人员十万火急地赶到现场时,错误消失了;等维护人员回家维护人员十万火急地赶到现场时,错误消失了;等维护人员回家后,错误又出现了。后,错误又出现了。……––软件可靠性问题主要是在编程时候埋下的祸害(很难测试出来),软件可靠性问题主要是在编程时候埋下的祸害(很难测试出来),应当提倡规范化程序设计,预防可靠性祸害。应当提倡规范化程序设计,预防可靠性祸害。Page122.2.软件质量属性和质量要素软件质量属
本文标题:全面软件质量管理
链接地址:https://www.777doc.com/doc-431514 .html