一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件故障个数检测方法、检测系统、存储介质及应用

2022-09-15 06:37:37 来源:中国专利 TAG:


1.本发明属于软件故障数据识别技术领域,尤其涉及一种软件故障个数检测方法、检测系统、存储介质、 设备及应用。


背景技术:

2.在新一代信息通信技术加速演进的带动下,软件产业发展迅猛,软件被赋予了新的使命,人类对软件 功能作用寄予了更大的期望。相应地,软件的形态演化得到了进一步丰富,单机版、网络版、移动版、大 型网购软件平台、大型在线开放课程学习平台、大型社交平台、大型通信平台和开源软件等纷纷涌现,特 别是云计算、大数据、物联网、人工智能、区块链、元宇宙等加剧了“软件定义一切”时代的演进。软件已 成为人们学习、生产、生活等越来越多领域的工具性帮手和抓手。大型复杂软件、工业软件、数值计算与 仿真软件(特别是matlab、cad、cae等类型)、安全类软件、操作系统与数据库等基础软件日益成为亟 需突破的“卡脖子”堵点。软件产业在国民经济和社会发展中所占有的作用越来越重要,因此软件的质量问 题,特别是可靠性属性等必须得到足够的重视。面对这些新变化、新趋势,软件自身的缺陷与质量问题得 到了更多的关注,其可靠安全稳定成为更多关注的焦点。可靠性就是软件众多非质量属性中的重要构成, 成为软件可信安全的基础。软件作为人工制品,基本经过需求分析、概要设计、详细设计、编码、测试、 部署、应用等阶段发布到市场或提供给用户。在这一过程中,不可避免地由于内在设计带来缺陷或者编程 开发而引入错误,使得可靠性问题始终是制约软件质量的重要因素。因此,关于软件可靠性的分析,一直 是计算机或软件工程等学科的重要理论内容,也是软件基础理论与工程分析中需要不断优化改进的问题。
3.以大型复杂软件为例,容易知道,软件发布前必须要经过一定周期的测试与修改,只有达到发布基准 后才能进行发布。由于软件结构的复杂性、测试过程的随机性等多种不确定因素影响,特别是不完美排错 现象的普遍存在,使得软件中故障总数具有较强的随机变动性。软件中总故障个数(本发明标记为a(t))是一 个未知变量,如何在测试阶段尽可能地降低总故障数量,继而提高软件可靠性,是增强软件自身质量领域 的重要主题。深入分析软件中总故障个数a(t),对于可靠性的提高、评估软件测试成本,以及预测软件发 布时间都具有重要的理论意义与现实价值。
4.在当前的软件可靠性分析中,单独分析软件中总故障个数的理论较为匮乏,直接的分析文献亦不多, 这也使得从分析故障总数角度来寻求可靠性提升变得困难。软件可靠性可以借助数学模型来进行建模、度 量与评测,这其中软件可靠性增长模型srgm(software reliability growth model)就是一类重要的工具。srgm 的建模中离不开软件中故障总数的参与,a(t)是必不可少的参数,这已在众多的模型分析中得到了证实。软 件中故障总数a(t)是对软件质量高低的一种刻画,同时其数量的变化还可以描述排错中新故障引入情况[35], 可靠性质量、软件开发与测试资源的投入、软件发布时机等与a(t)紧密相关。
[0005]
在可收集到的文献中,尤其在srgm分析领域,虽在srgm的建立中提出较多的a(t)模型,但重点 完全集中在srgm的建立与评测上,对a(t)本身以及其对模型的影响鲜有涉及。当前的最大困难在于,尽 管提出了众多建模软件中故障总数的数学模型,但由于真实的软件测试中并不知晓具体数值(现有发布的 失效数据集中并不包含此项),因此难以直接验证。
[0006]
通过上述分析,现有技术存在的问题及缺陷为:
[0007]
(1)挖掘可靠性分析中,软件故障总数对测试资源分配、可靠性变动影响以及最优发布等具有重要意 义,但迄今为止鲜有从故障总数的角度进行可靠性分析;针对贴近真实测试环境的不完美排错等问题,对 软件中故障总数相关的可靠性增长模型进行深入分析和系统述评很关键。进而分析软件中故障总数对可靠 性的变动影响;但现有技术由于缺乏从故障总数的角度进行可靠性分析,使得对软件故障检测的数据信息 准确率低。


技术实现要素:

[0008]
为克服相关技术中存在的问题,本发明公开实施例提供了一种软件故障个数检测方法、系统、介质、 设备及应用,具体涉及一种基于不完美排错模型的软件故障个数检测方法及系统。
[0009]
所述技术方案如下:一种基于不完美排错模型的软件故障个数检测方法,应用于数据信息处理终端, 所述基于不完美排错模型的软件故障个数检测方法包括:
[0010]
s1,软件失效满足nhpp过程;
[0011]
s2,分析在(t δt)内检测到的故障数量与当前软件中剩余的故障数量成比例;
[0012]
s3,软件修复过程中存在排错的不完全性和新故障引入;
[0013]
s4,软件排错的过程中,存在新故障被引入,把故障总数作为累积检测到的故障数量m(t)的一个参数, 将m(t)与真实的失效数据集中的累积检测到的故障数量进行拟合与预测;
[0014]
s5,针对软件中故障总数的变动与累积检测的故障或修复的故障个数的关联,进行(t δt)内引入故障个 数与当前检测或修复的故障个数比例分析。
[0015]
在一个实施例中,通过步骤s1-步骤s4,得到下式所示的方程组:
[0016][0017]
其中,第一个微分方程为建模故障检测与不完全修复的过程模型,b(t)为t时刻的故障检测率,是当前时刻 软件测试环境下对故障检测的整体描述;p(t)表示t时刻的故障被成功排除(修复)的概率,被设定为时间 t的函数,表明测试中存在排错的不完全现象;p(t)
·
m(t)表示t时刻累积修复的故障数量;第二个方程中a(t) 为t时刻软件总的故障个数,是随着测试时间t变化的动态函数。f(t)代表a(t)的某种函数,可以存在多种表 达形式。
[0018]
在一个实施例中,在建模故障检测与不完全修复的过程模型中,在m(0)=0的初始条件下,求得m(t) 的表达式如下:
[0019][0020]
则当前的失效率λ(t)为:
[0021][0022]
测试阶段的软件可靠性r(t|x),即假定软件上一次失效时间是x(x≥0,t》0),则在(x,x t)内的软件可靠 性表示为:
[0023]
r(t|x)=e-[
m(x t)-m(x)
]

[0024]
从x=0开始,将m(t)的表达式带入当前的失效率λ(t)式,则得到可靠性r(t)与a(t)的关系,如下式所 示:
[0025][0026]
a(t)与可靠性r(t)相关,r(t)是a(t)的函数;随着a(t)的增长变动,r(t)也随之发生增长提高。
[0027]
在一个实施例中,在m(0)=0和a(0)=a的初始条件下,求得a(t)的表达式包括:
[0028]
若a(t)=c a(1-e-αt
),在m(0)=0的初始条件下,则求得m(t)如下:
[0029][0030]
此时,a(t)为有限个数增长,a(t

∞)=c a。;
[0031]
若a(t)=ae
αt
,在m(0)=0的初始条件下,则求得m(t)如下:
[0032][0033]
此时,a(t)为无限个数增长,a(t

∞)

