本书是一本关于软件开发本质主题的权威著作。作者通过大量详尽的工业实例,深入浅出地介绍了怎样测量软件质量,以及利用测量来实现软件开发过程的改进。书中通过四个主要的质量度量和模型类别展开论述:质量管理、软件可靠性和预测、复杂性以及客户观点。另外,本书还讨论了测量理论的基础,特殊的质量度量和工具,以及在软件开发过程中应用度量的方法。全书内容丰富,层次分明,并在前一版的基础上进行了大量的更新,补充了许多相关的理论与应用。
\r\n 本书可作为计算机及相关专业本科生与研究生的教材或参考书,也是每一位从事软件质量工程研究的人员的宝贵资料。
第1章 引言\r\n 1.1 概述\r\n 1.2 质量\r\n 1.3 软件质量\r\n 1.4 造成软件质量低下的根源——软件中的差错\r\n 1.5 影响软件质量的主要因素\r\n 1.6 本章小结\r\n思考题\r\n参考文献\r\n第2章 软件质量管理\r\n 2.1 概述\r\n 2.2 系统需求分析阶段\r\n 2.3 软件需求分析阶段\r\n 2.4 概要设计阶段\r\n 2.5 详细设计阶段\r\n 2.6 软件实现阶段\r\n 2.7 软件集成测试阶段\r\n 2.8 确认测试阶段\r\n 2.9 系统联试阶段\r\n 2.10 软件的更新、存档和复制\r\n 2.11 本章小结\r\n思考题\r\n参考文献\r\n第3章 软件质量控制\r\n 3.1 引言\r\n 3.2 全面软件质量控制\r\n 3.3 软件质量控制技术\r\n 3.4 全面软件质量控制的应用——质量控制计划的编制\r\n 3.5 全面软件质量控制计划的修改\r\n 3.6 本章小结\r\n思考题\r\n参考文献\r\n第4章 软件质量度量\r\n 4.1 概述\r\n 4.2 软件质量度量体系结构\r\n 4.3 软件质量因素及度量标准的定义\r\n 4.4 软件质量度量过程模型\r\n 4.5 软件质量度量方法\r\n 4.6 软件质量度量评分过程举例\r\n 4.7 软件质量度量评审\r\n 4.8 本章小结\r\n思考题\r\n参考文献\r\n第5章 软件可靠性度量\r\n 5.1 引言\r\n 5.2 软件可靠性度量和软件可靠性建模基础\r\n 5.3 软件可靠性数据收集\r\n 5.4 软件系统的运行剖面\r\n 5.5 软件可靠性模型及其应用\r\n 5.6 软件可靠性测试\r\n 5.7 软件故障数据的趋向性分析\r\n 5.8 本章小结\r\n思考题\r\n参考文献\r\n第6章 软件质量保障\r\n 6.1 概述\r\n 6.2 软件质量保障的质量体系和质量成本\r\n 6.3 软件质量保障计划\r\n 6.4 软件质量保障的精髓——软件配置管理\r\n 6.5 软件质量保障中的评审和检查\r\n 6.6 软件质量保障组织\r\n 6.7 本章小结\r\n思考题\r\n参考文献\r\n第7章 软件工程近期的发展\r\n 7.1 软件工程技术\r\n 7.2 软件分析\r\n 7.3 软件工程的自动化\r\n 7.4 软件统计质量控制\r\n 7.5 建立一个“经验教训”库\r\n思考题\r\n参考文献\r\n
软件产业是信息产业的发展重点。近几年来,我国的软件产业保持着较快的增长,软件与信息服务市场的份额持续扩大,但也存在着企业规模、核心技术和软件出口能力等方面的问题,尤其是软件企业的生产和流程管理水平存在差距,经常出现开发费用超支、开发周期拖延、项目管理混乱等问题。这使得软件质量难以得到保证。随着软件开发过程与活动的日益复杂,软件系统的规模和复杂程度亦快速增长。如何保证软件系统的质量并有效地降低软件开发的风险,这将是软件工程领域的研究焦点与迫切需求。
这是一本关于软件开发本质主题的权威著作。本书通过大量详尽的工业实例,深入浅出地说明了怎样测量软件质量,以及利用测量来实现软件开发过程的改进。书中通过四个类别的度量和模型展开讨论 :(1) 质量管理模型;(2)软件可靠性和预测模型;(3)复杂性度量和模型;(4)客户观点度量、测量和模型。这些度量和模型覆盖了整个软件开发过程:从高层设计到测试和维护,以及关于可靠性的所有阶段。另外,本书还讨论了测量理论的基础、特殊的质量度量和工具,以及在软件开发过程中应用度量的方法。本书在第一版的基础上进行了大量的更新工作,并结合软件质量工程领域的最新发展和需求,新增了软件测试的过程中度量、面向对象度量、可用性度量、过程度量评价、软件项目评价、过程改进的注意事项以及测量软件过程改进等一些内容。通过理论、技术和实例三者的完美结合,作者系统地阐述了软件开发中最重要的主题之一:质量工程。这本书无论是对于学术界的科研工作,还是对于软件开发组织的计划以及管理实际项目的度量、分析和改进质量都具有很高的参考价值。
本书的第1章 ~第 10章以及第17 章~ 第19章由吴明晖翻译,第11章 ~ 第16章由应晶教授翻译。全书由最后吴明晖负责统稿,并由何志均教授进行了审校。在本书的翻译过程中,美国Michigan State University 计算机系的吴明博士以及浙江大学计算机系的邬惠峰、余春艳、陈羡、李钢、方敏、柯海丰、栾雪剑、黄晟盛、胡君、曹立、付超、张琦也参与了大量的工作,并提出了很多的意见和建议。由于译者水平有限,错误之处在所难免,敬请各位读者不吝赐教。
Stephen H.Kan ,IBM Rochester的高级技术职员和规划技术经理,负责IBM Rochester 的软件质量策略和计划、质量评估、软件测量以及统计分析,作为IBM eSeries产品开发中的软件质量管理过程经理,他的职责范围包括质量目标设置,供应商质量需求,质量计划,过程中度量,现场质量状态, 以及质量和项目评价。Kan博士自1998年开始担任Minnesota大学软件工程专业的教授。
从历史的角度来看软件工程,20世纪60年代或更早可以看做是它的基础时代,20世纪70年代是发展时期,20世纪80年代是代价时期,20世纪90年代以及后来是质量和效率时期。在20世纪60年代,我们学会了如何应用信息技术来满足机构的需求,并开始将软件与机构的日常事务联系起来。在20世纪70年代,工业界的特点是大规模的进度延迟和代价超支,重点放在软件项目的计划和控制上。基于阶段的生命周期模型被引入和分析,如人-月的分析开始涌现。在20世纪80年代,硬件价格开始下降,信息技术进入到机构的每一个方面,并且开始走向个人。随着工业界竞争的日益激烈,各个组织广泛实行了低代价应用。软件开发生产率的重要性大大增加,开发并使用了许多的工程代价模型。到了20世纪80年代晚期,质量的重要性开始得到人们的广泛认识。
20世纪90年代及后来明显进入到质量时代。随着现有技术能够提供丰富的功能,用户要求更高的质量。社会对软件日益增强的依赖也进一步强化了对质量的需求。账单错误,大规模地受到破坏的电话服务,甚至近些年来出现的导弹发射失败都可以追溯到软件开发中的有关问题。在这个时代,质量已经放到了软件开发过程的中心。从软件销售商的角度来看,质量不再是市场的一个有利因素,而是变成了公司成功竞争的必要条件。
从20世纪90年代中期开始,涌现出了两大主要因素,被证明不仅对软件工程而且对全球商业环境都有重大影响:为了提高效率的业务再工程(reengineering)以及Internet。软件开发必须更加有效,产品的质量级别必须要满足需求而且能够成功,特别是对于关键性任务的应用。低质量的负面影响更加严重和广泛,软件应该提供的质量“堤坝”至关重要。这些因素将会不断影响软件工程许多年。
测量在有效的软件开发中起到了关键的作用,同时也为软件工程成为一个真正的工程学科提供了科学的基础。这本书描述了软件质量工程的度量和模型:质量计划,过程改进和质量控制,过程中质量管理,产品工程(设计和代码复杂度),可靠性预测,以及客户满意度的分析。许多有关测量的书籍采用了百科全书的方法,其中包括了每一种可能的软件测量。但这本书将其范围限制于软件质量的度量和模型中,没有包括如代价预测、生产率、人员调度、性能测量等已经有大量文献的领域。
在本书的第二版中,加入了7个全新的章节,覆盖了软件测试的过程中度量,面向对象度量,可用性度量,过程度量评价,软件项目评价,过程改进的注意事项,以及测量软件过程改进。在第二版中删除了描述AS/400软件质量管理系统的章节。新版本在原先的章节中进行了一些更新和修改,并加入了一些新的内容和图表。
其中有两章的新章节来自于两个专家的贡献,这是新版本的一个特点。有关软件过程改进中的注意事项的一章由Patrick O誘oole撰写。作为一个被广泛认同的过程改进专家且有着20多年的实际经验,Patrick给这本书带来了关于过程改进方面的全新观点。这个角度是基于实际经验、面向项目并与商业策略一致的。有关测量软件过程改进的一章是由Capers Jones提供的。Capers是软件度量、生产率研究、软件质量控制以及软件评价的先驱,他的著作在国际上都享有盛名。Capers在软件评价和基准研究方面的基于数据和事实的方法是非常先进的。基于来自一万多个项目的经验和数据,他为读者带来了用于软件过程改进的实践方法,以及有关软件过程改进的主要发现。功能点度量的价值通过分析及一些发现成果而得到了展现。这一章对于那些关注测量软件过程改进的软件过程专业人士来说是必不可少的。
这个版本的另一个新特点是,它为那些资源有限而又打算实现度量计划的小型团队和小型组织提供了一系列的建议和意见。这些建议分布在9章之中,用阴影标识。本书的一些例子是基于小型项目的,许多适用于大型项目的方法和技术也都适用于小型项目。这些建议从小型组织的角度出发,目的在于使用少量的度量来改进软件开发。
这本书针对软件质量专业人士、软件项目管理人员、软件产品管理人员、软件开发管理人员、软件工程师、软件产品保证人员,以及软件工程、管理信息系统、系统工程、质量工程和管理专业的学生。对于教师来说,本书能为本科高年级或研究生课程提供一个理论基础。美国和其他地区的一些软件工程、计算机科学、质量工程专业的教学计划已经采用了本书的第一版作为教材。
本书的主题
本书有几个主题。第一,权衡理论、技术和实例之间的关系,它为软件开发中质量工程的实践提供了一些可行的指导原则。尽管引用了一些公式,但重点在于理解和应用度量,而不是数学推导。本书引用的很多例子来自于IBM Rochester软件开发实验室(AS/400和IBM eServer iSeries计算机系统的开发基地)以及软件工业中的其他一些公司。IBM Rochester在1990年赢得了Malcolm Baldrige美国国家质量奖(MBNQA)。本书中的很多度量都是在那时使用的,从那时起许多度量经过了不断的开发与修改。所有的度量都得到了大量实践经验的验证。IBM Rochester每年开发并发布许多不同大小和类型的项目,包括非常大且复杂的项目和小型项目;类型包括从固件、操作系统到中间件与应用。
第二,作者试图包括软件质量工程领域中尽可能多的度量和模型。除了关于度量和技术的一般讨论之外,这本书包括了四个类别的度量和模型:(1) 质量管理模型;(2)软件可靠性和预测模型;(3)复杂性度量和模型;(4)客户观点度量、测量和模型。这些度量和模型覆盖了整个软件开发过程,从高层设计到测试和维护,以及关于可靠性的所有阶段。而且,尽管本书不是关于全面质量管理(TQM)的一本论著,但它在讨论度量时重点考虑了这一概念。TQM的原则在于为了取得长远的成功,将产品质量和客户满意度联系在一起。TQM可以解释为什么除了有关产品和过程度量的章节之外,本书还有两章是关于客户观点度量和测量的。在本书的其他一些讨论中,也将在适当的时候讲解客户观点。
第三,通过将度量和模型与质量改进策略和改进措施相结合,我们试图侧重于应用度量,而非描述度量。书中解释了过程度量和评估过程度量质量状态的基本框架,并提出了工作量/成果模型。我们说明了开发质量策略建议和缺陷移除模型之间的直接联系,并给出了与一些特定度量和分析有关的措施实例。而且,为了说明度量,本书使用了很多的图表。这也反映了在实际的项目和质量管理中,清晰的可视化表示形式通常能够增进理解并提高度量的有效性。
第四,在介绍了质量和过程改进之后,本书讨论了过程中的质量评价过程、一种评价软件项目的方法、过程改进中的注意事项和软件过程改进的定量分析。这些章节与关于度量和模型的章节之间的联系就是来自工业项目的实践经验。
本书的组织结构
下面,我们详细描述每一章的重点。
● 第1章,软件质量的定义:讨论了质量和软件质量的定义,该定义强调了客户的地位。本章讨论了质量属性和它们的关系,给出了TQM的框架及其定义,以及客户对质量的观点,这是本书的一个重点。
● 第2章,软件开发过程模型:介绍了许多在软件工业中使用的开发过程模型。本章大致介绍了软件过程成熟度评估的两种方法—SEI的过程能力成熟度模型(CMM)和SPR评价方法。我们还概括了两套质量管理标准—Malcolm Baldrige 美国国家质量奖评价标准和ISO 9000。
● 第3章,测量理论基础:介绍了测量理论基础,这一点对软件测量非常重要。本章通过实例讲解了操作定义的概念和它在测量中的重要性,并且讨论了测量的级别、一些基本测量和Six Sigma的概念。测量质量、可靠性和有效性的两个关键标准,以及测量误差的有关问题,本章对它们的重要性都进行了说明。这一章还讨论了相关性,以及基于观测数据建立因果关系的必要标准。
● 第4章,软件质量度量概述:给出了与软件生命周期相关的三个度量类别的例子:终端产品、过程中和维护阶段。本章描述了几家大型软件公司的度量计划,并讨论了软件工程数据的采集。
● 第5章,软件开发中七种基本质量工具的应用:描述了质量控制的基本统计工具的应用,软件开发中称其为Ishikawa的七种工具。本章讨论在软件环境中应用控制图表的潜在作用和相关难点,并且介绍了用于显示复杂因果关系的定量工具—关系图。
● 第6章,缺陷移除效率:这是描述软件开发质量问题的5章中的第一章。通过两种类型的模型,可以对质量管理模型、软件可靠性和预测模型、软件开发质量进行计划、工程化、管理与预测。这一章介绍了缺陷移除效率的核心概念、相关的测量,以及它在质量计划中的地位。
● 第7章,Rayleigh模型:描述了模型以及它作为可靠性和预测模型的实现。Rayleigh模型作为质量管理模型的使用将在第9章讨论。
● 第8章,指数分布和可靠性增长模型:讨论了指数分布和主要的软件可靠性增长模型。这些模型,如Rayleigh模型,在软件交付给用户之前(开发完成前)用于质量预测。这些模型还用于维护计划,从而对故障模式或领域中的缺陷到达模式进行建模。
● 第9章,质量管理模型:描述了贯穿整个开发周期的几种质量管理模型。本章提出并讨论了过程度量和支持模型的报告,而且给出了解释过程度量和评估过程质量状态的框架—工作量/成果模型。
● 第10章,软件测试的过程中度量:本章是第9章的一个延续,侧重于软件测试的度量。工作量/成果模型通过在测试阶段的应用而得到了说明。本章还讨论了用于评估外包软件的验收测试的候选度量,以及关于如何得知产品可以交付的关键问题。
● 第11章,复杂性度量和模型:讨论了软件工程中的第三类度量和模型。尽管质量管理模型和可靠性及预测模型是用于项目管理和质量管理,但是复杂性度量和模型的目的是为了使软件工程师能够改进他们的设计以及软件开发的实现。
● 第12章,面向对象项目中的度量和经验教训:覆盖了面向对象开发中的设计和复杂性度量、生产率度量、质量和质量管理度量,以及从开发和部署面向对象项目中得到的经验与教训。前面的内容可以看做是复杂性度量和模型讨论的延续,其他部分可以融入质量和项目管理的框架中。
● 第13章,可用性度量:讨论系统可用性和中断度量,研究了可用性、可靠性和传统缺陷率测量之间的关系。可用性度量和客户满意度测量是第四类度量和模型—面向客户的度量。
● 第14章,测量和分析客户满意度:讨论了客户满意度的数据采集和测量,分析客户满意度数据的模型和技术。从第3章到这一章,涵盖了度量和模型的整个范围。
● 第15章,执行过程中质量评价:描述了过程质量评价作为好的项目管理的一个因素。质量评价基于定量的指标(如前面章节讨论过的)和定性的信息。
● 第16章,执行软件项目评价:在另一个层次进行讨论,这一章提出了一种软件项目评价方法。本章的侧重点在项目层次,讨论来自于一个实践者的观点。
● 第17章,软件过程改进中的注意事项:由Patrick O* Toole提供,为软件过程改进的专业人员提出了实际的建议。本章可以联系第2章的过程成熟度的讨论。
● 第18章,使用功能点度量来测量软件过程改进:由Capers Jones提供,讨论了软件过程改进的六个阶段。基于大量的经验数据,本章研究了过程改进的代价和效果,其中显示关于代价、时间、进度、生产率和质量的定量分析。本章说明了功能点度量的价值,并联系了第2章的过程成熟度的讨论。
● 第19章,总结:提供了对于一般软件测量以及一些特别的软件质量度量和模型的几个观察结果,并给出了关于软件工程测量未来前景的预示。
● 附录:展现了一个真实的项目评价问卷的实例。对于第16章的每一种方法和技术,读者可以根据自己的项目评价工作量来定制问卷。
建议的阅读方式
读者应该从头至尾阅读本书的每一个章节,后面的章节将会引用前面章节提到的概念和讨论结果。同时,每一章都阐述了一个不同的主题,可以成组地学习有关章节。有些读者可以选择不同的主题阅读。例如,那些对质量定义、过程模型和测量基础不感兴趣的读者可以从第4章(“软件质量度量概述”)开始阅读,那些想要很快进入缺陷移除、质量计划、管理和预测度量的中心主题的读者可以从第6章(“缺陷移除效率”)开始学习。一般来说,作者建议读者按如下方式成组地阅读本书的章节。
● 第1章到第3章
● 第4章
● 第5章
● 第6章到第10章
● 第11章到第12章
● 第13章到第14章
● 第15章到第18章
● 第19章