本书从软件工程的实际出发,详细介绍了有关软件质量管理、控制、保障及度量的程序、方法和技术。考虑到软件可靠性是软件质量中最重要的因素,本书对软件可靠性模型及其应用、软件可靠性测试、软件可靠性数据收集和处理进行了深入的论述。本书是在广泛参考了国内外有关资料的基础上,结合作者多年来在软件工程、软件质量和软件可靠性方面的研究成果,特别是近年来作者在软件公司任职期间的体验,精心写成的。全书内容具有理论联系实际、系统及简洁等特点,在软件开发、使用和维护方面具有较强的工程应用价值。本书可作为软件项目管理人员、开发人员、系统分?鋈嗽奔叭砑房突У牟慰际椋部勺魑扑慊蛉砑こ套ㄒ档母吣昙堆⒀芯可慕滩幕虿慰际椤?随着计算机与因特网的普及和社会信息化进程的加快,计算机软件的地位已发生了巨大的变化,它已成为支撑社会正常运行和发展的重要基础设施。软件变得越来越复杂,人们对软件的要求也越来越高,特别是对软件的可靠性、易用性、应变性和兼容性等各方面都提出了很高的要求。软件的生产方式也发生了巨大的变化。开始时是手工业生产方式,软件的质量依赖于软件编制者个人的技艺和才智。后来,演变为工业化的规模生产,软件成为软件公司一批开发人员共同协作的产品。这时,软件产品的质量在很大程度上取决于软件公司实施的开发过程的优化程度和具体的管理水平。现在,又进一步扩展为软件生产的社会化。一个软件系统常常要由不同软件专业公司生产的软件构件产品集成而成。于是为保证软件的质量,又要求有相关的统一标准和协议,以及按照标准进行的测试和认证。软件质量的控制和管理技术是一门实践的技术,它是根据软件开发的大量实践经验积累而来的。这其中有很多成功的经验,也不乏惨痛的失败教训。坦诚地讲,我们国家软件产业发展较晚,目前真正能称得上是有一定规模的,具有大型自主软件开发能力的软件公司还不多,还缺乏这种规模化开发软件的实践经验。因而,人们往往对软件质量管理的重要性和必要性认识不足,理解不深,同时也缺乏相应的量化的实际数据。大家知道,只有在大量数据的基础上才能做到软件开发过程的真正的优化,而数据要靠长期实践的积累。洪伦耀教授和董云卫高级工程师联合编写的这本《软件质量工程》一书,全面、系统地介绍了国内外流行的软件开发过程中实施的质量管理、控制、度量和保障技术。其内容大都是根据他们多年来的实践经验,从国?谕饨闲隆⒔铣墒於冶冉鲜涤玫募际踔芯《吹摹1臼榈某霭娑杂谥傅嘉夜砑档穆蚣纳迫砑返闹柿浚俳夜砑档姆⒄箍隙ɑ崞鸬椒浅V匾淖饔谩M蔽乙财谕樗孀盼夜砑档男纬珊头⒄梗夜萍既嗽蹦茉谖铡⑾獾娜砑⒓际醯幕∩希ü陨泶罅咳砑⒌氖导欢系刈芙帷⑻岣吆痛葱拢徊轿夜砑⒓际醯姆⒄棺龀鲇τ械墓毕住?自从第一台计算机诞生以来,信息技术革命无疑成为当今世界最快的技术变革。今天,计算机的应用已渗透到了人类现代生活的各个方面,人们对它的依赖程度与日俱增,因计算机系统故障而引起危机的可能性也逐渐增大。同时,在计算机的发展与应用中,存在着严重的软/硬件不均衡发展的现象,软件的质量、性能、生产率及耗费等,都无法与硬件同步。随着人们对软件需求的日益增大,软件产品的功能复杂性和结构复杂性越来越高,因软件系统失效造成计算机系统失败和瘫痪的重大事故屡见不鲜。例如:(1)在美国宇航局的''''旅行者''''计划中,天王星探测器就是因为深度太空网络软件发送信息迟缓和能力衰竭而处于危险之中。(2)软/硬件干扰问题是使一些航天飞机经常推迟发射时间的主要原因。(3)在美国国防部某项工程中,事先设计好的先进程序无一可用,从而导致AFTI/F-16的首航时间耽搁了一年。关键软件系统的失败也影响了大量民用项目和科学工作。例如:如果不是数据分析程序由于''''越界溢出''''而隐藏了异常数据,南极上空的臭氧空洞本来可以更早引起科学界的注意。软件失效也可导致巨大的经济损失。例如:1990年1月15日,美国一通信中转系统新投入使用的软件发生了错误,导致主干线远程网大规模崩溃;1991年夏季,美国一系列局域电话网由于软件问题而中断。这些严重事故使?郧Ъ埔揽康缪豆驹擞滴竦墓舅鹗Я司薅钭式稹?出错的软件还会危及人们的生命安全。例如:(1)美国的Therac-25放射性治疗仪曾以其安全性著称于世,但有一次由于其软件出错而使其控制系统失灵,导致多名病人失去生命。(2)据专家们统计后指出,软件控制系统对飞行员在异常飞行期间发出的紧急查询反应不当,是发生飞行事故以致造成机毁人亡的主要原因。这一切表明:软件中哪怕是很微小的差错,都可能导致生产、生活和其他各项活动中的质量事故,如产品报废,商业停顿,甚至是人员伤亡。面对这样一些问题,在要求软件质量越来越高的情况下,应该怎么办呢?答案只有一个:因为软件产品是人类智力活动的产物,所以软件的质量问题,也只有用人类的智力活动来解决!本书就是考虑到目前人们对高质量软件的迫切需要而撰写的,它集中讨论了与软件产品质量密切相关的质量管理、质量控制、质量度量和质量保障等问题。本书的内容实际上就是人们为了解决软件的质量问题,在总结长期的开发实践经验的基础上逐渐形成的智力成果。另外,从软件产品在质量范畴内区别于硬件产品的特殊性来说,撰写本书还有如下的理由:(1)软件质量是在开发过程中构建(需求分析、设计、编码和集成等)人软件产品之中的,开发过程完成之后是加不进去的。(2)软件产品是由许多人通过集约式作业方式,在绞尽脑汁的智力活动中开发出来的,而人的思维活动是非常易变的,集约在一起的众多人的思维更难保持协调一致。(3)导致软件产品质量低下的差错和缺陷,是随着软件开发的进展而向后面阶段传播的。值得注意的是,这些差错和缺陷的危害程度,随着从它发生到被纠正的时间间隔的增加而成倍地增长。(4)通过智力活动开发出来的产品,它的质量也只有通过智力活动来确认和检验,而不能像硬件产品那样,可以用有关的测量仪器来检验。相应地,针对质量方面的上述特殊性,软件的质量管理、质量控制、质量度量和质量保障要解决的主要问题有:(1)如何建立必要的标准、规范、条例及程序,使开发人员和开发过程保持以下三个方面的一致性:横向的,人与人之间的一致性;纵向的,一个开发阶段与另一个开发阶段的一致性;产品(含阶段性产品)的输入与输出的一致性。(2)如何将一个软件产品的整个开发过程分解为若干个可实现并可管理的部分;对每个部分,应用相应的、有效的技术和方法,展开软件的开发活动并对其阶段性产品的质量进行验证和确认,保证其高质量;最终组合成整个软件产品,并验证和确认其质量是否达到要求。(3)如何尽可能地避免在开发中产生差错;如何尽可能多地检测出并纠正已经产生的差错;当差错不可避免地残留在软件中时,如何容差。(4)当差错不可避免地引入到软件中时,如何保证自它们引入时起,尽可能早地发现并纠正它们。(5)软件这个无形的智力产品,它的质量究竟如何定义,又如何度量。(6)如何控制软件的开发过程、开发资源和产品,使得产品质量、工期和费用实现最佳的折中。进行质量管理、质量控制、质量度量和质量保障的目的就在于:在开发过程中,在有限的资源限制下和规定的时间内,把软件产品的质量构建人软件产品之中。当读者在阅读这本书的时候,抓住上述问题,就可以更好地理解书中各章节的内容。同时,在读完了书中各章节之后,对上述问题也就会有更实质性的把握。本书作者洪伦耀教授,在软件可靠性和软件质量方面,有着近二十年的研究和教学经验;作者董云卫高级工程师,曾就职于西安协同软件股份有限公司、西安软件工程技术研究中心等单位,一直从事软件项目的组织、管理和软件的实际开发工作以及软件工程理论与应用的研究。2003年,本书的两位作者先后就职于国家863软件专业孵化器西安基地(西安软件工程技术研究中心),参加863计划相关课题的研究工作。西安软件工程技术研究中心是西安市科学技术局批准设立的独立的科学研究与技术开发机构。它围绕西安软件产业的发展和国家863软件专业孵化器的建设,专门从事技术开发及测试评估、质量咨询等软件工程技术服务。在此期间,课题组对软件质量管理、控制、度量以及软件质量保障的各种技术和方法的深入探讨,使作者长期积累的有关软件质量管理的研究与教学经验以及软件开发经验得到了系统升华,拓展了作者的视野,并使作者坚信:科学的软件质量管理、控制、度量和保障的方法和手段是可以形成一种面向软件产业发展的服务能力的,一旦这种能力与软件产业结合并广为产业界所接受,它将对软件产业的发展起到巨大的推动作用。这也就是作者写作本书的用意所在。本书是面向软件项目开发领导部门、管理机构、质量组织、开发人员和软件项目的购置者、使用者和维护者的工程实用性读物。同时,本书也面向培养上述人才的大专院校教师、高年级学生、研究生。因此,本书不追求冗长、复杂的理论叙述,而着重于''''做什么''''、''''为什么做''''、''''怎样做''''、''''结果是什么''''等这样一些实用性软件工程的内容。本书共分7章。第1章作为基础,叙述了软件与硬件之间的区别及质量、软件质量等一般性的概念,并叙述了造成软件质量低下的根源:软件中的差错。第2章、第3章和第4章分别介绍了软件质量管理、质量控制和质量度量。由于软件可靠性是软件质量中最重要的质量因素,因此第5章专门对软件可靠性、软件可靠性模型及其应用进行了专门的论述。由于上述各质量活动不能无序、无计划自动进行,而是要在强有力的监督和保障之下,落实到开发过程的每一个阶段和每一个环节,因此,第6章安排了这样的内容:软件质量保障。第7章对近期软件工程和软件可靠性研究的某些问题做了简单的提示。作者特别要感谢863计划计算机软硬件技术主题专家组和西安市科学技术局领导富有远见的支持;还要感谢西安软件工程技术研究中心楼文晓主任和西安协同软件股份有限公司前任总经理苏新雷先生,正是有了他们对软件质量在软件产品开发过程中及软件产业发展中重要地位的深层次理解,才使我们有机会尝试、应用和实践软件质量管理、控制、度量和保障的理论和方法;更要感谢郝克刚教授在写作过程中给予作者的指导,他还在百忙之中给本书撰写了序言。武汉大学软件工程研究所的徐仁佐教授,中国航天总公司204研,究所的宋晓秋(博士)研究员,空军工程大学的王兴亮教授以及西安软件工程技术研究中心、西安协同数码软件股份有限公司的同仁对本书的编写和出版给予了热情的关心、帮助和支持,在此一并表示感谢。参加本书编写、审校、资料收集和其他辅助工作的还有:凌惠娟、孙训峰、姬伟锋、王海滨、杜宏、安宣、李水清等。由于作者知识水平和工作经验有限,书中难免有错误和不当之处,敬请读者指正。