APP下载

IEEE软件可靠性系列标准分析*

2011-01-22封二强

网络安全与数据管理 2011年3期
关键词:软件可靠性度量可靠性

郑 军,封二强,刘 畅

(中国航空综合技术研究所,北京 100028)

IEEE软件可靠性系列标准分析*

郑 军,封二强,刘 畅

(中国航空综合技术研究所,北京 100028)

对IEEE软件可靠性系列标准进行分析,总结了IEEE制定软件可靠性标准的经验,以及软件可靠性发展趋势。同时,结合我国软件可靠性标准化工作现状,提出软件可靠性标准的制定及相关标准修订的可借鉴之处。

软件可靠性标准;软件可靠性度量;软件可靠性评估过程;软件可靠性模型

随着计算机技术的快速发展,现代航电系统大量使用软件系统,其中某些软件系统在保证航空系统安全、可靠完成任务时起到了至关重要的作用,但这些软件的失效可能导致灾难性后果。

为了提高软件可靠性,相关领域的学者展开了广泛的软件可靠性研究,特别是全球最大的专业学术组织IEEE,更是在这方面作出了卓越的成绩。IEEE在开展软件可靠性研究的同时,也非常重视相关标准的制定工作。1988年,IEEE制定了第一份关于软件可靠性度量体系方面的标准[1]以及该标准的实施指南[2]。2005年,IEEE对软件可靠性度量体系标准进行了修订[3]。2008年,IEEE对R-013-1992标准进行修订[4],R-013-1992标准是AIAA(美国航空与航天学会)在1992年制定的关于软件可靠性评估的标准[5],这也说明IEEE在软件可靠性方面的成绩是国际公认的。

IEEE主要制定了软件可靠性度量体系和评估两方面的标准。本文将对IEEE制定的软件可靠性标准进行介绍和分析,总结IEEE制定软件可靠性标准的经验,以及软件可靠性发展趋势,结合我国软件可靠性标准现状,提出可靠性标准的制定及相关标准修订的可以借鉴之处。

1 IEEE软件可靠性标准分析

1.1 标准简介

IEEE软件可靠性标准主要包括软件可靠性度量体系和软件可靠性评估两方面。其中,软件可靠性度量体系由 IEEE Std 982.1-2005(软件可信性度量词典)和IEEE Std 982.2-1988(软件可靠性度量实施指南)组成,IEEE Std 982.1-2005是IEEE Std 982.1-1988的修订版;软件可靠性评估主要包括 IEEE Std 1633-2008(软件可靠性操作规程),它发布于2008年,替代了AIAA/ANSI R-013-1992(软件可靠性操作规程)。

在IEEE软件可靠性标准体系中,IEEE Std 982.1-2005主要回答了使用哪些参数对软件可靠性进行度量的问题,即用户可以通过哪些方面对软件质量、特别是软件的可靠性进行了解和评价。与IEEE Std 982.1-1988相比,IEEE Std 982.1-2005作出了较大程度的修改。1988版关于软件可靠性属性有39个不同的度量参数,而2005版中只有 12个,并且其中75%的度量参数是新增或修改的。

IEEE Std 982.2-1988主要回答了如何使用这些度量参数对软件可靠性进行度量的问题,但是该标准主要是针对IEEE Std 982.1-1988度量参数体系的,而IEEE Std982.1-2005中有75%的度量参数和IEEE Std 982.1-1988不一样。因此,对于当前的软件可靠性度量参数体系,该标准实际上已经失去了指导意义。

IEEE Std 1633-2008主要解决了如何进行软件可靠性评估的问题,包括软件可靠性评估过程和软件可靠性评估模型两方面。其中,软件可靠性评估过程包含13个步骤,这些步骤不是全部必需的,可根据软件特点和当前所处的软件生命周期阶段进行删减;软件可靠性评估模型方面推荐了三个模型,这三个模型都是在实际工程中表现优异的评估模型。

1.2 软件可靠性度量参数体系

IEEE Std 982.1-2005是IEEE Std 982.1-1988的修订版,它体现了软件可靠性作为软件质量重要属性在软件质量控制方面的新方法和新趋势。与1988版相比,2005版作出了较大程度的修改。1988版关于软件的可靠性属性有39个不同的度量参数,而2005版删除了其中的32个度量参数,并对剩余度量参数中4个进行了修改,只有3个得到完全保留,同时新增了5个度量参数。即可靠性度量参数由原来的39个变更为12个,其中有75%的度量参数是新增或修改的。可以说2005版基本上重新定义了软件可靠性的度量体系,新度量参数体系如表1所示。