∞;
[0034]
若a(t)=a(1 αt),在m(0)=0的初始条件下,则求得m(t)如下:
[0035][0036]
此时,a(t)为无限个数增长,a(t

∞)

∞;
[0037]
若a(t)=a(1 rt)2,在m(0)=0的初始条件下,则求得m(t)如下:
[0038][0039]
此时,a(t)为无限个数增长,a(t

∞)

∞;
[0040]
若a(t)=a αm(t),在m(0)=0的初始条件下,则求得m(t)如下:
[0041][0042]
此时,a(t)为无限个数增长,a(t

∞)

∞。
[0043]
在一个实施例中,在步骤s5利用针对排错的不完全性与引入新故障的不完美排错模型分析软件中故障 总数的变动与累积检测的故障或修复的故障个数的关联,进行(t δt)内引入故障个数与当前检测或修复的故 障个数比例分析;针对排错的不完全性与引入
新故障的不完美排错模型为
[0044][0045]
其中,m(t)表示[0,t]内累计检测到的故障数量,a(t)表示软件中的总故障个数,针对引入新故障,a(t) 呈增长趋势;且[0,t]内累计检测到的故障数量与当前剩余的故障数量的成比例,比例为故障检测率b(t);
[0046]
上式中,第一个方程式为:建模故障检测与不完全修复的过程模型,p(t)表示t时刻的故障被成功排除 (修复)的概率;第二个方程式为分析故障修复中引入新故障的模型;第一个方程式与第二个方程式分别 描述a(t)变化率与检测的故障个数变化率成比例,其中β(t)表示排错过程中引入的故障概率。
[0047]
当故障修复是完全时,即p(t)=1时,针对排错的不完全性与引入新故障的不完美排错模型演变为完全 修复且引入新故障模型;当0《p(t)《1时,针对排错的不完全性与引入新故障的不完美排错模型演变为不完 全修复且引入新故障模型;当p(t)=1且β(t)=0,或不考虑第二个方程式时,针对排错的不完全性与引入 新故障的不完美排错模型演变为经典的g-o模型。
[0048]
在一个实施例中,令式的边界条件是:m(t)=0和a(t)=a; 通过微分求解得关键的故障数量m(t)和软件中的总故障个数a(t):
[0049][0050][0051]
上式由故障检测率b(t)、故障修复概率p(t)以及故障引入率β(t)参变量函数决定,这些参变量函数根 据实际情况进行设定。
[0052]
本发明的另一目的在于提供一种基于不完美排错模型的软件故障个数检测系统包括:
[0053]
软件失效判断模块,用于软件失效满足nhpp过程判断;
[0054]
故障数量与当前软件中剩余的故障数量成比例分析模块,用于分析在(t δt)内检测到的故障数量与当前 软件中剩余的故障数量成比例;
[0055]
排错不完全性和新故障引入模块,用于软件修复过程中存在排错的不完全性和新故障引入;
[0056]
新故障被引入分析模块,用于分析软件排错的过程中,存在新故障被引入,把故障总数作为累积检测 到的故障数量m(t)的一个参数,将m(t)与真实的失效数据集中的累积检测到的故障数量进行拟合与预测;
[0057]
故障个数分析模块,用于针对软件中故障总数的变动与累积检测的故障或修复的故障个数的关联,进 行(t δt)内引入故障个数与当前检测或修复的故障个数比例分析。
[0058]
本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程
序使电子设备执行所 述基于不完美排错模型的软件故障个数检测方法。
[0059]
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储 有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述基于不完美排错模型的软 件故障个数检测方法。
[0060]
本发明的另一目的在于提供一种所述基于不完美排错模型的软件故障个数检测方法在大型复杂软件、 工业软件、数值计算与仿真软件、安全类软件、操作系统与数据库基础软件故障检测上的应用
[0061]
结合上述的所有技术方案,本发明所具备的优点及积极效果为:
[0062]
第一、针对上述现有技术存在的技术问题以及解决该问题的难度,紧密结合本发明的所要保护的技术 方案以及研发过程中结果和数据等,详细、深刻地分析本发明技术方案如何解决的技术问题,解决问题之 后带来的一些具备创造性的技术效果。具体描述如下:
[0063]
本发明对软件中故障总数进行了全面分析,系统地区分了其不同的类型,对其基本功能、函数模型、 作用成效进行了深刻阐述,这是软件可靠性分析领域首次对此进行分析;
[0064]
首次从软件中总故障个数的角度,建立了统一的不完美排错框架模型,形成了覆盖总故障个数变化率 多种形式紧密相关的软件可靠性增长模型;
[0065]
本发明通过在多个实际应用场景下的真实失效数据集上的综合实验,进行基于拟合度量与预测分析的 影响以评测软件中总故障个数建模与验证,系统分析了软件中总故障个数对可靠性模型的扰动影响,为深 入剖析不同模型之间的差异和选择模型提供了有重要价值的参考借鉴。
[0066]
本发明的验证方法是在建立的软件故障检测或修复模型中,把故障总数作为累积检测到的故障数量m(t) 的一个参数,将m(t)与真实的失效数据集中的累积检测到的故障数量进行比较(拟合与预测),从而间接的 表明故障总数的准确性。
[0067]
本发明在前期大量分析的基础上,本发明主要关注a(t)对srgm模型的影响,重点剖析a(t)的建模与 评估,通过建立统一的不完美排错模型观测不同a(t)对可靠性带来的变化,进而衡量各种a(t)的性能差异。 同时,本发明具备描述新故障引入能力的a(t)的不同形式对srgm模型的扰动影响。
[0068]
第二,把技术方案看作一个整体或者从产品的角度,本发明所要保护的技术方案具备的技术效果和优 点,具体描述如下:
[0069]
本发明首先,对软件可靠性增长模型srgm(software reliability growth mode)进行评述,给出分析主题、 本质与技术内涵,引出软件中故障总数分析.从排错的不完全角度下融入不同的引入新故障模型视角,建 立不完美排错模型,分类分析多种情况下软件中故障总数与累积检测到的故障数量二者的变动情况;然后, 从排错的不完全性与引入新故障的角度,建立统一的二元一阶不完美排错微分方程组描述软件测试过程, 求解得到相应的故障总数与累积检测故障数量表达式;对上述两大类情况下不完美排错模型在多个真实计 算机工程系统失效数据集上进行验证,从拟合与预测角度分析不同模型的性能,进而分析软件中故障总数 对可靠性的变动影响.结果表明,故障总数对可靠性模型具有明显影响,其自身性能能够支撑可靠性的增 长与性能提升。
附图说明
[0070]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起 用于解释本公开的原理。
[0071]
图1是本发明实施例提供的基于不完美排错模型的软件故障个数检测方法流程图;
[0072]
图2(a)是本发明实施例提供的ds1上拟合曲线;
[0073]
图2(b)是本发明实施例提供的ds2上拟合曲线;
[0074]
图2(c)是本发明实施例提供的ds3上拟合曲线;
[0075]
图2(d)是本发明实施例提供的ds4上拟合曲线;
[0076]
图2(e)是本发明实施例提供的ds5上拟合曲线;
[0077]
图2(f)是本发明实施例提供的ds6上拟合曲线;
[0078]
图2(g)是本发明实施例提供的ds7上拟合曲线;
[0079]
图2(h)是本发明实施例提供的ds8上拟合曲线;
[0080]
图2(i)是本发明实施例提供的ds9上拟合曲线;
[0081]
图2(j)是本发明实施例提供的ds
10
上拟合曲线;
[0082]
图2(k)是本发明实施例提供的ds
11
上拟合曲线;
[0083]
图2(l)是本发明实施例提供的ds
12
上拟合曲线;
[0084]
图3(a)是本发明实施例提供的ds1上预测曲线;
[0085]
图3(b)是本发明实施例提供的ds2上预测曲线;
[0086]
图3(c)是本发明实施例提供的ds3上预测曲线;
[0087]
图3(d)是本发明实施例提供的ds4上预测曲线;
[0088]
图3(e)是本发明实施例提供的ds5上预测曲线;
[0089]
图3(f)是本发明实施例提供的ds6上预测曲线;
[0090]
图3(g)是本发明实施例提供的ds7上预测曲线;
[0091]
图3(h)是本发明实施例提供的ds8上预测曲线;
[0092]
图3(i)是本发明实施例提供的ds9上预测曲线;
[0093]
图3(j)是本发明实施例提供的ds
10
上预测曲线;
[0094]
图3(k)是本发明实施例提供的ds
11
上预测曲线;
[0095]
图3(l)是本发明实施例提供的ds
12
上预测曲线;
[0096]
图4(a)是本发明实施例提供的ds2上a(t)曲线;
[0097]
图4(b)是本发明实施例提供的ds3上a(t)曲线;
[0098]
图4(c)是本发明实施例提供的ds4上a(t)曲线;
[0099]
图4(d)是本发明实施例提供的ds5上a(t)曲线;
[0100]
图4(e)是本发明实施例提供的ds7上a(t)曲线;
[0101]
图4(f)是本发明实施例提供的ds8上a(t)曲线;
[0102]
图4(g)是本发明实施例提供的ds9上a(t)曲线;
[0103]
图4(h)是本发明实施例提供的ds
11
上a(t)曲线;
[0104]
图4(i)是本发明实施例提供的ds
12
上a(t)曲线。
具体实施方式
[0105]
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详 细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在 此描述的其他方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不 受下面公开的具体实施的限制。
[0106]
一、解释说明实施例:
[0107]
如图1所示,本发明实施例提供一种基于不完美排错模型的软件故障个数检测方法,应用于数据信息 处理终端,所述基于不完美排错模型的软件故障个数检测方法包括:
[0108]
s101,软件失效满足nhpp过程;
[0109]
s102,分析在(t δt)内检测到的故障数量与当前软件中剩余的故障数量成比例;
[0110]
s103,软件修复过程中存在排错的不完全性和新故障引入;
[0111]
s104,软件排错的过程中,存在新故障被引入,把故障总数作为累积检测到的故障数量m(t)的一个参 数,将m(t)与真实的失效数据集中的累积检测到的故障数量进行拟合与预测;
[0112]
s105,针对软件中故障总数的变动与累积检测的故障或修复的故障个数的关联,进行(t δt)内引入故障 个数与当前检测或修复的故障个数比例分析。
[0113]
本发明实施例还提供一种基于不完美排错模型的软件故障个数检测系统包括:
[0114]
软件失效判断模块,用于软件失效满足nhpp过程判断;
[0115]
故障数量与当前软件中剩余的故障数量成比例分析模块,用于分析在(t δt)内检测到的故障数量与当前 软件中剩余的故障数量成比例;
[0116]
排错不完全性和新故障引入模块,用于软件修复过程中存在排错的不完全性和新故障引入;
[0117]
新故障被引入分析模块,用于分析软件排错的过程中,存在新故障被引入,把故障总数作为累积检测 到的故障数量m(t)的一个参数,将m(t)与真实的失效数据集中的累积检测到的故障数量进行拟合与预测;
[0118]
故障个数分析模块,用于针对软件中故障总数的变动与累积检测的故障或修复的故障个数的关联,进 行(t δt)内引入故障个数与当前检测或修复的故障个数比例分析。
[0119]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参 见其它实施例的相关描述。
[0120]
上述装置/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其具体 功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0121]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划 分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述 装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能 单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集 成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另 外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统 中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不
再赘述。
[0122]
为便于理解本发明的改进技术方案,下面结合与本发明技术方案相关知识、前期成果以及本发明的改 进作进一步描述。
[0123]
1、srgm分析内容、技术分析
[0124]
自1978年以来,非齐次泊松过程nhpp(non-homogeneous poisson process)类型的srgm一直是分析 的主流,主要包括以g-o模型
[37]
及其改进为代表的指数型和以yamada模型为代表的s型模型
[38]
,均是对 故障检测与修复过程进行建模,进而求得能够表征软件可靠性的累积检测的故障数量(即m(t)函数)。从检 测与修复的故障数量角度来分析可靠性的增长是srgm分析的切入点,显然,被检测到的故障不断被排除, 可靠性势必会得到提高。
[0125]
科研人员通过对测试过程的建模,得到[0,t]内累积检测的故障数量(这里标记为m(t)),并利用真实 的失效数据集进行验证。建模中,通常自行设定软件中总故障个数a(t)的表达式,以及故障检测率(这里 标记为b(t))等。需要指出,假设上的差异是不同srgms存在区别的根本原因,这种差异导致最终求解得 到的m(t)存在巨大差异。应用srgm进行可靠性分析是对可靠性进行建模和评测的主要手段。基于本发明 前期的大量工作,科研人员基于对测试过程的认知下进行srgm建模中涉及到软件可靠性分析相关的测试 过程、分析内容、srgm的效用以及相应的技术对应关系。
[0126]
目前,与srgm紧密相关的分析领域整体上呈现了如下的技术演进路线:传统基于微分方程(组)建模 测试过程中故障检测至修复过程的解析方法(包含基于队列的分析)、基于仿真的分析方法(典型的如离散事 件仿真)和最优化技术。
[0127]
srgm的分析基本呈现了如下的发展态势,大致包括了六个方面的分析主题,所采取的具体技术也有 所不同,总体而言,srgm分析主题可以概括为四个层面,即srgm本身关于模型建立用以评测可靠性的 分析、基于测试资源分配进行成本管控以决定最优发布的分析、采用仿真技术对测试过程进行模拟的分析, 以及对众多模型的决策选择分析。
[0128]
软件可靠性分析涉及到多种实际因素,具有复杂的随机过程特点,涵盖了完整的测试过程,包括至少 如表1所示的分析内容和技术,是理论分析与可靠性工程和软件工程相结合的重要实践。
[0129]
在srgm的建模中,考虑到对测试过程认知与假设的不同而先后衍生出众多的模型,这些模型中均 含有故障总数a(t)这一关键性的参变量,这已经成为可靠性分析领域的基本共识。例如,在早期的g-o模 型中,建立了如下所示的软件可靠性模型:
[0130][0131]
该模型认为[0,t]时间内累积检测的故障数量是m(t),并假定软件开始测试时内部的总故障数量是a常量, 假设t时刻检测的故障数量(实际上是t时刻故障变化率)与当前软件中剩余的故障数量(即a-m(t))成正比 (比例系数是b),这样就可以得出(1)式,在m(0)=0的初始条件下,进而求解得到m(t)=a(1-e-bt
)。此 外,软件在测试阶段的可靠性r(t|x)可表示为
[0132]
r(t|x)=e-(m(x t)-m(x)) (2)
[0133]
这里,x为软件上次失效的时刻,为简化,设x从0开始计时,并将(1)式求解的结果
带入(2)式中,则 可以得到(0,t]内软件的可靠性:
[0134][0135]
由此可见,故障总数不仅是可靠性建模中必不可少的要素,也决定着可靠性的增长,是对可靠性进行 建模与度量的核心支撑。
[0136]
特别指出,软件可靠性分析遵从如下默认规则。
[0137]
(1)srgm分析隐含基础是面向大规模软件系统;
[0138]
(2)在本发明前期所搜集的大量失效数据集fds(failure data set)中,全部来自知名公司或机构开发 大型软件测试过程中发布的失效数据。
[0139]
2、软件中故障总数分析回顾
[0140]
测试阶段,随着软件规模和复杂度的不断上升,软件中故障总数是测试人员关注的一个重要方面。在 可查证的当前srgm分析文献中,软件中故障总数和故障检测率fdr(通常用b(t)来表示)均作为参与模 型建立的必不可少参数,是支撑可靠性分析的重要元素。在srgm的分析中,软件中故障总数a(t)是必不 可少的参数,且故障总数a(t)的变化可以描述排错中新故障引入情况:
[0141]

