【作者】于波,姜艳编著
【ISBN】978-7-121-07420-2
【出版社】电子工业出版社
【出版日期】2008年11月
【宣传语】
国内第一本与软件质量相关的指导书。
奉献作者多年来在软件开发管理实践中总结出来的一套系统经验。
【内容简介】
本书从过程管理角度,分析了影响软件质量的相关因素,分享了可行易操作的实施与管理方法。本书涉及软件缺陷分类、预防、发现、清除和管理方面内容,结合多个耐人寻味的小故事,浅显易懂地揭示了开发中面临的各种影响软件质量的问题。同时,结合软件开发以及管理实践,给出了简单、实用的模板和例子,有助于提高软件开发、项目管理和测试水平,从而达到提高开发产品质量的目的。
本书系统性、实用性和可读性较强,文中编制、搜集、列举的模板及数据对软件公司日常开发、过程改进、CMM/CMMI评估等有很强的指导意义和实用价值。
这是一本与软件开发质量相关的指导书,也是一本多年来在软件开发管理实践中总结出来的一套系统经验的书。本书适合于开发管理人员、项目管理人员、开发人员及测试人员等任何对过程管理、软件开发和缺陷预防、清除、管理等各种实践感兴趣的人员阅读,也适合希望通过CMMI评估提高整体开发能力的公司和个人作为参考。同时,还可以作为高等院校计算机软件工程课程的参考教材使用。
【序】
当今软件质量日益受到人们的高度关注。其原因有以下几方面:
首先,近年来软件逐渐成为人们社会经济活动和日常生活不可缺少的元素,所有计算机应用领域对软件质量都提出了全方位的要求,包括功能、性能、方便灵活、稳定可靠以及安全等,特别是在一些关键领域。其次,我们正面临着软件质量问题的严重挑战,包括软件质量问题引发的系统事故屡见不鲜;解决好软件质量问题存在着一些实际困难,这不仅因为软件及相关系统日益庞大和复杂,而且开发过程和软件产品不可见,需求又往往易变、多变。再者,软件测试技术至今仍不能理想地清除隐蔽的所有缺陷。
我们已经认识到软件质量问题无法只凭技术手段得以解决,重视开发的管理,加强软件过程,特别是加强对软件缺陷的管理,是取得高质量产品的必由之路。这就需要在大量的软件实践中总结一切有益的经验和教训,让软件人员有所了解,进而体会其内涵和实质,并且在工作中贯彻。
于波长期从事软件开发和质量管理工作,积累了丰富的软件质量管理经验,他曾在著名软件工程专家周伯生教授指导下,负责组织和推动所在企业的软件过程改进工作,取得了显著的效果,特别是他把学习和掌握的软件质量管理知识与自己的管理工作实践结合起来,做了进一步的分析和总结,在此基础上编写的这本专著较为全面、系统,书中除了阐明软件缺陷及其发现、预防外,还涉及软件变更及配置管理、同行评审、软件测试及质量保证等重要问题,具有前瞻性的内容体现在软件度量等相关章节。所有这些都是当前软件企业经常遇到而又十分棘手的重要问题。
在此,我谨向从事软件管理与软件开发工作的同行们以及学习软件工程的高校学生积极推荐此书。我相信,认真地阅读它,结合自己的工作深入地思考其中的一些问题,一定会令你受益匪浅。
中国软件协会过程改进分会常务会长
郑人杰
清华大学教授
2008年10月
【前言】
故事发生在2001年初,周一早晨,新上任的质量保证部经理召集部门的全体人员开会。当时该部门有8个测试人员和5个文档、3个美工。对于一个刚刚成立的拥有员工70多人的软件公司来说,该部门人员占比达23%之多,其投入的规模和同行小公司相比不算小。与会过程中,就软件质量问题,大家各抒己见。
经理说:“公司自从转向软件开发以来,开发工作开展很顺利,我们质量保证部主要工作是测试,尽快、尽多、尽早地发现程序中的错误,保证开发出来的产品质量,其责任重大。”
测试工程师甲说:“缺陷就是Bug,程序员开发完产品后,咱们测试人员尽可能多地发现其中的Bug,遗留在产品中的Bug就会越少,产品质量就会越高。”
测试工程师乙说:“只要我们发现了所有的Bug,让程序员改正过来,我们就可以放心地对用户说,我测过的软件你放心,绝对不会再有质量问题。”
…….
会议在经理的主持与分配任务中告一段落。
上述对软件产品和软件产品质量的说法,从事软件研发的人可能都听到过。相隔7年之后,回首往事,仔细思考一下,其中类似说法有多少是完全正确的呢?软件质量真的像他们说的那样吗?
在20世纪90年代中期,几次著名的分析都得到了相同的具有普遍性的结论,即软件项目的成功率非常低。著名的观点如,软件开发仍然具有高度的不可预知性,只有大约10%的软件项目在最初估计的预算和进度内成功地交付;与其说管理规范是技术进步,还不如说是成功和失败的鉴别器;软件废品和返工的程度是不成熟过程的象征。
目前,随着软件工程技术的不断发展,人们已经逐渐认识到,软件质量是多方面的活动协力构建起来的,由软件开发整个过程的质量所决定,质量问题不是仅仅通过测试就能发现并解决的。大量实践证明,软件产品与传统产品有着不同的特征,如不可见性、灵活性、复杂性等,所以软件缺陷的预防自始至终是重要的,广义的软件开发质量保证活动,更多地强调软件缺陷的预防、及时发现与剔除。
因此,不像建筑工程那样精确地衡量、计算出每一元钱在软件产品中是如何花费的,软件开发过程的控制和软件质量也要远比其他工程制品的管理复杂得多。
那么,什么是“软件产品质量”呢?
Crosby将质量定义为“符合需求”,而Juran认为是“适于使用”。质量的这两个定义相互关联,已经被人们广泛采纳和使用。
“符合需求”隐含着需求必须明确陈述出来,使之不被误解。在开发和生产过程中,不断进行度量以确定对这些需求的符合性。不符合需求就被视为缺陷。
“适于使用”更多地考虑了客户需求和预期的作用。由于不同的客户会以不同的方式使用产品,产品必须具有适合使用的多种要素,这些要素的每一个都包含有质量特性(适于使用的参数)。最重要的两个质量特性参数就是设计质量和符合性质量。
由于生产者坚持将“符合需求”以及将客户满意度作为质量的最终验证标准,质量的定义实际上分成了两级:狭义的质量(“小q”),即内在产品质量,包括了缺陷率和可靠性;广义的质量(“大Q”),则包括了产品质量、过程质量和客户满意度。
总之,软件产品质量一般都指利用适当的资源为用户提供能满足要求的产品,达到用户满意。软件质量评价要素主要包括:① 功能性;② 可靠性;③ 易用性;④ 效率;⑤ 维护性;⑥ 可移植性;⑦ 正确性;⑧ 健壮性;⑨ 完整性;⑩ 安全性; 可用性; 可理解性; 可测试性; 可再用性等。
软件质量始于开发人员本身,如果任何程序模块都存在大量缺陷的话,就很难去测试且需要花很多时间才可能集成到较大的系统中,甚至还会给用户带来很多麻烦。不良质量也会导致进度问题,有缺陷的产品交付期会较长。经过测算,大多数的软件专业人员在开发和最终测试期间,花费近一半的时间来测试并修复他们的产品。
当写一些小程序时,大多数人都会有很高的生产率;而一旦开发较大的程序时,生产率会急剧下降。虽然开发较大的系统还涉及一些额外的架构和设计工作,但大多数增加的工作量还是由缺陷引起的。随着程序的增大,平均花费在发现和修复每个缺陷上的时间会以指数级增加。然而,如果我们能够自始至终地编写高质量的模块化程序,就会生产出更好的产品并且提高生产率和组织效率。
因此,为了保证软件产品质量,需要进行以下一系列的工作。
(1)定义质量需求,明确本产品的质量目标。要明确影响本产品质量的缺陷可能有哪些,如何避免。
(2)定义质量管理过程,采用软件工程的方法管理开发过程,可通过审查/评审/测试/验证等手段来贯彻落实“早预防、早检查、早控制”的保证质量策略。
(3)建立一个能尽早面对风险的迭代式的生命周期过程。
(4)定义每个过程成果的质量要求/质量标准,加强软件的测试。
(5)签订合同,确定客户方相关负责人、责任以及权利,并加强和客户的沟通,了解客户真实的要求和潜在需求。
(6)将过程建立在构架优先方法的基础上,同时设计方法要转向基于构件的开发。
(7)编码过程中,要让员工以最佳的状态投入到工作中,最好不要加班。这是因为员工状态不佳时,编写的代码低级错误较多,虽然不致命,但浪费很多测试和调试的时间,所以加班得不偿失。
(8)测试时要由有经验的高级程序员对业务逻辑部分进行白盒测试。
(9)建立一个经济上具有伸缩性的可配置的过程,做好需求管理、配置管理及变更管理工作。
(10)建立一个规范的软件工程过程,包括有效的缺陷管理、全面的计划和及时、准确的项目跟踪及报告。
本书主要内容
全书共分为四个部分:
第一部分——包括缺陷综述、需求开发与管理、配置与变更管理3章。介绍了什么是缺陷,着重阐述了影响软件质量、造成缺陷的各种因素。
第二部分——包括同行评审、软件测试、QA发现的不符合问题的处理3章。描述了发现和清除缺陷的7种手段中最有效的3种手段。
第三部分——包括软件度量和缺陷管理2章。阐述了缺陷的度量、分析、控制以及预防,给出了具体操作的例子。
第四部分——包括经验教训库、思考和附录。
本书的总体逻辑体现在下图中,通过缺陷预防、缺陷发现、缺陷管理和数据度量4个大的方面进行论述,其中的虚线部分是本书中没有描述的内容。
软件质量保证范围
本书将从软件缺陷的产生、预防、清除、管理等方面,理论结合实践地进行阐述,希望能给大家在软件开发和管理上提供借鉴。
本书内容是相关理论与实践的结晶,是我们利用业余时间总结CMMI过程改进中方法与经验基础上编写的,也是真实项目与产品研发过程实施的一些心得。当然,书中的内容远不止于此,适度增加了对相关经验的升华与前瞻,大大提高了知识性、丰富性、实用性、可读性。
本书编者
本书编写过程中分工如下:
于波、姜艳负责总体构架和篇章的布局设计、主编,最终统筹编写完成。于波、姜艳、王西京、宋莉莉、田广志等几人共同编写、校对。

软件质量管理实践1.jpg