随着信息技术的迅速发展,计算机软件的应用日益广泛,软件失效造成的后果也愈加严重,特别是在航空航天、金融保险、交通通信、工业控制等关系国计民生的重要领域,软件一旦失效将造成重大损失,因此对软件质量提出了更高的要求,软件质量受到人们越来越多的关注。
从整体上来度量软件质量,最早在20世纪70年代末被提出,希望用软件度量的方法来科学地评价软件质量,以便更有力地控制和管理软件开发过程,合理地组织和分配资源,制订切实可行的软件开发计划,以低成本获得高质量的软件。但由于软件是大脑智力的产物,具有可见性差、难以量化的特点,人们对软件质量的认识尚不够系统,软件度量与评估至今仍是软件工程领域的重要研究方向,而能够在实际工程中应用的具有良好可操作性的技术和方法更是凤毛麟角。
软件可信性是软件质量的一种特殊表现形式,所关注的是软件使用层面的综合化的质量属性及其保障方式,涉及多个质量属性的集合以及这些属性的综合与平衡。自20世纪90年代被引入软件工程化领域以来,在美国国家科学基金会(NSF)、欧空局(ESA)等组织的积极推进下,软件可信性研究得到了广泛的重视。特别是在硬件技术越来越成熟、软件失效成为导致系统失效的主要原因的当下,软件可信性成为复杂计算机系统的最主要挑战之一,如何确保软件的可信性具有重大的现实意义。我国自然科学基金委和“863”计划分别把软件可信性相关研究列为重大研究计划和重点研究项目,美国国家软件发展战略(National Software Strategy to Ensure U.S. Security and Competitiveness, 2006—2015)更是将开发高可信软件放在首位,并提出下一代软件工程的构想。
将软件可信性与软件评估技术相结合,探讨全软件开发生存周期的软件可信性度量与评估方法,是撰写本书的目的。本书以全生存周期的软件可信性定量评估方法为主线,有取舍地介绍了软件工程、软件质量评估和软件可信性研究的相关内容,重点阐述了软件可信性评估模型、软件开发生存周期各阶段的可信性度量策略与方法、软件可信性数据融合与推理技术等技术和方法。
全书的组织结构如下:
前三章为引言部分。第1章概论,简要介绍了软件可信性的定义、来由及发展历程,给出了实施软件开发生存全周期可信性定量评估的一般思路,主要说明本书的主旨与结构;第2章介绍了软件、软件工程、软件质量的相关概念,简要阐述了软件质量评估的基本过程与几种常见的质量模型;第3章概要介绍了GB/T 8566—2007 《信息技术 软件生存周期过程》,详细阐述了软件需求分析、软件设计、编码实现和软件测试等软件开发过程核心阶段的主要活动、技术要点及其产品验证与确认方法,并简要介绍了瀑布模型、快速原型开发模型、增量开发模型、螺旋模型等不同的软件生存周期模型。〖1〗软件可信性定量评估: 模型、方法与实施〖1〗前言第4章至第10章是本书的主要内容。第4章为软件可信性评估模型,参考已有的质量模型,给出了一种五级层次结构的软件可信性评估模型,重点介绍了软件可信性评估模型的结构及其可信属性、可信子属性的设计;第5章至第8章为软件可信性评估度量,结合软件可信性评估模型设计,分别详细阐述了软件需求分析、软件设计、编码实现和软件测试等阶段的可信度量、度量指标及其度量策略;第9章为软件可信性评估方法,介绍如何对采集到的可信度量数据进行有效的归纳整理以得到评估结果的相关技术,详细阐述了一种基于证据推理的数据融合方法,给出了具体的算法步骤;第10章为本书的最后一部分,结合工程实例及软件可信性定量评估软件,给出了软件可信性定量评估方法的实施指南。最后,在附录中给出评估例的主要结果及评估过程文档模板。
除吴欣参加了第10章部分内容的编写外,全书由张卫祥执笔、刘文红审校。杜会森、闫国英、尹平、李德治等参加了本书内容的讨论,赵辉、杜会森、许聚常、张卫民、杨宝明、李国华、韩光、杨朝红等专家审阅了初稿并提出了许多宝贵意见。陈凌辉和清华大学出版社石磊老师为本书出版提供了诸多帮助,付出了辛勤劳动。
本书的形成基于作者长期在航天软件领域从事一线工作的实践经验(本书的适用范围并不限于此领域),大部分内容取材于探月工程关键技术研究“软件可信性分析与评估方法研究”的研究内容与成果,非常感谢探月工程给予的基金支持。在本书的研究和组稿过程中,得到了北京跟踪与通信技术研究所,特别是软件评测中心的大力支持,一并表示感谢。还需要特别感谢的是我们的家人,完成本书占用了很多业余时间,在此对他们表示歉意并感谢他们的理解与支持。
与软件一样,本书虽然经过了认真的编写和修改,仍然会有一些错误存在,而这些错误只有在使用时才会被发现。希望读者在阅读本书后能将错误、意见或建议反馈给我们(weixiangzhang@outlook.com),特此致谢。
编者 2015年4月