IEEE在选取度量参数建立软件可靠性度量参数体系时,有如下准则:

(1)该参数是否得到了学术界和工业界的公认;

(2)该参数是否能有效地反映出软件可靠性的真实情况;

(3)该参数是否过于复杂,以至难于使用和理解;

(4)该参数适用情况是否过于狭小。

从IEEE选取度量参数的准则可以看出,软件可靠性度量的发展趋势是统一、简单、方便使用,这说明软件可靠性度量未来的发展会更加适用于工程需要。

1.3 软件可靠性评估

IEEE Std 1633-2008是IEEE最新发布的软件可靠性评估标准,也是当前最新的关于软件可靠性评估的国际标准。与AIAA/ANSIR-013-1992相比,IEEE Std 1633-2008主要的变化包括:将软件的整个生命周期纳入到了软件可靠性评估中,如图1所示;对软件需求修改进行风险分析;将达到特定软件可靠性指标,所需测试时间的预计加入评估过程;将Schneidewind模型新增为初始模型,并在初始模型中删除了L-V模型。

表1 IEEE Std 982.1-2005软件可靠性度量参数体系表

IEEE Std 1633-2008主要包括软件可靠性评估过程和软件可靠性评估模型两部分。

1.3.1 软件可靠性评估过程

IEEE Std 1633-2008规定了软件可靠性评估过程,包括:明确软件系统构成、明确软件系统的可靠性逻辑结构、分配可靠性指标、需求修改风险评估、明确软件失效定义、确定软件运行环境、确定测试用例、选择评估模型、收集失效数据、进行模型参数估计、验证模型有效性、进行软件可靠性评估、预计剩余测试时间等13个步骤,如图2所示。这些步骤可根据软件特点和当前所处的生命周期阶段进行删减。

1.3.2 软件可靠性评估模型

通过分析软件可靠性评估模型的作用、建立的前提条件、影响模型精度的因素、适用的可靠性评估范围、模型的优势和局限性,IEEE Std 1633-2008将当前主要评估模型分为三类:(1)指数类非均匀泊松(NHPP)模型;(2)非指数类NHPP模型;(3)贝叶斯类模型。具体分类情况及各类中代表性的模型如图3所示。

IEEE Std 1633-2008通过模型的精度、偏差、趋势三方面评价模型的有效性,并给出三个初始模型(优先使用的模型):Schneidewind模型、一般指数类模型、M-O对数模型。这三个初始模型是该标准推荐优先使用的评估模型,也是经过实际工程检验性能表现良好的模型。从推荐的初始模型可以看出,贝叶斯类模型不是该标准优先推荐使用的模型。这是由于贝叶斯类模型参数较为复杂,不便于工程使用。因此,可以看出IEEE在新标准的制定过程中始终以工程使用为向导。

如果三个初始模型都不能满足工程要求,可以使用该标准附录中推荐的四个评估模型:L-V模型、Duane模型、S-形模型、J-M模型。

2 对我国软件可靠性标准工作的借鉴意义

2.1 我国软件可靠性标准化现状

20世纪90年代至今,我国在借鉴国外相关标准的情况下也制定了自己的软件可靠性标准。与软件可靠性相关的标准有GJB-451A-2005《可靠性维修性保障性术语》[6]和GJB/Z102-1997《软件可靠性和安全性设计准则》[7]。

国军标 GJB-451A-2005对产品(包括软件、硬件或两者结合)的可靠性、维修性、保障性术语进行了定义,但是,其中只有3条是IEEE Std 982.1-2005中有的,即IEEE Std 982.1-2005中有9条度量参数是国内标准所没有的,占度量参数总数的75%,其中包括:危险因子、剩余缺陷数、剩余测试时间、网络可靠性、缺陷密度、测试覆盖率、故障密度、软件需求的可追溯性。

国军标GJB/Z 102-1997《软件可靠性和安全性设计准则》介绍了软件可靠性设计的目的及实现技术方法。

我国虽然开展了软件可靠性标准化工作,但是还处在相对落后的阶段,主要存在以下不足:

(1)没有针对软件可靠性建立完整的度量参数体系,使得软件可靠性评价工作不能得到有效开展。

(2)缺少关于软件可靠性评估方面的标准,使得软件可靠性评估工作不具备操作性,软件的可靠性指标无法得到验证。

