前言
自从美国AT&T Bell 实验室的 J D Musa 于1991年在美国得克萨斯州的奥斯汀市召开的第十三届国际软件工程会议(The 13th International Conference on Software Engineering)上正式提出软件可靠性工程(software reliability engineering)的概念,至今已过了十多年的时间。
当时,Musa 先生将软件可靠性工程仅限于“预计、测量、管理以软件为基础的系统的可靠性,以最大限度地满足用户需要的应用科学”的范畴。随着近十几年的软件可靠性工程的实践与发展,随着软件工程的进步,软件可靠性工程的范畴也在逐步地拓宽。软件可靠性工程发展到今天,伴随着软件开发的全过程,在软件生命周期的各个阶段,都发展出了一系列的技术和管理方法。纵观当今软件可靠性工程的实践,可以说,软件可靠性工程是与软件开发过程各阶段同步并行的,用于设计、保证、计量、管理软件可靠性目标的应用科学。由香港中文大学的吕容聪(Michael R Lyu)教授编辑、IEEE Computer Society Press出
版的《The Handbook of Software Reliability Engineering》一书,收入了一系列早期有关软件可靠性工程的文献,对推动软件可靠性工程的发展起到了一定的作用。但此书中远未包括软件可靠性工程研究的全部,特别是近年来开发的方法和技术。
软件可靠性工程属于软件工程范畴,正如软件需求工程、软件再工程、软件复用工程、软件测试工程等一样,是软件工程的一个子领域。软件可靠性工程的发展要从属于软件工程发展的需要,反之, 软件可靠性工程的发展又可以促进软件工程的发展,软件可靠性工程的方法和技术可以补充软件工程的方法和技术,使之更加丰富多彩。
软件可靠性工程是围绕软件质量指标体系中最重要的质量指标之一的软件可靠性来展开研究的,软件可靠性指标的高低,决定了软件是否能稳定、可靠地工作。软件中的错误是在软件的开发过程中,因为人的错误而引入到软件中的。开发软件的人也是社会的人,他们在开发软件的过程中,必然要受到其教育背景、工作经历、开发软件的经验的影响,同时也会受到其生活环境、周围的人们的影响,而且还会受到当时社会上各种思潮的影响。所以,尽快开展软件工程中的人的因素的分析研究工作,对于改善软件的质量有着十分重要的作用。软件可靠性工程中大量的管理工作,实际上一个重要方面就是如何做好人的工作。人的因素是根本的问题,因为从积极的方面来看,世界上所有推动人类社会进步与发展的事情都是由人做出来的。
综合以上原因,有理由认为本书讨论的软件可靠性工程问题已经远远超出了当年Musa先生提出的软件可靠性工程的概念。所以,从这个意义上来说,本书是一本讨论广义软件可靠性工程的著作。
本书是在软件可靠性工程研究课题组全体成员的长期努力下共同创造的成果。笔者的一届又一届的研究生们为此做出了持续不断的努力。如今,他们有的早已走上了工作岗位,有的还在国外继续深造,书中的许多章节就是他们的研究成果。笔者的主要工作就是将他们的这些成果用软件可靠性工程的一根主线贯穿起来,奉献给广大的读者。
在笔者普及、推广软件可靠性工程的工作过程及从事软件可靠性工程的教学过程中,经常会遇到各种各样的问题,其中最重要的问题也就是软件可靠性工程中的核心问题,即“软件可靠性工程与软件工程是一种什么样的关系?”、“应该怎样设计一个软件系统的软件可靠性指标?”、“怎样将软件系统的指标分配到各个软部件、甚至分配到各个模块上去?”、“什么样的技术可以保证软件可靠性指标的实现?”、“怎样反映和控制软件测试的进度与成本?”、“怎样控制将开发的软件产品在正确而适当的时候投放市场?”等。
上述这些问题有着深刻的工程背景,同时又涉及多方面的理论问题,要想清楚地回答这些问题是很不容易的。本书试图部分地回答若干问题,但真正的目的是以这些问题为出发点,将感兴趣的读者引入对这些问题的探讨中来,从而在国内普及软件可靠性工程的基本知识和应用,推动软件可靠性工程在我国的发展,为我国软件产业的发展壮大和国家的现代化做一点力所能及的工作。
本书第1章讨论软件可靠性工程在软件工程中的地位和作用,第2章讨论软件可靠性的基础理论,第3章讨论软件可靠性的分配问题,第4章研究软件测试的基本问题。自第5章开始,分别讨论软件的各种测试方法,最后给出有关部分的参考文献。因为本书是作为教材出版,受篇幅所限,与本书初稿相比较,将参考文献删掉了大半,主要是将那些较早的文献删除。如果书中引用的内容在书后的参考文献中未能找到,则笔者向这些作者致歉!
本书第2、3章介绍的软件可靠性基础理论、可靠性指标分配的优化问题以及第8~12章中有研究性质的内容,笔者建议作为研究生教学的内容和本科教学中的选学内容。
感谢国家自然科学基金委员会的系列资助,使我们这个研究小组得以在软件可靠性工程领域进行长期而稳定的研究工作。
参加本书编写工作的有谢旻、郑人杰等,感谢他们的辛勤劳动。感谢我的研究生周瑞、杨晓清、肖英柏、向剑文、张良平、陈波、张大帅、王果、陈斌、马若锋、郑红军、高俊鹏、刘丽娜、刘彦伸、徐剑宏、韩轶凡、黄灿、戴璐、周乙、鲜军、杨宏、任杰、张学斌、伍雁鹏、汪超、黄巍、齐大鹏、刘文、张霆、龚蓉、魏毅、伍永豪、朱州、晁冰、朱小冬。没有他们卓有成效的研究工作,本书不可能顺利完成。同样,我要感谢软件工程国家重点实验室的其他教授和他们的研究生,本书也包括了他们的许多研究成果。特别要感谢康立三教授和李元香教授领导的演化计算研究小组及他们的研究生,他们对演化计算和面向对象软件测试的研究成果是本书中重要的一部分内容,而演化计算的方法在本书讨论的许多方法中有着大量的应用。
借此机会,我要向我的妻子王旭莹表示衷心的感谢。正是由于她的鼓励和鞭策,本书才得以完成。
我还要感谢所有对我们的研究工作给予过大力指导和帮助的专家学者、组织机构、合作者和朋友们。感谢清华大学出版社的编辑、工作人员对本书的出版所做的大量工作和努力。
受编者水平的限制,书中会有不少的问题和错误。这些问题和错误一律由编者负责。请广大读者提出宝贵的批评和意见。如果在本书的使用中遇到任何问题,请与责任编辑联系:fuhy@tup.tsinghua.edu.cn。
徐仁佐
于武汉〓香格里·嘉园