若a(t)=a常量,表明排错中无新故障引入。这种情况虽与真实的测试过程不相符合,但可以简化问 题分析的复杂程度,对于分析软件可靠性的增长趋势具有指导意义;
[0142]

若a(t)=f(t),是随着测试时间t的增函数,这种情况考虑到了程序员在软件修复中存在引入新故障的 可能,使得所建立的测试模型更加准确,但有时f(t)的复杂会使得模型求解变得困难。
[0143]
经过大量文献的分析,可以得到关于a(t)的事实包括如下几个方面:
[0144]

认为a(t)=a,是常量;
[0145]

设定a(t)为某种随着测试时间t或m(t)或w(t)递增的函数;
[0146]

a(t)》m(t),[a(t)-m(t)]表示软件中剩余的故障总数。
[0147]
易知,实际的测试过程中,由于存在新故障的引入,软件中总故障个数应该随测试与修改的进行发生 增加性变化。因此,设定a(t)=a并不合理,但在很多时候,可以简化问题分析的复杂度,且总体上可以得 到明确的趋势性结论。
[0148]
相比于m(t)可以借助于失效数据集中公开的、真实的被检测故障数量(可以表示为n(t))来进行验证,a(t) 难以直接验证,这成为了分析a(t)的最大障碍,成为当前分析的最大不足之一。
[0149]
软件测试与排错人员希望将全部故障排除掉,获得高可靠性,但这并非易事也不现实。
[0150]
首先软件中总的故障个数是未知的(虽然可以假定为有限或无限个数),根本无法确定;
[0151]
软件在排错过程中因排错的不彻底性以及引入新故障现象使得总故障个数会增加。
[0152]
为此,设定a(t)为t的某种增函数形式较为常见,在本发明前期分析的基础上,这里将其归为表1中的 五大类型.
[0153]
表1软件中总故障个数a(t)分析
[0154][0155]
可以看出,这些分析中,主要是认为a(t)与测试时间或检测到的故障数m(t)成某种比例关系:
[0156]

