APP下载

软件可靠性与安全性研究

2016-11-12杨宏帅

无线互联科技 2016年19期
关键词:软件可靠性定性定量

杨宏帅

(黑龙江职业学院,黑龙江 哈尔滨 150080)

软件可靠性与安全性研究

杨宏帅

(黑龙江职业学院,黑龙江 哈尔滨 150080)

文章通过对软件可靠性与安全性基本概念的探讨与澄清,提出了当前对软件可靠性进行定性评价是十分必要并且切实可行的判断,并希望为今后的研究找到一条切实可行的技术路线。

软件;可靠性;安全性

1 概述

长期以来,如何给出应用软件的可靠性和安全性要求是一个一直困扰我国软件开发人员的问题。当前关于软件可靠性的研究沿着定量和定性两个方向进行,但无论是定量研究还是定性研究都没有给出一个明确的、普遍适用的、具有实际操作性的、可考核的可靠性度量指标。在定量方面,软件可靠度是被普遍接受的软件可靠性度量指标,但存在无法验证的问题,在工程上无法实施。在定性方面,软件缺陷避免、消除、遏制等软件可靠性工程技术能够极大地提高软件的可靠性,具有很好的实际应用效果,但没有形成基于软件可靠性技术的软件可靠性评价体系,无法基于软件所采用的可靠性技术对软件的可靠性进行评价。本文在分析软件可靠性、安全性相关概念的基础上,对一些容易引起混淆的概念予以澄清,以期梳理出一个清晰的研究框架,为今后的研究找到一条切实可行的技术路线。

2 概念分析

2.1 可靠性

软件可靠性从直观上讲就是软件运行期间不发生失效的概率。从用户角度看,两个同样功能的软件,如果其中一个在使用中发生失效的频率较高,而另一个发生失效的频率较低,用户会认为失效频率较高的那一个可靠性较差。软件失效与硬件失效不同,硬件失效主要是由器件“磨损”所导致的,是时间的函数,而软件失效则是由软件内存在的缺陷所导致的,是软件固有的,是不随时间变化的。软件失效的频率不仅与软件中存在的缺陷数相关,而且与软件的使用相关。即使软件中缺陷数量较少,如果存在缺陷的那部分软件功能是用户经常使用的,则同样会频繁地出现软件失效。从另一个方面看,即使软件中存在的缺陷数量较多,如果都存在于用户不经常使用的功能中,则有可能出现失效概率较低的情况。因此定义软件的可靠性不能仅考虑软件中缺陷的密度,还要考虑软件的实际使用情况。软件的实际使用情况在数学上可以用规定的使用时间内软件的输入空间及其概率分布来描述。对于任何一个给定的软件,由于其中存在的缺陷是确定的,所以能引起软件失效的输入集合就是确定的,根据软件输入空间的概率分布就能计算出引起失效的输入集合出现的概率,因此就能定量地计算出软件的可靠性,如图1所示。

图1 引起失效的输入集合出现的概率

GB/T11457-1995软件工程术语中将软件可靠性定义为:在规定的条件下、规定时间内软件不引起系统失效的概率[1]。在这个定义中,规定的条件和规定的时间体现了软件的实际使用情况,在数学上同样可以用规定的使用时间内软件的输入空间及其概率分布来描述。基于前文所述,对任一给定的软件,该定义给出的可靠性度量指标(不失效概率)是存在的并且是理论上可计算的,因此该定义是关于可靠性的科学的定量定义。

但该定义中将软件可靠性定义为不引起“系统”失效的概率是值得商榷的。从前文所述可知,软件可靠性是软件自身的一种属性,是由软件中存在的缺陷决定的,外在的“系统”对软件可靠性产生的作用已经在软件的输入空间及概率分布上体现,在这种情况下并不存在软件引起系统失效的概率,而只存在软件自身失效的概率,因此准确的软件可靠性定义应该为:在规定的条件下、规定时间内软件不出现失效的概率。将软件可靠性与外在的“系统”相分离既可以在软件可靠性与系统可靠性之间划清明确的界限,使软件可靠性的分析变得非常确定,又可以使软件可靠性定义能够适用于没有外在“系统”的纯软件产品的情况。

当前国外的软件可靠性工程研究以软件可靠性定量评估模型为主要研究内容。美国宇航协会(AIAA)将软件可靠性工程定义为:应用统计技术处理在系统开发和运行期间所采集的数据,以便详细说明、预计、估计和评价基于软件的系统可靠性。目前已获得的模型包括:Jelinski-Moranda模型、Schneidewind模型、Musa-Okumoto模型、Duane's模型、Littlewood-Verrall模型等,但还没有一个普遍适用的模型能够对软件可靠性进行准确地定量评估[2]。究其原因在于:(1)基于统计的分析需要大量的原始数据,目前原始数据积累不够;(2)数学上比较复杂,首先软件输入空间是一个无穷的集合,其次还需要考虑输入的各种组合情况;(3)牵扯因素较多,需要考虑软件开发各阶段引入缺陷的情况;(4)可靠性评估结果还与测试技术相关。以上因素都使得基于定量定义的软件可靠性评估在短时间内难以取得具有较强实际应用价值的成果。

