一.软件可靠性评价概述
软件可靠性评价是软件可靠性活动的重要组成部分,即适用于软件开发过程,也可以针对最终软件系统。在软件开发过程中使用软件可靠性评价,可以使用软件可靠性模型,估计软件当前的可靠性,以确认是否可以终止测试并发布软件,同时还可以预计软件要达到的相应的可靠性水平所需要的时间个工作量,评价提交软件时的软件可靠性水平。对于最终软件产品,软件可靠性评价结合可靠性验证测试,确认软件的执行与需求的一致性,确定最终软件产品所达到的可靠性水平。
对软件可靠性测试和系统运行期间收集的软件失效数据进行处理,并评估和预测软件可靠性的过程。这个过程包含如下3个方面。
(1)选择可靠性模型。
(2)收集可靠性数据。
(3)可靠性评估和预测。
二.如何选择可靠性模型
对于不同的软件系统,处于不同的可靠性分析目的,模型的适用性是不一样的,但是如何为可靠性评价选择不同的模型却又是一个不小的难题。针对可靠性模型的构成以及使用模型来进行可靠性评价的目的,可从以下几个方面进行比较和选择。
1.模型假设的适用性
模型假设是可靠性模型的基础,模型假设要符合软件系统的现有状况,或与假设冲突的因素在软件系统中应该是可以忽略的。往往一个模型的假设有许多条,我们需要在选用模型的时候对每一条假设进行细致地分析, 评估现有的软件系统中不符合假设的因素对可靠性评价的影响如何,以确定模型是否适合软件系统的可靠性评价工作。
2.预测的能力与质量
预测的能力与质量是指模型根据现在和利时的可靠性数据,预测将来的可靠性和失效概率的能力,以及预测结构的准确程度。显然,模型预测的能力与质量是比较难于评价的,但任何一个模型只有在实践中加以实验和不断改善,才能得到认可。所以,在满足其他条件的前提下,应尽量选用比较成熟、应用比较广泛的模型作为分析模型。
3.模型输出值是否满足可靠性评价的需求
使用模型进行可靠性评价的最终目的,是想得到软件系统当前的可靠性定量数据,以及预测一定时间后的可靠性数据,可以根据可靠性测试目的来确定哪些模型的输出值满足可靠性评价需求。一般来说,最重要的几个需求精确估计的可靠性定量指标包括如下内容:
(1)当前的可靠度。
(2)平均无失效时间。
(3)故障密度。
(4)期望达到规定可靠性目标的日期。
(5)达到规定的可靠性目标的成本要求。
4.模型使用的简便性
模型使用的简便性一般包含如下三层定义
(1)模型需要的数据在软件系统中应该易于收集,而且收集需要投入的成本不能超过可靠性计划的预算。
(2)模型应该简单易懂,进行可靠性分析的软件测试人员不会花费太多的时间去研究专业的数学理论,他们只需要知道哪些假设适用,需要收集哪些数据,能够得到哪些分析结果就可以了。
(3)模型应该便于使用,最好能用工具实现数据的输入。也就是说,测试人员除了输入可靠性数据外,不需要深入模型内部进行一些额外的工作。
尽管这样,由于可靠性研究理论在软件工程领域发展的限制,可供选择的可靠性模型及其有限,这已在相当大的程度上制约可可靠性测试的开展。
三.可靠性数据的采集
面向缺陷的可靠性测试产生的测试数据经过分析后,可以得到非常有价值的可靠性数据,
是可靠性评价所用数据的一个重要来源,这部分数据取决于定义的运行剖面和选取的测试用例集。可靠性数据主要是指软件失效数据,是软件可靠性评价的基础,主要是在软件测试、实施阶段收集的。在软件工程的需求、设计和开发阶段的可靠性活动,也会产生影响较大的其他可靠性数据。因此,可靠性数据的收集工作是贯穿于整个软件生命周期的。 由于软件开发过程中的特殊复杂性及许多潜在因素的影响,可靠性数据收集工作会极为困难。目前,关于数据的收集工作,存在许多有待解决的问题。
(1)可靠性数据的规范不统一,对软件进行度量的定义混乱不清。例如,时间、缺陷、失
效和模型结构等的定义就相当含糊,缺乏统一的标准。这样就使得在进行软件可靠性数据的收集时,目标不明确,甚至无从下手。
(2)数据收集工作的连续性不能保证。可靠性数据的收集是连续的、长期的过程,而且需要投入一定的资金、人力、时间,往往这些投入会在软件的开发计划中被忽略,以至于不能保证可靠性数据收集工作的正常进行。
(3)缺乏有效的数据收集手段。进行数据收集同样需要方便实用的工具,然而除了在可靠性测试方面有了一些可用的数据收集工具外,其他方面的工具还十分缺乏。
(4)数据的完整性不能保证。即使可靠性活动计划做得再周密,收集到的数据仍有可能是不完全的,而且遗漏的数据往往会影响到可靠性评价的结果。
(5)数据质量和准确性不能保证。不完全的排错及诊断,使收集的数据中含有不少虚假的成分,它们不能正确反映软件的真实状况。使用不准确的可靠性数据进行的可靠性评价,误差
有可能会比利用可靠性模型进行预测产生的误差大一个数量级,这说明数据质量的重要性。
为了给软件可靠性评价提供一套准确、有效的可靠性数据,有必要在软件工程中重视软件
可靠性数据的收集工作,采取一些措施尽量解决上述问题。在现有条件下可行的办法如下。
(1)及早确定所采用的可靠性模型,以确定需要收集的可靠性数据,并明确定义可靠性数据规范中的一些术语和记录方法,如时间、失效、失效严重程度类的定义,制定标准的可靠性
数据记录和统计表格等。
(2)制订可实施性较强的可靠性数据收集计划,指定专人负责,抽取部分开发人员、质量保证人员、测试人员、用户业务人员参加,按照统一的规范收集记录可靠性数据。
(3)重视软件测试特别是可靠性测试产生的测试数据的整理和分析,因为这部分数据是用模拟软件实际运行环境的方法、模拟用户实际操作的测试用例测试软件系统产生的数据,对软件可靠性评价和预测有较高的实用价值。
(4)充分利用数据库来完成可靠性数据的存储和统计分析。一方面减少数据管理的混乱,一方面提高数据处理的效率。
四.软件可靠性的评估和预测
软件可靠性的评估和预测的主要目的,是为了评估软件系统的可靠性状况和预测将来一段
时间的可靠性水平。 下面是一些常见的需要利用软件可靠性评价进行解答的问题。
(1)判断是否达到了可靠性目标,是否达到了软件付诸使用的条件,是否达到了中止测试
的条件。
(2)如未能达到,要再投入多少时间、人力和资金才能达到可靠性目标或投入使用。
(3)在软件系统投入实际运行一年或若干时间后,经过维护、升级和修改,软件能否达到
交付或部分交付用户使用的可靠性水平。
目前有不少支持软件可靠性估计的软件工具,只要将收集的失效数据分类并录入,选择合适的可靠性模型就可以获得软件可靠性的评价结果。
软件可靠性评价技术和方法主要依据选用的软件可靠性模型,其来源于统计理论。软件可靠性评估和预测以软件可靠性模型分析为主,但也要在模型之外运用一些统计技术和手段对可靠性数据进行分析,作为可靠性模型的补充、完善和修正。这些辅助方法如下。失效数据的图形分析法。运行图形处理软件失效数据,可以直观地帮助人们进行分析。
(2)试探性数据分析技术 (Exploratory Data Analysis,EDA)。 对于失效数据图形进行一定的数字化分析,能发现和揭示出数据中的异常。这种分析方法常可以发现因排错引入新的缺陷、数据收集的质量问题及时间域的错误定义等问题。