软件可靠性保证与评测技术

时间:2022-09-12 08:52:44

软件可靠性保证与评测技术

【摘要】本文介绍了软件可靠性评测技术的含义及其组成部分,对软件可靠性评价指标做了详细说明,并提出其在工程应用中的关键问题,提供相应的解决方法。

【关键词】软件可靠性;评测技术

中图分类号:TP311文献标识码: A

一、前言

随着科学技术不断进步,系统中软件成分的不断增加,系统对软件可靠性的要求也越来越高。软件可靠性测评技术受到广泛的重视,本文对软件可靠性评测技术及其可靠性保证进行阐述,为相关人员提供参考。

二、软件可靠性评测技术

软件可靠性测试是指在软件的预期使用环境中,为进行软件可靠性评估而对软件实施的一种测试。软件可靠性测试应该是面向故障的测试,以用户将要使用的方式来测试软件,每一次测试代表用户将要完成的一组操作,使测试成为最终产品使用的预演。这就使得所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性估计。软件可靠性评测由可靠性目标的确定、运行剖面的开发、测试的计划与执行和测试结果的分析与反馈等四个主要的活动组成。

可靠性目标是指客户对软件性能满意程度的期望。通常用可靠度、故障强度、M TTF等指标来描述,根据不同项目的不同需要而定。建立定量的可靠性指标需要对可靠性、交付时间和成本进行平衡。为了定义系统的可靠性指标,必须确定系统的运行模式,定义故障的严重性等级,确定故障强度目标。

为了对软件可靠性进行良好的预计,必须在软件的运行域上对其进行测试,首先定义一个相应的剖面来镜像运行域,然后使用这个剖面驱动测试,这样可以使测试真实的反映软件的使用情况。

在软件的开发过程中使用软件可靠性测试和利用软件可靠性测试对最终产品进行评价,在测试计划的制定上有所不同。软件可靠性故障数据的收集是测试活动的一部分,在测试周期内,纪录每个故障的资料,如与时间相关的故障频度、类型、严重性和故障的根源等,并且应区分设计阶段和最终产品的故障。

可靠性增长测试和可靠性验证测试将从不同的角度理解故障数据。可靠性验证测试是软件系统提交前进行的最后测试。它是最终检验而不是调试。在验证测试中,其目标是确定一个软件组件或系统在风险限度内是被接受还是被拒绝

三、软件可靠性评价指标

根据相关的软件测试与评估要求,可靠性可以细化为成熟性、稳定性、易恢复性等。对于软件的可靠性评价主要采用定量评价方法。选择合适的可靠性度量因子(可靠性参数),然后分析可靠性数据而得到具体参数值,最后进行综合评价。具体的评价指标有:

1)可用度。指软件运行后在任一随机时刻需要执行规定任务或完成规定功能时,软件处于可使用状态的概率。可用度是对应用软件可靠性的综合度量。

2)初期故障率。指软件在初期故障期内单位时间的故障数。一般以每100小时的故障数为单位。初期故障率的大小取决于软件设计水平、检查项目数、软件规模、软件调试彻底与否等因素。

3)偶然故障率。指软件在偶然故障期内单位时间的故障数。一般以每1000小时的故障数为单位,它反映了软件处于稳定状态下的质量。

4)平均故障前时间(MTTF)。指软件在故障前正常工作的平均统计时间。

5)平均故障间隔时间(MTBF)。指软件在相继两次故障之间正常工作的平均统计时间。

6)缺陷密度(FD)。指软件单位源代码中隐藏的缺陷数量。通常以每千行无注解源代码为一个单位。

7)平均故障修复时间(MTTR)。指软件故障后恢复正常工作所需的平均统计时间。对于软件,其故障修复时间为排除故障或系统重新启动所用的时间,而不是对软件本身进行修改的时间。

8)平均不工作时间(MTBD)。指软件系统平均不工作时的间隔时间,MTBD一般比M TBF要长,它反映了系统的稳定性。

9)平均操作错误时间(M TBHE)。指软件操作错误的平均间隔时间。它一般与软件的易操作性和操作人员的训练水平、因软件缺陷造成的不工作时间、因软件缺陷而损失的时间等有关。

10)软件系统不工作时间均值(M DT)。指软件因系统故障不工作时间的平均值。

11)初始错误个数(NC)。指在软件进行排错之前,估计出的软件中含有错误的个数。