除上述软件可靠性定量定义外,还有关于软件可靠性的定性定义。GB/T11457—1995软件工程术语中给出的第二个软件可靠性定义为:在规定的时间周期内所述条件下程序执行所要求的功能的能力[3]。众所周知,软件可靠性能力的获得与软件开发过程所采用的设计、分析、测试、管理技术密切相关,最终软件产品的可靠性与软件开发过程中所采用的软件可靠性技术的数量和合理性成正相关关系。目前国内关于软件可靠性技术和工程化方法研究很多,但还没有形成基于软件可靠性技术的软件可靠性评价体系,导致在航天软件开发实践中既没有软件可靠性定量指标可用,也没有软件可靠性定性衡量标准的现状。究其原因在于:(1)对定量指标的追求,导致对定性指标的忽视;(2)定性指标的建立需要大量的统计数据,国内目前没有开展相应的数据积累工作;(3)软件可靠性相关的技术研究不充分,没有从建立软件可靠性评价体系的角度对各项软件可靠性技术进行分析研究。

2.2 安全性

与软件可靠性相关的另一个问题是软件的安全性。GJB/ Z 102—97软件可靠性和安全性设计准则中将软件的安全性定义为:软件运行不引起系统事故的能力。从定义中可以看出,软件的安全性不能脱离一个外在的“系统”而独立存在。对于软件计算器一类的纯软件产品是不存在什么安全性的,然而对于软件计算器这类的纯软件产品可靠性是存在的,这说明软件可靠性是软件自身的一种性质,而软件安全性并不是软件自身的一种性质,两者是截然不同的概念。从可靠性和安全性的定量关系上看也是如此,如果软件中的缺陷仅存在于安全关键的模块中,而安全关键模块又是被较少使用的功能,虽然软件具有很高的可靠性,但系统的安全性却是很低的。相反如果软件中的缺陷存在于非安全关键模块中,而非安全模块是被较多使用的功能,虽然系统具有很高的安全性,但软件的可靠性却是相当低的。当前对软件的安全性普遍存在着认识上的误区。一种有代表性的观点认为“软件可靠性包含了软件安全性,软件安全性是软件可靠性问题的子集”,并由此得出了“软件不安全,一定不可靠;软件可靠,才能安全”的错误结论。

从系统整体的角度,可靠性存在于应用于系统中的软件,对应的安全性则面向整个系统,如图2所示。

图2 可靠性与安全性定义范畴

由软件外部因素所引发的失效并不能定义为软件可靠性的缺失,应属于系统安全性范畴;系统软件通过增加功能或其他保障方式,对一定范围内软件可处理的外部因素进行处理,从而避免外部因素引起的失效,是对系统安全性的提升。系统安全性的提升,也可能导致软件可靠性的下降。

3 结语

软件可靠性工程的目标是如何应用理论知识、科学方法,结合实际领域工程标准要求来指导可靠软件的开发,目前软件可靠性验证处于逐步提升的阶段。软件可靠性定量评估需要软件与硬件的结合,虽然现在硬件设计与生产已有一套可以给定、预测和验证的定量方法,但软件可靠性定量评估仍然非常困难。

在可靠性定量评估技术短期内难以取得突破的情况下,应尽快建立基于软件可靠性定性定义的软件可靠性评价体系。参照软件能力成熟度模型(Capability Maturity Model for Software,SW-CMM)的方法,根据软件开发过程所采用的软件可靠性技术,对软件预期能够达到的可靠性给出评价等级。这样,一方面能够解决国内软件工程实践的需要,另一方面也能够为可靠性定量研究奠定更为良好的基础。

[1]陆民燕.软件可靠性工程[M].北京:国防工业出版社,2011.

[2]原航天工业部第七零八所.GJB/Z 102—97软件可靠性和安全性设计准则[S].北京:航天工业总公司,1997.

[3]全国信息技术标准化技术委员会.GB/T11457—1995信息技术软件工程术语[S].北京:国家标准化管理委员会,1995.

Research on software reliability and safety

Yang Hongshuai

(Heilongjiang Polytechnic,Harbin 150080,China)

This article puts forward the judgement that current qualitative evaluation on the reliability of the software is very necessary and feasible through the discussion and clarification of basic concepts of software reliability and safety,and hopes to find a feasible technical route for future research.

software;reliability;safety

杨宏帅(1975—),男,吉林德惠,硕士,助教;研究方向:机器人。

猜你喜欢

软件可靠性定性定量
分裂平衡问题的Levitin-Polyak适定性
显微定量法鉴别林下山参和园参
当归和欧当归的定性与定量鉴别
软件可靠性工程综合应用建模技术研究
10 种中药制剂中柴胡的定量测定
数控系统软件可靠性设计与故障分析技术
慢性HBV感染不同状态下HBsAg定量的临床意义
简谈使用BoundsChecker进行计算机联锁系统人机界面软件可靠性测试
IEEE软件可靠性系列标准分析*