虽然有时设定a(t)=a使得建模求得的a(t)具有较好的性能,但真实的故障修复过程中会产生新故障 而被引入到软件中,因此设定a(t)为常量是不合理的;
[0157]

这样有分析设定a(t)为t的表达式,本发明认为这并没有本质地反应出a(t)的变化情况,没有厘清 a(t)具体与何变量关系密切的问题;
[0158]

显而易见,m(t)只是当前t时刻被检测出来的故障,是a(t)的一部分而已,因此二者理应有较为密切 的关联,因此有分析设定a(t)=a αm(t)或有其一定的合理性;
[0159]

另外,考虑到新故障引入是在软件修复的过程中发生的,因此a(t)与当前累积修复的故障数量r(t) 有较为密切的关联。易知,r(t)≤m(t)≤a(t)。因此,从r(t)的角度来建模a(t)亦具有一定的合理性。
[0160]
对于表1中三类a(t)的基本形状,其中设定a=50,α=0.25,b=0.35,r=0.25,t∈[0,20],(m(t)采用 经典的g-o模型(即m(t)=a[1-e-bt
])。
[0161]
表1中三类a(t)所对应的m(t)的基本形状,其中设定a=50,α=0.25,b=0.35,c=20,p=1,r=0.25, t∈[0,20]。
[0162]
可以看出a(t)的曲线增长形状可大致分为三类:凸型指数增长、凹型指数增长与线性增长;同时,在 故障检测率b(t)与故障修复概率p(t)固定为常数的情况下,a(t)与m(t)在曲线形式上较为相似,即图像的凹 凸性、增减性都大致一致。
[0163]
在有效的测试环境下,m(t)不断增长并与软件中故障综述a(t)就会更加接近(m(t)≤a(t)),因此二者在曲 线变动上存在着较强的相似性。多数srgm模型呈现指数型增长中,这与文献指出的当前绝大多数srgm 属于指数型增长趋势相符合。
[0164]
3、软件中总故障个数相关的不完美排错模型建模与性能影响评测
[0165]
3.1软件中总故障个数相关的不完美排错模型建模
[0166]
相比较现有技术完美排错模型,真实的软件测试过程是多种随机因素影响的复杂过程,典型地,排错 的不完全性和新故障引入是两种真实存在的现象,是真实的不完美排错过程集中反应。排错的不完全性是 一种不完美排错,排错中引入新故障也是一种不完美排错,这里不完美排错主要集中在排错的不完全或新 故障引入上。因此,本发明将从不完美排错的角度,建立软件中故障总数相关的srgm,分析故障总数对 srgm的影响。
[0167]
首先,基于srgm建立的公共假设,增加关于不完美排错相关的内容,形成如下假设:
[0168]

软件失效满足nhpp过程;
[0169]

在(t δt)内检测到的故障数量与当前软件中剩余的故障数量成比例;
[0170]

软件修复过程中存在排错的不完全性和新故障引入现象。
[0171]
3.1.1第一种不完美排错模型情况——直接设定总故障个数表达式
[0172]
第一种情况下,分析人员直接设定故障总数为某函数形式,用以建模测试中故障总数的增长情况,为 此本发明增加下面的假设:
[0173]

软件排错的过程中,存在新故障被引入现象,软件中故障总数是测试时间t的某种增函数。
[0174]
在假设



的基础上,可以得到式如式(4)所示的方程组:
[0175][0176]
这其中,第一个微分方程建模故障检测与不完全修复的过程模型,b(t)为t时刻的故障检测率,是当前时刻 软件测试环境下对故障检测的整体描述;p(t)表示t时刻的故障被成功排除(修复)的概率,可被设定为时 间t的函数,表明测试中存在排错的不完全现象;p(t)
·
m(t)表示t时刻累积修复的故障数量;第二个方程中 a(t)为t时刻软件总的故障个数,是随着测试时间t变化的动态函数。
[0177]
式(4)中,当只考虑第一个子式时,在m(0)=0的初始条件下,可求得m(t)的表达式如下:
[0178][0179]
则当前的失效率λ(t)为:
[0180][0181]
测试阶段的软件可靠性r(t|x),即假定软件上一次失效时间是x(x≥0,t》0),则在(x,x t)内的软件可靠性可 表示为:
[0182]
r(t|x)=e-[m(x t)-m(x)]
ꢀꢀ
(7)
[0183]
若假定从x=0开始,将式(5)带入(6)式,则可以得到可靠性r(t)与a(t)的关系,如下式所示:
[0184][0185]
可见,a(t)与可靠性r(t)紧密相关,r(t)是a(t)的函数。随着a(t)的增长变动,r(t)也随之发生增长提高。因 此,分析a(t)可以成为掌握r(t)变动以及最优发布的重要方法。
[0186]
a(t)主要被设定为如下五种形式,在m(0)=0和a(0)=a的初始条件下,可以求得a(t)的表达式如下面五 种情况所示:
[0187]
若a(t)=c a(1-e-αt
),在m(0)=0的初始条件下,则可求得m(t)如下:
[0188][0189]
此时,a(t)为有限个数增长,a(t

∞)=c a。
[0190]
若a(t)=ae
αt
,在m(0)=0的初始条件下,则可以求得m(t)如下:
[0191][0192]
此时,a(t)为无限个数增长,a(t

∞)

∞。
[0193]
若a(t)=a(1 αt),在m(0)=0的初始条件下,则可以求得m(t)如下:
[0194][0195]
此时,a(t)为无限个数增长,a(t

∞)

∞。
[0196]
若a(t)=a(1 rt)2,在m(0)=0的初始条件下,则可以求得m(t)如下:
[0197][0198]
此时,a(t)为无限个数增长,a(t

∞)

∞。
[0199]
若a(t)=a αm(t),在m(0)=0的初始条件下,则可以求得m(t)如下:
[0200][0201]
此时,a(t)为无限个数增长,a(t

∞)

∞。
[0202]
3.1.2第二种不完美排错模型情况——从微分方程角度设定总故障个数的变化率
[0203]
第二种情况下,认为软件中故障总数的变动与累积检测的故障或修复的故障个数有关联,为此本发明 在第一种情况下增加下面的假设:
[0204]

在(t δt)内引入的故障个数与当前检测或修复的故障个数成比例。
[0205]
另一方面,可以知道,新故障引入是在故障修复的过程中,由于程序员对程序结构的改动而发生的, 相比较于a(t)变化率与检测的故障个数变化率成比例,a(t)变化率与修复的故障个数变化率成比例更加靠近 真实的测试过程,因此,本发明提出了下面的考虑排错的不完全性与引入新故障的不完美排错模型:
[0206][0207]
其中,m(t)表示[0,t]内累计检测到的故障数量,a(t)表示软件中的总故障个数,由于考虑到引入新故障 情况,故a(t)呈增长趋势。该微分方程建立的假设基础为:[0,t]内累计检测到的故障数量与当前剩余的故 障数量的成比例,比例为故障检测率b(t)。第1个子式建模刻画了故障检测与修复的模型,p(t)表示t时刻 的故障被成功排除(修复)的概率。第2个子式建模描述了故障修复中引入新故障的模型,分别描述了a(t) 变化率与检测的故障个数变化率成比例,其中β(t)表示排错过程中引入的故障概率。
[0208]
显然,当认为故障修复是完全时,即p(t)=1时,式(9)演变为完全修复且引入新故障模型;当0《p(t)《1 时,式(14)演变为不完全修复且引入新故障模型;当p(t)=1且β(t)=0,或不考虑第2个子式时,式(14)演 变为经典的g-o模型。
[0209]
上式在求解上较为复杂,为降低复杂度,考虑到求解的方便可行性和不影响模型的整体功效,不妨令 p(t)=p。上式的边界条件是:m(t)=0和a(t)=a。
[0210]

[0211]
x(t)=a(t)-p
·
m(t)
ꢀꢀ
(15)
[0212]
对两边同时求微分得
[0213][0214]
将(14)中第2个子式代入(16)式中可得
[0215][0216]
将(14)中第1个子式代入(17)式中可得
[0217][0218]
将(15)式代入(18)式中可得
[0219][0220]
由初始条件可得x(0)=a(0)-p
·
m(0)=a。则由一阶齐次线性微分方程的通解,可得(19)式解为
[0221][0222]
将(15)式代入(14)中第1个子式可得
[0223][0224]
将(20)式代入(21)式中可解得
[0225][0226]
将(22)式代入(14)中第2个子式中可解得
[0227]
[0228]
这种情况下,关键的故障数量表达式m(t)和a(t)均是求解出来,且具体由3个参变量函数来决定,即故 障检测率b(t)、故障修复概率p(t),以及故障引入率β(t),这些参变量函数可根据实际情况进行设定,这 为模型的框架性、统一性和柔韧性提供了支撑。这为srgm所关注的a(t)等信息提供了更为客观的依据, 且更加直接地反映出实际因素的变动情况。
[0229]
3.1.3理论验证
[0230]
1)关于a(t)的两种情况
[0231]
第一种情况中,a(t)被分析人员直接设定为某种函数表达式,或随着测试时间t增长,或指数增长,或 随着m(t)增长。这些类型从不同角度建模了a(t)的增长,整体上符合人们对测试过程的认识,具有一定的有 效性。
[0232]
相比较于直接设定a(t)的表达式,第二种情况中,给出了a(t)的增长率与软件测试中累积检测与修复 的故障数量的紧密关系,更加客观地描述了测试中故障检测与排除的内在本质。da(t)/dt与dm(t)/dt成比例, 表明随着故障不断被检测出来的同时,新故障被不断引入;da(t)/dt与d[p(t)
·
m(t)]/dt成比例,表明故障修复 的过程中,新故障被不断引入。易知,新故障引入是在故障修复的过程中发生的,因此后者更加符合真实 的测试过程。
[0233]
两种情况中,直接设定a(t)=a αm(t),与设定具有等价性,但由于参数 不同,因而在具体的模型性能评价(拟合和预测)中会略有差异。
[0234]
2)关于验证方式的有效性
[0235]
关于所提出的模型验证,由于当前失效数据集中尚未发布关于软件总故障的信息,因此无法直接验证, 只能通过建模求解得到的m(t)与失效数据集中累积检测到的故障个数进行验证。显然,这种验证具有间接 性。
[0236]
自1978年g-o模型提出至今,有数百个srgms被提出,在其假设中均包含上面的假设

