软件质量管理实践:软件缺陷预防、清除、管理实用方法 (china-pub 首发)
基本信息
- 作者: 于波 姜艳 [作译者介绍]
- 丛书名: 测试实践丛书
- 出版社:电子工业出版社
- ISBN:9787121074202
- 上架时间:2008-11-7
- 出版日期:2008 年11月
- 开本:16开
- 页码:431
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 软件质量、软件测试及维护
编辑推荐
国内第一本与软件质量相关的指导书。.
奉献作者多年来在软件开发管理实践中总结出来的一套系统经验。...
内容简介回到顶部↑
本书从过程管理角度,分析了影响软件质量的相关因素,分享了可行易操作的实施与管理方法。本书涉及软件缺陷分类、预防、发现、清除和管理方面内容,结合多个耐人寻味的小故事,浅显易懂地揭示了开发中面临的各种影响软件质量的问题。同时,结合软件开发以及管理实践,给出了简单、实用的模板和例子,有助于提高软件开发、项目管理和测试水平,从而达到提高开发产品质量的目的。
本书系统性、实用性和可读性较强,文中编制、搜集、列举的模板及数据对软件公司日常开发、过程改进、cmm/cmmi评估等有很强的指导意义和实用价值。
这是一本与软件开发质量相关的指导书,也是一本多年来在软件开发管理实践中总结出来的一套系统经验的书。本书适合于开发管理人员、项目管理人员、开发人员及测试人员等任何对过程管理、软件开发和缺陷预防、清除、管理等各种实践感兴趣的人员阅读,也适合希望通过cmmi评估提高整体开发能力的公司和个人作为参考。同时,还可以作为高等院校计算机软件工程课程的参考教材使用。
本书系统性、实用性和可读性较强,文中编制、搜集、列举的模板及数据对软件公司日常开发、过程改进、cmm/cmmi评估等有很强的指导意义和实用价值。
这是一本与软件开发质量相关的指导书,也是一本多年来在软件开发管理实践中总结出来的一套系统经验的书。本书适合于开发管理人员、项目管理人员、开发人员及测试人员等任何对过程管理、软件开发和缺陷预防、清除、管理等各种实践感兴趣的人员阅读,也适合希望通过cmmi评估提高整体开发能力的公司和个人作为参考。同时,还可以作为高等院校计算机软件工程课程的参考教材使用。
作译者回到顶部↑
本书提供作译者介绍
于波,高级工程师、硕士、PMP,拥有丰富的软件开发、项目规划和项目管理经验。曾在外企作为高级咨询顾问、系统分析员实施多个大型MIS和ERP项目,主持商业智能类项目的分析、开发和实施。现任某上市软件研究院院长,应用中间件平台的技术负责人之一,组织开发了核心系统,并率领团队通过CMM L2和CMMI L3的正式评估,曾作为项目经理主持工业和信息化部电子基金项目。.
姜艳,工程师、计算机硕士,研究方向为图形图像处理。曾任一汽集团某公司技术发展部部长,从事生产有关的技术管理、软件开发和培训工作.. << 查看详细
姜艳,工程师、计算机硕士,研究方向为图形图像处理。曾任一汽集团某公司技术发展部部长,从事生产有关的技术管理、软件开发和培训工作.. << 查看详细
目录回到顶部↑
第1章 缺陷综述
1.1 软件缺陷定义
1.2 软件缺陷生命周期
1.3 缺陷信息
1.4 软件缺陷分类
1.4.1 缺陷类型
1.4.2 缺陷严重程度
1.4.3 缺陷优先级
1.4.4 缺陷状态
1.5 缺陷产生的原因
1.5.1 缺陷是谁“生产”的
1.5.2 缺陷来源
1.5.3 缺陷根源
1.6 缺陷预防
1.6.1 缺陷预防的目的
1.6.2 缺陷预防的目标
1.6.3 缺陷预防的策略
1.6.4 缺陷预防的活动
1.6.5 缺陷预防的验证
1.6.6 软件质量特性的提高
1.1 软件缺陷定义
1.2 软件缺陷生命周期
1.3 缺陷信息
1.4 软件缺陷分类
1.4.1 缺陷类型
1.4.2 缺陷严重程度
1.4.3 缺陷优先级
1.4.4 缺陷状态
1.5 缺陷产生的原因
1.5.1 缺陷是谁“生产”的
1.5.2 缺陷来源
1.5.3 缺陷根源
1.6 缺陷预防
1.6.1 缺陷预防的目的
1.6.2 缺陷预防的目标
1.6.3 缺陷预防的策略
1.6.4 缺陷预防的活动
1.6.5 缺陷预防的验证
1.6.6 软件质量特性的提高
前言回到顶部↑
故事发生在2001年初,周一早晨,新上任的质量保证部经理召集部门的全体人员开会。当时该部门有8个测试人员和5个文档、3个美工。对于一个刚刚成立的拥有员工70多人的软件公司来说,该部门人员占比达23%之多,其投入的规模和同行小公司相比不算小。与会过程中,就软件质量问题,大家各抒己见。.
经理说:“公司自从转向软件开发以来,开发工作开展很顺利,我们质量保证部主要工作是测试,尽快、尽多、尽早地发现程序中的错误,保证开发出来的产品质量,其责任重大。”
测试工程师甲说:“缺陷就是Bug,程序员开发完产品后,咱们测试人员尽可能多地发现其中的Bug,遗留在产品中的Bug就会越少,产品质量就会越高。”
测试工程师乙说:“只要我们发现了所有的Bug,让程序员改正过来,我们就可以放心地对用户说,我测过的软件你放心,绝对不会再有质量问题。”
…….
会议在经理的主持与分配任务中告一段落。
上述对软件产品和软件产品质量的说法,从事软件研发的人可能都听到过。相隔7年之后,回首往事,仔细思考一下,其中类似说法有多少是完全正确的呢?软件质量真的像他们说的那样吗?
在20世纪90年代中期,几次著名的分析都得到了相同的具有普遍性的结论,即软件项目的成功率非常低。著名的观点如,软件开发仍然具有高度的不可预知性,只有大约10%的软件项目在最初估计的预算和进度内成功地交付;与其说管理规范是技术进步,还不如说是成功和失败的鉴别器;软件废品和返工的程度是不成熟过程的象征。
目前,随着软件工程技术的不断发展,人们已经逐渐认识到,软件质量是多方面的活动协力构建起来的,由软件开发整个过程的质量所决定,质量问题不是仅仅通过测试就能发现并解决的。大量实践证明,软件产品与传统产品有着不同的特征,如不可见性、灵活性、复杂性等,所以软件缺陷的预防自始至终是重要的,广义的软件开发质量保证活动,更多地强调软件缺陷的预防、及时发现与剔除。
因此,不像建筑工程那样精确地衡量、计算出每一元钱在软件产品中是如何花费的,软件开发过程的控制和软件质量也要远比其他工程制品的管理复杂得多。
那么,什么是“软件产品质量”呢?
Crosby将质量定义为“符合需求”,而Juran认为是“适于使用”。质量的这两个定义相互关联,已经被人们广泛采纳和使用。
“符合需求”隐含着需求必须明确陈述出来,使之不被误解。在开发和生产过程中,不断进行度量以确定对这些需求的符合性。不符合需求就被视为缺陷。
“适于使用”更多地考虑了客户需求和预期的作用。由于不同的客户会以不同的方式使用产品,产品必须具有适合使用的多种要素,这些要素的每一个都包含有质量特性(适于使用的参数)。最重要的两个质量特性参数就是设计质量和符合性质量。
由于生产者坚持将“符合需求”以及将客户满意度作为质量的最终验证标准,质量的定义实际上分成了两级:狭义的质量(“小q”),即内在产品质量,包括了缺陷率和可靠性;广义的质量(“大Q”),则包括了产品质量、过程质量和客户满意度。
总之,软件产品质量一般都指利用适当的资源为用户提供能满足要求的产品,达到用户满意。软件质量评价要素主要包括:① 功能性;② 可靠性;③ 易用性;④ 效率;⑤ 维护性;⑥ 可移植性;⑦ 正确性;⑧ 健壮性;⑨ 完整性;⑩ 安全性; 可用性; 可理解性; 可测试性; 可再用性等。
软件质量始于开发人员本身,如果任何程序模块都存在大量缺陷的话,就很难去测试且需要花很多时间才可能集成到较大的系统中,甚至还会给用户带来很多麻烦。不良质量也会导致进度问题,有缺陷的产品交付期会较长。经过测算,大多数的软件专业人员在开发和最终测试期间,花费近一半的时间来测试并修复他们的产品。..
当写一些小程序时,大多数人都会有很高的生产率;而一旦开发较大的程序时,生产率会急剧下降。虽然开发较大的系统还涉及一些额外的架构和设计工作,但大多数增加的工作量还是由缺陷引起的。随着程序的增大,平均花费在发现和修复每个缺陷上的时间会以指数级增加。然而,如果我们能够自始至终地编写高质量的模块化程序,就会生产出更好的产品并且提高生产率和组织效率。
因此,为了保证软件产品质量,需要进行以下一系列的工作。
(1)定义质量需求,明确本产品的质量目标。要明确影响本产品质量的缺陷可能有哪些,如何避免。
经理说:“公司自从转向软件开发以来,开发工作开展很顺利,我们质量保证部主要工作是测试,尽快、尽多、尽早地发现程序中的错误,保证开发出来的产品质量,其责任重大。”
测试工程师甲说:“缺陷就是Bug,程序员开发完产品后,咱们测试人员尽可能多地发现其中的Bug,遗留在产品中的Bug就会越少,产品质量就会越高。”
测试工程师乙说:“只要我们发现了所有的Bug,让程序员改正过来,我们就可以放心地对用户说,我测过的软件你放心,绝对不会再有质量问题。”
…….
会议在经理的主持与分配任务中告一段落。
上述对软件产品和软件产品质量的说法,从事软件研发的人可能都听到过。相隔7年之后,回首往事,仔细思考一下,其中类似说法有多少是完全正确的呢?软件质量真的像他们说的那样吗?
在20世纪90年代中期,几次著名的分析都得到了相同的具有普遍性的结论,即软件项目的成功率非常低。著名的观点如,软件开发仍然具有高度的不可预知性,只有大约10%的软件项目在最初估计的预算和进度内成功地交付;与其说管理规范是技术进步,还不如说是成功和失败的鉴别器;软件废品和返工的程度是不成熟过程的象征。
目前,随着软件工程技术的不断发展,人们已经逐渐认识到,软件质量是多方面的活动协力构建起来的,由软件开发整个过程的质量所决定,质量问题不是仅仅通过测试就能发现并解决的。大量实践证明,软件产品与传统产品有着不同的特征,如不可见性、灵活性、复杂性等,所以软件缺陷的预防自始至终是重要的,广义的软件开发质量保证活动,更多地强调软件缺陷的预防、及时发现与剔除。
因此,不像建筑工程那样精确地衡量、计算出每一元钱在软件产品中是如何花费的,软件开发过程的控制和软件质量也要远比其他工程制品的管理复杂得多。
那么,什么是“软件产品质量”呢?
Crosby将质量定义为“符合需求”,而Juran认为是“适于使用”。质量的这两个定义相互关联,已经被人们广泛采纳和使用。
“符合需求”隐含着需求必须明确陈述出来,使之不被误解。在开发和生产过程中,不断进行度量以确定对这些需求的符合性。不符合需求就被视为缺陷。
“适于使用”更多地考虑了客户需求和预期的作用。由于不同的客户会以不同的方式使用产品,产品必须具有适合使用的多种要素,这些要素的每一个都包含有质量特性(适于使用的参数)。最重要的两个质量特性参数就是设计质量和符合性质量。
由于生产者坚持将“符合需求”以及将客户满意度作为质量的最终验证标准,质量的定义实际上分成了两级:狭义的质量(“小q”),即内在产品质量,包括了缺陷率和可靠性;广义的质量(“大Q”),则包括了产品质量、过程质量和客户满意度。
总之,软件产品质量一般都指利用适当的资源为用户提供能满足要求的产品,达到用户满意。软件质量评价要素主要包括:① 功能性;② 可靠性;③ 易用性;④ 效率;⑤ 维护性;⑥ 可移植性;⑦ 正确性;⑧ 健壮性;⑨ 完整性;⑩ 安全性; 可用性; 可理解性; 可测试性; 可再用性等。
软件质量始于开发人员本身,如果任何程序模块都存在大量缺陷的话,就很难去测试且需要花很多时间才可能集成到较大的系统中,甚至还会给用户带来很多麻烦。不良质量也会导致进度问题,有缺陷的产品交付期会较长。经过测算,大多数的软件专业人员在开发和最终测试期间,花费近一半的时间来测试并修复他们的产品。..
当写一些小程序时,大多数人都会有很高的生产率;而一旦开发较大的程序时,生产率会急剧下降。虽然开发较大的系统还涉及一些额外的架构和设计工作,但大多数增加的工作量还是由缺陷引起的。随着程序的增大,平均花费在发现和修复每个缺陷上的时间会以指数级增加。然而,如果我们能够自始至终地编写高质量的模块化程序,就会生产出更好的产品并且提高生产率和组织效率。
因此,为了保证软件产品质量,需要进行以下一系列的工作。
(1)定义质量需求,明确本产品的质量目标。要明确影响本产品质量的缺陷可能有哪些,如何避免。
序言回到顶部↑
当今软件质量日益受到人们的高度关注。其原因有以下几方面:.
首先,近年来软件逐渐成为人们社会经济活动和日常生活不可缺少的元素,所有计算机应用领域对软件质量都提出了全方位的要求,包括功能、性能、方便灵活、稳定可靠以及安全等,特别是在一些关键领域。其次,我们正面临着软件质量问题的严重挑战,包括软件质量问题引发的系统事故屡见不鲜;解决好软件质量问题存在着一些实际困难,这不仅因为软件及相关系统日益庞大和复杂,而且开发过程和软件产品不可见,需求又往往易变、多变。再者,软件测试技术至今仍不能理想地清除隐蔽的所有缺陷。
我们已经认识到软件质量问题无法只凭技术手段得以解决,重视开发的管理,加强软件过程,特别是加强对软件缺陷的管理,是取得高质量产品的必由之路。这就需要在大量的软件实践中总结一切有益的经验和教训,让软件人员有所了解,进而体会其内涵和实质,并且在工作中贯彻。..
于波长期从事软件开发和质量管理工作,积累了丰富的软件质量管理经验,他曾在著名软件工程专家周伯生教授指导下,负责组织和推动所在企业的软件过程改进工作,取得了显著的效果,特别是他把学习和掌握的软件质量管理知识与自己的管理工作实践结合起来,做了进一步的分析和总结,在此基础上编写的这本专著较为全面、系统,书中除了阐明软件缺陷及其发现、预防外,还涉及软件变更及配置管理、同行评审、软件测试及质量保证等重要问题,具有前瞻性的内容体现在软件度量等相关章节。所有这些都是当前软件企业经常遇到而又十分棘手的重要问题。
在此,我谨向从事软件管理与软件开发工作的同行们以及学习软件工程的高校学生积极推荐此书。我相信,认真地阅读它,结合自己的工作深入地思考其中的一些问题,一定会令你受益匪浅。
中国软件协会过程改进分会常务会长...
郑人杰
清华大学教授
2008年10月
首先,近年来软件逐渐成为人们社会经济活动和日常生活不可缺少的元素,所有计算机应用领域对软件质量都提出了全方位的要求,包括功能、性能、方便灵活、稳定可靠以及安全等,特别是在一些关键领域。其次,我们正面临着软件质量问题的严重挑战,包括软件质量问题引发的系统事故屡见不鲜;解决好软件质量问题存在着一些实际困难,这不仅因为软件及相关系统日益庞大和复杂,而且开发过程和软件产品不可见,需求又往往易变、多变。再者,软件测试技术至今仍不能理想地清除隐蔽的所有缺陷。
我们已经认识到软件质量问题无法只凭技术手段得以解决,重视开发的管理,加强软件过程,特别是加强对软件缺陷的管理,是取得高质量产品的必由之路。这就需要在大量的软件实践中总结一切有益的经验和教训,让软件人员有所了解,进而体会其内涵和实质,并且在工作中贯彻。..
于波长期从事软件开发和质量管理工作,积累了丰富的软件质量管理经验,他曾在著名软件工程专家周伯生教授指导下,负责组织和推动所在企业的软件过程改进工作,取得了显著的效果,特别是他把学习和掌握的软件质量管理知识与自己的管理工作实践结合起来,做了进一步的分析和总结,在此基础上编写的这本专著较为全面、系统,书中除了阐明软件缺陷及其发现、预防外,还涉及软件变更及配置管理、同行评审、软件测试及质量保证等重要问题,具有前瞻性的内容体现在软件度量等相关章节。所有这些都是当前软件企业经常遇到而又十分棘手的重要问题。
在此,我谨向从事软件管理与软件开发工作的同行们以及学习软件工程的高校学生积极推荐此书。我相信,认真地阅读它,结合自己的工作深入地思考其中的一些问题,一定会令你受益匪浅。
中国软件协会过程改进分会常务会长...
郑人杰
清华大学教授
2008年10月
书摘回到顶部↑
第1章 缺陷综述
1.6缺陷预防
《鹛冠子》世贤第十六中有“王独不闻魏文王之问扁鹊耶)曰:‘子昆弟三人其孰最善为医)’扁鹊曰:‘长兄最善,中兄次之,扁鹊最为下。’魏文侯曰:‘可得闻邪)’扁鹊曰:‘长兄于病视神,未有形而除之,故名不出于家。中兄治病,其在毫毛,故名不出于闾。若扁鹊者,镜血脉,投毒药,副肌肤,闲而名出闻于诸侯。’魏文侯曰:‘善。使管子行医术以扁鹊之道,曰桓公几能成其霸乎!’凡此者不病病,治之无名,使之无形,至功之成,其下谓之自然。”
这个故事对于我们讨论的缺陷发现主题是很有深意的。如果把软件中的缺陷作为疾病看待,那么必须“惩防并举、注重预防”,关键在于“预防”。预防是事前行为,不但能够最大限度地降低开销,提高软件产品的质量,而且也避免了最后发现问题时的大范围返工。从扁鹊三兄弟行医故事中,我们也充分认识到:“良医者,常治无病之病,故无病;圣人者,常治无患之患,故无患”(语出淮南子),软件缺陷的预防工作和事前工作与此同理,虽然起到了良好的经济效果,但是,这些都是扎扎实实、不显山露水的工作,把工作做在了平常,不那么张扬,也没有热闹的加班加点和返工的场面,名气就显现不出来,往往被埋没。
狭义的缺陷预防(Defect Prevention)是一种把统计过程控制(SPC)和过程管理整合在一起的管理策略。
本书中讨论的广义“缺陷预防”,是从需求开发与管理、配置管理以及变更管理等各个软件开发的关键过程进行预防和控制的,并采用有效复用、各种模式确保过程的有效和成果的合格。
……
1.6缺陷预防
《鹛冠子》世贤第十六中有“王独不闻魏文王之问扁鹊耶)曰:‘子昆弟三人其孰最善为医)’扁鹊曰:‘长兄最善,中兄次之,扁鹊最为下。’魏文侯曰:‘可得闻邪)’扁鹊曰:‘长兄于病视神,未有形而除之,故名不出于家。中兄治病,其在毫毛,故名不出于闾。若扁鹊者,镜血脉,投毒药,副肌肤,闲而名出闻于诸侯。’魏文侯曰:‘善。使管子行医术以扁鹊之道,曰桓公几能成其霸乎!’凡此者不病病,治之无名,使之无形,至功之成,其下谓之自然。”
这个故事对于我们讨论的缺陷发现主题是很有深意的。如果把软件中的缺陷作为疾病看待,那么必须“惩防并举、注重预防”,关键在于“预防”。预防是事前行为,不但能够最大限度地降低开销,提高软件产品的质量,而且也避免了最后发现问题时的大范围返工。从扁鹊三兄弟行医故事中,我们也充分认识到:“良医者,常治无病之病,故无病;圣人者,常治无患之患,故无患”(语出淮南子),软件缺陷的预防工作和事前工作与此同理,虽然起到了良好的经济效果,但是,这些都是扎扎实实、不显山露水的工作,把工作做在了平常,不那么张扬,也没有热闹的加班加点和返工的场面,名气就显现不出来,往往被埋没。
狭义的缺陷预防(Defect Prevention)是一种把统计过程控制(SPC)和过程管理整合在一起的管理策略。
本书中讨论的广义“缺陷预防”,是从需求开发与管理、配置管理以及变更管理等各个软件开发的关键过程进行预防和控制的,并采用有效复用、各种模式确保过程的有效和成果的合格。
……








点击看大图




加载中...