(3)没有将软件的整个生命周期纳入软件可靠性范畴,使得软件可靠性得不到全面的提升。

因此,在航空、航天等软件密集型的国防领域开展相关的软件可靠性标准化及软件可靠性实践工作势在必行。

2.2 IEEE软件可靠性标准的借鉴意义

通过对IEEE软件可靠性系列标准和我国软件可靠性标准化现状的分析,可知以下值得借鉴的经验:

(1)IEEE软件可靠性标准建立了完整的度量参数体系,该标准在参数选取上遵循四大准则,始终以工程需求为导向,以学术研究成果为支撑。因此,我国在软件可靠性度量参数体系标准建设时,应充分考虑工程需求和学术成果的结合。

(2)IEEE软件可靠性标准将软件全生命周期和软件可靠性评估相结合,将软件可靠性工作融合到软件生命周期的各个阶段中。我国软件可靠性标准也应结合现阶段我国软件开发方式以及采用的工程技术,在软件的整个生存周期综合考虑软件可靠性,这样不仅有利于软件可靠性工作的组织和开展,也有利于合理地利用现有资源,提高软件可靠性工作的效率。

(3)IEEE软件可靠性标准建立了一个可进行自由裁剪的可靠性评估过程,以适应各种工程评估情况,充分考虑了标准的可操作性和工程易用性。因此,我国的软件可靠性标准也应该综合考虑软件工程中的各种情况,以提高软件可靠性标准执行过程的可操作性,做到软件可靠性标准通用性和针对性相结合。

(4)IEEE软件可靠性标准充分考虑了当前软件可靠性的研究成果,及时地将最新技术纳入标准中。我国制定软件可靠性标准时,也应该及时将最新学术成果进行分析、转化,以加快科学技术转化为生产力的步伐。

通过对IEEE软件可靠性系列标准进行分析,并结合我国软件可靠性标准化现状,提出我国软件可靠性标准化工作应该借鉴IEEE软件可靠性标准体系,并且要充分考虑我国软件技术和软件工程化水平,将软件全生命周期纳入到软件可靠性工程中来,定义明确的、便于工程使用的软件可靠性度量体系,并建立适应各种工程情况的可靠性评估过程,充分考虑标准的可操作性和工程易用性。同时,要紧跟工程需求和软件可靠性技术发展方向,以便及时将最新学术成果进行分析、转化,为型号工程提供支撑。

[1]IEEE STD 982.1-1988.Dictionary of measures to produce reliable software.1988.

[2]IEEE STD 982.2-1988.IEEE guide for the use of IEEE standard dictionary of measures to produce reliable software.1988.

[3]IEEE STD 982.1-2005.Dictionaryofmeasuresofthe software aspects of dependability.2005.

[4]IEEE STD 1633-2008.IEEE recommendedpracticeon software reliability.2008.

[5]AIAA/ANSI R-013-1992.Recommended practice for software reliability.1992.

[6]GJB 451A-2005.可靠性维修性保障性术语.2005.

[7]GJB/Z 102-1997.软件可靠性和安全性设计准则.1997.

Analysis on the IEEE standards of software reliability

Zheng Jun,Feng Erqiang,Liu Chang

(China Aero-Polytechnology Establishment,Beijing 100028,China)

Based on the analysis of the IEEE standards of software reliability,experience in developed standards by IEEE and the trend of software reliability are proposed.The history of software reliability standards of China,the current trends and existing problems,and specific difficulties are addressed.Possible future directions and promising research subjects in software reliability engineering are also addressed.

software reliability standard;software reliability assessment;software reliability assessment procedure;software reliability model

TP311

A

1674-7720(2011)03-0001-03

航空科学基金资助(2008ZD41005)

2010-09-10)

郑军,男,1969年生,高级工程师,主要研究方向:软件测试,软件质量度量。

封二强,男,1984年生,主要研究方向:软件可靠性测试,软件测试,软件可靠性评估。

刘畅,男,1979年生,主要研究方向:软件可靠性工程,缺陷预测,软件质量度量,故障检测。

猜你喜欢

软件可靠性度量可靠性
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
可靠性管理体系创建与实践
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
合理使用及正确测试以提升DC/DC变换器可靠性
软件可靠性工程综合应用建模技术研究
GO-FLOW法在飞机EHA可靠性分析中的应用
5G通信中数据传输的可靠性分析
软件可靠性设计技术应用研究
数控系统软件可靠性设计与故障分析技术