,并据此 建立了形式各异的微分方程。本发明所建立的微分方程涵盖了当前分析的各种形式,是一种框架模型:
[0237][0238]
该微分方程对测试过程中的故障检测(与修复)过程 进行了建模,式中b(t)是故障检测率函数,数值在(0,1)间;p(t)是故障修复概率,数值在(0,1)间。a(t)可 取为常量,也可设定为t的某种增函数,也可以通过其增长率da(t)/dt的形式来进行设定。可以看出,根据 需要可对b(t)、p(t)和a(t)进行设定,可以得到多种现存的模型。
[0239]
上面关于a(t)两种情况的六种形式,都是当前分析中对测试过程中关于a(t)的某种认知,因此在一定程 度上刻画了测试过程中故障总个数的变化情况。这样,在上面的框架式模型中,结合融入各种a(t)模型, 所得到的m(t)和a(t)具有典型性和实用性,可以成为验证a(t)有效性与否的一个视角。因此,这里所建立的 模型具有典型性和合理性。
[0240]
4、模型性能影响评测
[0241]
4.1模型选择
[0242]
本发明将前述所得到的模型在真实的失效数据集上进行实验验证,用以分析a(t)
对模型的影响。这些 数据集均来自于真实的工程,由不同的公司对外发布。
[0243]
故障检测率fdr:b(t)用以描述当前测试环境下故障被检测出的程度大小,故障修复概率p(t)表示当前修 复环境下故障被修复的概率,二者均与整体测试策略(技术、工具、测试人员技能等)、修复策略等紧密相 关,可存在多种函数形式。这里主要关注于a(t)对模型的影响,不失一般性,不妨设定b(t)=b常量,p(t)=p 常量。不完美排错就是不断放宽传统完美排错中假设的条件,使之考虑的实际因素越来越靠近真实情况。 鉴于不完美排错更加真实地描述了实际的测试过程,这里本发明拟选择6个典型的不完美排错相关的 srgms(如表2所示)在12个数据集(ds1—ds6、ds7、ds8—ds
9[
、ds
10
—ds
12
)上来进行验证,据此 分析不同类型故障总数下不同模型的本质差异所在。
[0244]
表2a(t)视角下典型不完美排错相关的srgms
[0245][0246]
不失为一般性,在实验中统一将式(6)~(10)中的故障检测率b(t)设置为常量b,故障排除率p(t)设置为常 量p,重点关注不同总故障数量a(t)在框架模型中的性能表现。带入常量后的框架模型所对应的累计故障检 测数量函数表达式如表3所示.
[0247]
表3软件总故障数量函数a(t)在框架模型中对应的m(t)
[0248][0249]
对上述不完美排错相关的srgm在公开发表的多个真实计算机工程系统失效数据集上进行实验,观测 不同模型的性能,进行比较。另一方面,从拟合与预测角度分析失效数据集与srgm的关系及影响,并对 srgm中的参函数进行剖析,涵盖如下几者间的影响:srgm中的参函数进行剖析,涵盖如下几者间的影响:以及最后,从发布方与科研人员视角对当前失效数据集的不足进行分析,并 据此给出软件最优发布与失效数据集发布的建议,为后续srgm的决策分析进行铺垫.
[0250]
4.2拟合性能实验与分析
[0251]
本发明提供了12个公开发表的失效数据集的累计检测故障数量曲线与本发明参与比较的srgm模型 估计值曲线,参与对比分析的模型在ds1~ds
12
的拟合曲线图中,如图2(a)-图2(l)所示。其中模型的拟 合曲线越接近于真实的失效数据曲线表明拟合效果越好。
[0252]
图2(a)-图2(l)中,十字曲线为y-lin;星号曲线为p-n-z-model;黑点曲线为p-z-model;斜叉号曲 线为p-z;矩形曲线为pham;菱形曲线为ohba-chou;向上三角号曲线为m-7;向下三角号曲线为m-8; 向右三角号曲线为m-9;向作三角号曲线为m-10;五星曲线为m-11;六星曲线为m-112.
[0253]
通过比较已有模型(y-lin~ohba-chou)与本发明提出的框架模型(m-7~m-11和m-12)对应的拟合 曲线能验证本发明的框架模型的合理性。另外,由于模型m-7~m-11均是在统一的框架模型下固定故障检 测率b(t)=b、故障排除率p(t)=p,带入不同软件总故障数量函数推导而来,故分析模型m-7~m-11在各种数 据集上的表现可以估计a(t)性能的优劣性。从不同数据集上的实验拟合曲线结果可以看出:
[0254]
(1)整体上,除了m-3在ds8、ds12上的拟合曲线与失效数据集曲线出现严重偏差以外,其他模型 的拟合结果与失效数据集保持一致。这说明本发明提出的基于nhpp假设的两
个框架模型——直接设定总 故障函数与微分求解总故障函数具有可行性,带入不同形式的总故障函数a(t)与故障检测率函数b(t)后能够 对软件测试过程检测出的故障数量进行估计。
[0255]
(2)细节上,m-2在ds
2~3
、ds
5~8
与ds
11~12
这8个失效数据集的拟合曲线最为接近失效数据集曲线, 具有最好的拟合性能。究其原因:一方面m-2模型采用了线性增长的总故障数量函数,另一方面模型的故 障检测率b(t)设定为更为灵活的s型形式b(t)=b/(1 βe-bt
)。这说明除了软件总故障数量函数以外,不同 形式的故障检测率函数b(t)也会对srgm模型的性能具有重要影响。在固定故障检测率函数的框架模型 m7~m-11中,乐观类型的总故障数量函数对应的m-7模型的拟合性能最好,在ds
1、3、6、4、7、9、12
这7个数 据集上模型的估计曲线与数据集失效曲线最为接近,这说明在以上的数据集上,总故障数量存在上限的乐 观类型能够更好的描述软件测试过程中的总故障数量变化趋势。悲观类型的软件总故障数量对应的模型 m-8~m-10表现出较为一致的结果,在特定的数据集上拟合性能表现优秀(例如ds5与ds
10
),但在绝大 多数数据集上表现不佳。其中悲观类型——线性增长的总故障函数对应的m-9模型在ds
12
上拟合性能较好, 其性能表现优于另外两个悲观类型对应的模型。折中类型与间接求解类型的a(t)对应的模型具有近似的性 能表现,在大部分数据集上的拟合曲线都较为接近真实数据集曲线。
[0256]
(3)在s型增长的ds3上,除了考虑s型b(t)的m-2与m-3能够较好的拟合出s型增长数据集故障 曲线所表现的在软件测试周期中故障检测率由低到高、达到峰值后逐渐降低的真实测试情况,其他模型的 拟合曲线均表现为直线,并不能准确地描述失效数据集的增长趋势。特别是故障检测率b(t)为常数,乐观 类型、悲观类型以及折中类型的总故障数量对应的m-7~m-11都无法拟合s型增长的累计检测故障数量。 这一现象可解释为总故障数量函数a(t)作为软件可靠性增长模型中的重要影响因素之一,其对于模型的性 能表现具有一定局限性。对于增长形式更为复杂的s型增长的失效数据集,可以在框架模型中使用更为灵 活的s型故障检测率函数,提升模型的性能。
[0257]
(4)在本发明中参与比较的12个srgm模型中,并没有某一个模型在所有数据集上都表现良好,例如 m-2在8个数据集上表现出色,但在ds
10
与ds
12
这两个数据集上的拟合曲线表现很差等。究其原因,不同 软件系统的架构不尽相同,不同软件测试环境也具有较大差异,这些差别最终在失效数据集上表现出来。 而软件可靠性增长模型是基于抽象假设下通过一定数学方法对累积检测故障数量进行估计的方法,这必然 无法覆盖情况复杂的所有失效数据集。
[0258]
4.3预测性能实验与分析
[0259]
为了观测模型的预测性能,本发明绘制了参与比较模型的预测re曲线,参与对比分析的模型在 ds1~ds
12
的预测曲线中,如图3(a)-图3(l)所示。re曲线越趋近于0,表明预测性能越好,位于0以上 是正向预测,位于0以下是负向预测基于数据集的预测可以看作是模型对未来测试性能的描述能力,也反 映出模型在后续时刻累积检测出故障的准确程度.
[0260]
图3(a)-图3(l)中,十字曲线为y-lin;星号曲线为p-n-z-model;黑点曲线为p-z-model;斜叉号曲 线为p-z;矩形曲线为pham;菱形曲线为ohba-chou;向上三角号曲线为m-7;向下三角号曲线为m-8; 向右三角号曲线为m-9;向作三角号曲线为m-10;五星曲线为m-11;六星曲线为m-112.
[0261]
分析以上模型的预测曲线,可以看出:
[0262]
(1)整体上,除了m-2在部分数据集上的拟合曲线存在较大偏差且不收敛于零水平线之外,绝大多 数模型都表现出良好的预测性能。并且随着测试时间增加,收集到的软件故障相关数据越多,模型的预测 性能越好。
[0263]
(2)模型的预测性能与拟合性能具有一定的相关性。折中类型与微分求解形式的总故障数量函数对 应模型的预测曲线较为接近,在大多数据集上表现较好,具有较为稳定的预测性能。乐观类型与线性悲观 类型的a(t)对应的模型预测能力具有波动性,在部分数据集上性能表现出色(例如ds5、ds
11
等),但在部 分数据集上也存在一定偏差。指数悲观类型与二次悲观类型的a(t)对应的模型的预测能力较为不稳定,在 部分数据集上的预测性能表现不佳。
[0264]
(3)对于s型增长数据集ds2,虽然框架模型m-7~m-12的拟合曲线无法展现出数据集s型增长的特 殊趋势,模型的拟合性能表现不佳,但其对应的预测曲线在软件测试前半程偏差较大,而在软件测试后期, 一系列模型的预测曲线仍趋近于零水平线。这表明若软件可靠性增长模型能够基本对失效数据集的增长趋 势大致拟合,在收集一定数量测试数据的情况下,模型依然可以对软件的故障数量进行较好的预测。
[0265]
4.4相关分析
[0266]
基于上述12个模型在12个公开发表的失效数据集的实验结果,现可做如下深入讨论:
[0267]
(1)因为软件可靠性增长模型的建模假设与真实软件测试过程存在差异,所以并不存在一个模型可 以良好拟合所有失效数据集。提出的模型假设考虑越多、越复杂的现实因素,则模型的拟合预测性能更好。 相较于固定为常量a的总故障数量,考虑不完美排错的随测试时间t变化的总故障数量函数a(t)对应的可靠 性模型具有更好的性能表现。
[0268]
(2)综合实验结果,可对本发明中参与统一框架模型对比的不同类型的总故障数量函数的性能表现 做出初步排序:乐观类型》线性悲观类型》二次悲观类型》指数悲观类型》折中类型≈微分求解类型。对总故 障数量持有保守假设的模型具有更好的拟合性能表现,例如乐观类型与线性悲观类型。而软件故障随测试 时间t快速增长的二次类型与指数类型在个别数据集上拟合性能良好。折中类型与求解类型在拟合性能方 面表现折中,在大多数数据集上预测性能稳定。
[0269]
(3)软件总故障函数是对软件系统的全部故障数量的描述,既包括了已检测故障,也包括了尚未发 现的故障数量。在软件可靠性建模时,可人为地将总故障数量设定为有增长上限的乐观类型、无增长上限 的悲观类型、随累积检测故障数量变化的折中类型与微分求解类型。在同一个数据集上,乐观与悲观类型 总故障数量对应的模型具有截然相反的性能表现,若乐观类型对应模型具有最好的性能表现,则悲观类型 对应模型的性能较差,反之亦然。根据软件总故障函数定义,可推断在乐观类型表现良好的失效数据集中, 数据集对应的软件系统的总故障数量存在上限,随测试时间的增加最终总故障数量保持稳定;悲观类型表 现出色的数据集对应的软件系统没有总故障数量上限,随测试时间的增加软件系统的故障数量逐渐增加。
[0270]
基于以上分析,本发明参与实验的大多失效数据集都是软件总故障存在上限的乐观类型。但对软件系 统的总故障数量的判断,也要结合软件编写人员技能水平、软件测试
人员熟练程度、软件开发规范程度等 实际因素综合判断。
[0271]
(4)不同类型总故障数量函数为了提高软件可靠性增长模型的性能表现,除了考虑软件总故障数量这 一因素外,还应确定合适的故障检测率fdr、考虑故障排除概率p(t)、测试工作量te(testingeffort)、测试 覆盖率tc(testingcoverage)等因素,使得建模过程更贴近真实软件测试情况,发挥出内在融合的综合效应, 以便获得具有更好拟合预测性能表现的软件可靠性增长模型。
[0272]
5亟待解决的问题
[0273]
5.1分析
[0274]
5.1.1建立能够描述软件生命周期中各阶段的故障总数函数
[0275]
在软件的需求分析阶段,需求分析师可能因对业务逻辑认识不够而造成“画像不准”带来质量问题;在 软件设计阶段,设计者(例如架构师)可能因设计缺陷而带来潜在的故障;在软件开发阶段,由于程序员 开发能力的不足,致使软件中存在bug;在软件的测试与修改阶段,排错过程的整体策略与人员水平的差 异,也会使得软件中被引入新的错误。这些缺陷、风险、不足、隐患和问题,就会使得软件在长期运行中 出现各种故障甚至是失效,严重的时候带来巨大损失。如何建立覆盖软件主要生命周期的故障总数模型, 比较准确地刻画故障总数的生成方式,定量地描述阶段性故障总数模型对可靠性的提升作用,这是推动软 件工程高质量发展的重要内容。限于软件生命周期各阶段流程建模特别是理论模型的分析进展,以及当前 软件测试发布信息的不完备等不足,突破建立起多阶段软件故障总数模型的难度较大,已成为整个可靠性 分析中的一个挑战。
[0276]
5.1.2建立起软件中故障总数与更多测试过程中因素的定量关系
[0277]
软件可靠性是高可信软件的主要衡量指标之一,在软件的质量体系中占据重要地位。实际上,可靠性 是由包括故障总数等在内的多因素综合作用的结果,单纯从某个因素进行分析或施策对可靠性的提升作用 有限。从故障总数的角度来看,测试策略制定、测试资源分配、测试用例生成、测试路径选择等都会对故 障排错和测试质量带来影响,只有建立起多要素融合关联的定量关系模型才能更为深入、全面和准确地分 析可靠性的变化。在今后的可靠性理论分析中,应该重视这种多要素的综合性联系分析,科学看待可靠性 的制约因素,合理地建立起支撑可靠性随时间持续增长的数学模型,进而指导软件可靠性工程高质量发展。
[0278]
5.2需要亟待解决的问题
[0279]
5.2.1真实的软件工程开发中选择合适的故障总数模型
[0280]
从本发明的分析中可以看出,软件中故障总数对软件可靠性有着重要影响,且软件中总故障个数函数 存在多种形式,这样在真实的软件开发中,如何确定或者制定出合适的软件中总故障函数形式,对于指导 软件测试、提高可靠性和及时发布软件具有重要意义。由于软件开发的不同阶段具有不同的特征,因此可 以采用分阶段来确定合适的软件总故障个数函数的策略,这将有意义于指导软件工程健康发展。从当前的 分析来看,软件中故障总数函数还是以人为主观设定为主,缺乏足够的理论基础,尚难以对大型软件项目 开发提供科学的指导依据,亟待突破这一问题。
[0281]
5.2.2要基于故障总数建立更为精准的软件发布策略
[0282]
软件发布是软件由开发阶段过渡到应用阶段的转折,对于决定软件质量、控制开
发与测试成本、及时 投入市场或交付给用户等具有重要意义。软件中故障总数是决定软件发布的重要因素,因此基于软件故障 总数模型制定合理的发布策略是重要分析主题。软件发布并不是意味着软件中没有故障,而是故障不影响 软件的使用(或影响范围与程度可接受)并经过使用反馈进行修改迭代提升再投入应用。我们对软件测试 资源分配、成本控制与发布问题进行过深入分析
[85]
,发现迄今为止,软件发布策略中对故障总数的考虑并 不够,忽视了故障总数对可靠性的影响,使得软件发布不够精准。这里,我们从故障总数的角度提出软件 发布的最优化决策模型.
[0283][0284]
此处,c(t)表示t时刻累积修复的故障数量,c(t)表示截止软件发布t时所消耗的成本。该最优化决策模型 可以理解为,在成本不超支和可靠性达到最低限度的情况下,使得软件中剩余的故障数量最小。对此最优 化数学模型进行求解,即可确定软件最优发布时间t。
[0285]
5.2.3基于更加丰富的失效数据集发布信息建立故障总数模型
[0286]
因为测试与排错的过程中存在引入新故障的可能,因而a(t)应随t有所增加。对此,本发明提供了不同 a(t)模型在部分失效失效数据集上的变动曲线,部分失效数据集失效数据曲线与通过模型估计的总故障曲线 中,如图4(a)-图4(i)中,圆曲线为失效数据;星号曲线为乐观a(t)曲线;斜叉号曲线为指数悲观a(t)曲线; 矩形曲线为线性悲观a(t)曲线;菱形曲线为二次悲观a(t)曲线;向上三角号曲线折衷a(t)曲线;五星曲线为 微分求解a(t)曲线。
[0287]
由于人为设定a(t)的差异,使得曲线走势既有线性增加,又有指数以及更加复杂的增加变化趋势。失 效数据集记录的是软件总故障数量的一部分,二者理应比较类似,但观察发现二者存在较大差距,这是由 于软件可靠性建模人员对a(t)的假设存在偏差。由于fds发布方是测试过程的主导者,因而其具备能够获 得a(t)更为准确信息的能力,但当前的fds中均没有此方面的信息。这不仅为故障总数模型分析,也为可 靠性分析带来了严重制约,成为需要突破的问题。我们呼吁fds发布方(公司或分析所)发布更为全面的 失效数据集的信息,帮助软件可靠性建模人员对故障总数量进行更为精准的建模。
[0288]
5.2.4软件结构与形态发生了显著变化情况下故障总数的演变特征
[0289]
软件的开发方式、技术、结构、形态等都会对软件中故障的分布与数量的增长带来影响。当前分析仍 然是将软件作为一种形态来进行统一看待,没有区分软件自身的变化特征,忽视了软件发展引发故障总数 的变化。例如,随着开发模式(开源式开发、迭代式开发、敏捷开发、众筹开发等)与开发技术的发展, 特别是需求提升与应用创新,构件软件、网构软件、开源软件、平台软件、社交与通信软件、移动端软件 等已成为软件中的主流,针对这些软件形态与结构的变化来分析软件中故障的分布与数量增长情况要得到 足够的重视。故障往往是开发中的问题或不足带来的,因此要深入结合软件架构与开发特征来分析故障总 数模型。例如,应该将软件架构模型、开发范式、软件开发与测试的理论技术等与故障总数分布及生成等 联系起来,建立考虑更多软件开发特征的模型,以提高分析的适配性、精准性和有效性。
[0290]
软件中故障总数是软件可靠性建模、评测、增长的重要组成元素,对于测试资源分配、成本管控和最 优发布也具有重要的影响。软件中故障总数即难以确定又难以全部排除,当前软件可靠性分析中多以直接 设定故障总数为主,这为建立更为准确的可靠性模型和确定更为准确的测试资源投入带来一定困难。依据 软件自身结构等特征,建立能够描述软件中故障数量增长的模型,不仅对确定排错中新故障引入带来直接 益处,也成为推动可靠性工程发展的重要力量,是可靠性分析领域值得探索的核心主题。
[0291]
本发明对软件中故障总数进行了全面述评,包括区分不同的函数模型,进而从软件中故障总数的角度 建立两种不完美排错情况的软件测试模型,建立多种分类子模型。针对得到的可靠性模型,从拟合与预测 角度研判分析模型性能间差异,剖析了故障总数对可靠性的影响.
[0292]
二、应用实施例:
[0293]
本发明应用实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存 储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实 现上述任意各个方法实施例中的步骤。
[0294]
本发明应用实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序, 所述计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
[0295]
本发明应用实施例还提供了一种信息数据处理终端,所述信息数据处理终端用于实现于电子装置上 执行时,提供用户输入接口以实施如上述各方法实施例中的步骤应用,所述信息数据处理终端不限于手机、 电脑、交换机。
[0296]
本发明实施例还提供了一种服务器,所述服务器用于实现于电子装置上执行时,提供用户输入接口 以实施如上述各方法实施例中的步骤。
[0297]
本发明应用实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子 设备执行时可实现上述各个方法实施例中的步骤。
[0298]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个 计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,可以通过 计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程 序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码, 所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读 介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算 机存储器、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、 电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。
[0299]
以上所述,仅为本发明较优的具体的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术 领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和 改进等,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献