12)剩余错误个数(ND)。指在软件经过一段时间的排错之后,估计出软件中含有错误的个数。

四、工程应用中的关键问题及解决方法

在进行软件可靠性评测前,必须对软件执行的功能、运行软件的环境和软件输人的概率分布有准确的了解,并在此基础上建立软件可靠性测试的环境,对测试过程中的失效数据进行记录和分析,并对软件的可靠性水平进行评价。因此,在工程中运用软件可靠性评测技术需要解决软件运行剖面的定义、测试过程的实施和可靠性评价等关键问题口

1、软件运行剖面的定义

为了定义软件运行剖面,首先需要为软件的使用行为建模,建模可以采用Markov链来完成。用Markov链将输人域编码为一个代表用户观点的软件使用的状态集。定义软件运行剖面的下一步是开发使用模型,明确需要测试的内容。软件系统可能会有许多用户和用户类别,每类用户都可能以不同的方式使用系统。开发使用模型涉及到将输入域分层。有两种类型的分层形式用户级分层和用法级分层。用户级分层促使你考虑各种类型的用户以及他们如何使用系统,用法级分层则要求考虑系统能够提供的所有功能。一旦用户和用法模型被开发出来,功能的使用概率将被分配。这些概率估计的主要来源是:①从现有系统收集到的数据,②与用户的交谈或对用户进行观察获得的信息,③原型使用与试验分析的结果,④相关领域专家的意见。定义使用概率的最佳方法是使用实际的用户数据,如来自系统原型、前一版本的使用数据,其次是由该软件应用领域的用户和专家提供的预期使用数据,在没有任何数据可用的情况下,只能每种情况都赋予相同的使用概率,这是最差的一种方法。为了得到能够反映软件使用的有代表性的概率分布。测试人员必须和系统总师、软件系统分析员和软件用户共同合作。

2、软件可靠性测试的组织和实施

有了软件的运行剖面,就可以使用Monte Carlo仿真的形式实施测试。软件可靠性测试必须是受控试验,在运行此类测试时,为了保证统计数据的有效性,测试过程中的每个测试用例必须施加于相同的软件版本。新的软件版本意味着新试验的开始,其测试结果也必须是一致的。

软件可靠性测试同样依赖于软件的可测试性。可靠性测试难点就在于判断测试用例的运行是成功还是失败。在控制系统及类似的软件中,故障有详细说明、时间(通常是CPU时间或时钟时间)来客观的定义。在一些科学计算中,计算结果只能由计算机才能给出,在这种情况下,如果软件只是输出了错误的结果而不是整个系统发生故障,错误就不可能被发觉。此时可以将测试分成两个阶段进行。第一阶段运行较少量的测试用例,并对照规范进行仔细检查。第二阶段再运行大量测试用例。第二阶段不用人工检查输出的每项内容,而是找故障现象,包括错误信息、断电、崩溃和死机。也可把输出记录到文件中,采用搜索或过滤方法进行处理。如果软件有足够的可测试性,这种方法不会漏掉很多的严重故障。如果计算的正确性无法验证,就需要对软件进行一些形式化的证明。

3、软件可靠性的评价

目前,有不少支持软件可靠性评估的软件工具,我们只要将可靠性侧试过程中收集的故障数据分类并录人,选择合适的可靠性模型,就可以获得软件可靠性的评估结果。对于可靠性要求很高的系统,必须进行很多的测试才能预计出高置信度的可靠性,即便如此,仍然可能出现代码不断地被测试而没有出现任何失效的情况。如果在测试期间没有故障发生,我们可以简单地假设测试是基于二项式分布的,这样就可以对可靠性作保守估计,也可以凭经验根据无失效运行的测试用例的数量,在一定的置信度水平上,估计可靠性的等级。

五、结束语

可以说,软件可靠性评测是软件可靠性的保证对于研制和开发高可靠性与高安全性软件系统很有帮助。但目前我们只能在特定领域的软件上进行试验,如果希望工程上获得广泛应用,仍有诸多实际问题需要解决,还需付出更多的努力。

参考文献

[1]Musu .JO.软件可靠性工程[M].韩柯译. 北京:机械工业出版,2003.

[2]刘石,赵玮.软件可靠性研究与进展[J].微机发展,2003,13(2):12一I5.

上一篇:数控车床螺纹加工方法 下一篇:通信工程传输技术的应用探究