CN111737113A - 故障检测和引进非线性变化的开源软件可靠性建模方法 - Google Patents
故障检测和引进非线性变化的开源软件可靠性建模方法 Download PDFInfo
- Publication number
- CN111737113A CN111737113A CN202010473322.3A CN202010473322A CN111737113A CN 111737113 A CN111737113 A CN 111737113A CN 202010473322 A CN202010473322 A CN 202010473322A CN 111737113 A CN111737113 A CN 111737113A
- Authority
- CN
- China
- Prior art keywords
- source software
- open source
- model
- fault detection
- fault
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Abstract
本发明属于开源软件可靠性模型技术领域,具体涉及故障检测和引进非线性变化的开源软件可靠性建模方法。包括提出模型假设和模型的建立,所述提出模型假设包括(1)开源软件的故障检测为非齐次泊松过程;(2)在开源软件开发和测试过程中,检测到的故障数量与软件中剩余的故障数量有关;(3)开源软件的故障检测过程是非线性变化的;(4)在开源软件的开发和测试过程中,当检测到的故障被排除后,可能引进新的故障;(5)在开源软件的调试过程中,引入的故障数量随测试时间的变化呈非线性变化。本发明提出的模型具有更好的拟合和预测性能,可以有效地应用于开源软件的可靠性评估。
Description
技术领域
本发明属于开源软件可靠性模型技术领域,具体涉及故障检测和引进非线性变化的开源软件可靠性建模方法。
背景技术
近几十年来,开源软件的开发方式得到了广泛的应用和推广。现在一些著名的软件公司,如微软、阿里巴巴、谷歌、IBM等,都有很多开源软件开发项目。特别是近年来,云计算、大数据等软件密集型系统也采用了开源软件开发模式。由于开源软件能够吸引大量的志愿者和用户在开放的环境中进行开发和使用,使得开源软件的开发和测试变得复杂和不确定。特别是开源软件的可靠性是一个需要深入研究的问题。虽然目前的开源软件普遍采用“早发布,频繁发布”的方法来提高开源软件的可靠性,但这种方法受到广泛的质疑。
为了有效评估开源软件的可靠性,预测开源软件的发布时间,一些研究者进行了相关的研究。例如,Tamura和Yamada利用随机微分方程建立了开源软件的可靠性模型,提出了一种考虑开源软件测试工作量的软件优化发布策略。考虑到OSS开发过程中源代码的变化,Singh等提出了利用信息熵来综合实际开源故障问题和源代码变化,并建立了相应的多版本开源软件可靠性模型。同时,为了满足用户的需求,他们还开发了一个多版本的开源软件优化发布策略。Li等人认为开源软件主要由开发者、志愿者和用户开发。除了开发人员的相对稳定性外,在开源软件的开发过程中,志愿者和用户也在不断变化。通过研究开源软件的发展过程,发现开源软件的故障检测率先上升后下降,并提出了一个相关的开源软件可靠性模型。此外,他们还提出了一种基于多属性效用理论的开源软件多版本优化发布方法。Wang和Mi观察到,在开源软件的开发和测试过程中,故障检测率呈下降趋势。他们提出了一个基于故障检测率下降变化的开源软件可靠性模型。此外,Zhou和Davis利用传统的闭源软件可靠性模型对开源软件的可靠性进行了评估,得出传统的闭源软件可靠性模型也可以用来评估开源软件的可靠性。特别是采用Weibull分布的闭源软件可靠性模型更能适应开源软件的开发环境。
虽然上述软件可靠性模型在一些开源软件开发和测试环境下能够有效地评估开源软件的可靠性,但并不符合实际情况。因为他们假设开源软件检测到的故障被去除时,没有引入新的故障。换句话说,它们都是完美的调试模型。完美调试的假设与实际的开源软件调试过程不符。实际上,在开源软件调试过程中,当检测到故障并排除故障时,很可能会引入新的故障。例如,在开源软件的故障跟踪系统(Bug Tracking Systems)中,一些故障的状态会从关闭变为重新打开。这种状态变化表明开源软件中的故障没有完全消除,或者可能会引入新的故障。考虑到开源软件中引入了故障,更符合开源软件的实际调试过程。而且,开源软件引入故障的变化是一个非线性的变化过程。此外,在闭源软件测试环境中建立了闭源软件可靠性模型,并将其应用于开源软件环境的可靠性评估中,业界对其适用性和合理性提出了质疑。
开源软件故障引入的非线性变化主要是由于调试者的专业技能、调试工具和调试资源的差异或动态变化导致开源软件调试过程中故障引入的随机变化和不确定性行为。因此,在开源软件的调试过程中,故障的引入呈现出非线性变化的现象。此外,在开源软件的开发和测试过程中,(1)受志愿者和用户的兴趣(吸引力)和需求的影响;(2)受志愿者和用户的专业技能、心理变化和测试资源的影响;(3)它受到各种开放环境的影响。这些都将使故障检测率在开源软件的开发和测试过程中呈现出非线性变化的特点。此外,在开源软件的开发和测试过程中,志愿者和用户存在一个学习过程。因此,开源软件的故障检测将呈现非线性变化。针对上述问题,我们提出了一个故障检测和故障引入非线性变化的开源软件可靠性模型。通过相关实验验证了该模型的有效性和适用性。
发明内容
针对上述问题本发明提供了故障检测和引进非线性变化的开源软件可靠性建模方法。
为了达到上述目的,本发明采用了下列技术方案:
一般来说,软件测试中的故障检测可以看作是非齐次泊松过程(NHPP),即,
其中,m(t)和N(t)分别表示均值函数和累计检测出故障的数量。
软件可靠性函数可以表示为
故障检测和引进非线性变化的开源软件可靠性建模方法,包括以下步骤:
步骤1,提出模型假设:
(1)开源软件的故障检测为非齐次泊松过程;
(2)在开源软件开发和测试过程中,检测到的故障数量与软件中剩余的故障数量有关;
(3)开源软件的故障检测过程是非线性变化的;
(4)在开源软件的开发和测试过程中,当检测到的故障被排除后,可能引进新的故障;
(5)在开源软件的调试过程中,引入的故障数量随测试时间的变化呈非线性变化;
步骤2,模型的建立。
进一步,所述步骤1中,从假设(2)得出:
其中,μ(t)是均值函数,表示到t时刻为止,期望累计检测到故障数量,ω(t)和a(t)分别表示故障检测率函数和故障内容函数。
进一步,在开源软件的开发过程中,故障检测主要由志愿者和用户来完成。检测到的故障数量随志愿者和用户的数量、专业知识和测试资源而变化。因此,随着时间的推移,故障检测是非线性的。所述步骤1假设(3)中非线性变化用非线性函数表示:
其中,ω和θ分别表示故障检测率和比例参数。
同时,在开源软件的故障检测过程中,志愿者和用户也有一个学习的过程。这种学习过程使得开源软件的故障检测呈现非线性变化,θ表示拐点因子。
进一步,在开源软件开发和测试过程中,由于调试人员的技能、调试环境和调试资源的变化,故障引入也会发生变化。而且,在实际的开源软件调试过程中,故障的引入呈现出非线性的变化。所述步骤1假设(5)中非线性变化用非线性函数表示:
a(t)=a exp(βtd),β>0和d>0 (3)
其中,a,β和d分别表示为期望最初检测到故障总的数量,比例参数和形状参数。
进一步,所述步骤2中模型的建立具体为:将式(2)和式(3)代入式(1),并解微分方程,得到:
其中,μ(t)为提出模型的表达式。详细的推导过程如下所示:
式(A.1)两边乘以exp(γ(t)),
exp(γ(t))dμ(t)+exp(γ(t))ω(t)μ(t)=exp(γ(t))ω(t)a(t)dt
∫d(exp(γ(t))μ(t))=∫exp(γ(t))ω(t)a(t)dt A.4
把式(A.2)和(A.3)代入式(A.4).
用泰勒公式进行扩展,
exp(βtd)≈1 A.6
把式(A.6)代入(A.5),
C是一个常量。当t=0,μ(t)=0。
把式(A.8)代入式(A.7),得
由于开源软件是多版本软件,为了满足用户的需求,每个版本的软件都有其新的特点。相关研究表明,当前版本和以后版本的操作系统中的大多数故障几乎没有相互依赖性。我们完全可以忽略这些微小的依赖关系,把它们看作是独立的故障。在本发明中,我们使用提出的模型来拟合和预测每个版本的开源软件的故障发生行为
再进一步,软件可靠性模型的参数估计一般有两种方法。一种是极大似然估计(Maximum Likelihood Estimation,MLE),另一种是最小二乘估计(Least SquareEstimation,LSE)。一般认为MLE优于LSE。本发明利用最小二乘法估计模型的参数值。主要考虑两点:
(1)在小样本情况下,最小二乘法并不比最大似然法差。
(2)在某些情况下,当使用MLE估计模型的参数时,没有最大似然值。
为了有效、全面地比较模型的性能,所述的故障检测和引进非线性变化的开源软件可靠性建模方法得到模型的参数估计方法为最小二乘法,LSE用于估计模型的参数值,如下所示:
将式(5)取偏微分,
联立方程组(6)即可得到模型的参数估计值。
与现有技术相比本发明具有以下优点:
本发明提出了故障检测和故障引入具有非线性变化的开源软件可靠性模型。为了验证该模型的有效性和适用性,我们使用了3个OSS故障数据集、5个模型比较标准和8个软件可靠性模型进行了模型性能比较实验。实验结果表明,该模型比其他模型具有更好的拟合和预测性能,包括闭源和开源软件、完全调试模型和不完全调试可靠性模型,可以有效地应用于开源软件的可靠性评估。
附图说明
图1a~i为本发明提出模型的拟合性能比较;
图2a~i为本发明提出模型的预测性能比较:
具体实施方式
实施例1
故障检测和引进非线性变化的开源软件可靠性建模方法,包括以下步骤:
步骤1,提出模型假设:
(1)开源软件的故障检测为非齐次泊松过程;
(2)在开源软件开发和测试过程中,检测到的故障数量与软件中剩余的故障数量有关,可得到下式:
其中,μ(t)是均值函数,表示到t时刻为止,期望累计检测到故障数量,ω(t)和a(t)分别表示故障检测率函数和故障内容函数;
(3)开源软件的故障检测过程是非线性变化的,其中非线性变化用非线性函数表示:
其中,ω和θ分别表示故障检测率和比例参数;
(4)在开源软件的开发和测试过程中,当检测到的故障被排除后,可能引进新的故障;
(5)在开源软件的调试过程中,引入的故障数量随测试时间的变化呈非线性变化,其中非线性变化用非线性函数表示:
a(t)=a exp(βtd),β>0和d>0 (3)
其中,a,β和d分别表示为期望最初检测到故障总的数量,比例参数和形状参数;
步骤2,模型的建立:将式(2)和式(3)代入式(1),并解微分方程,得到:
其中,μ(t)为提出模型的表达式。
所述模型的参数估计方法为最小二乘法,如下所示:
将式(5)取偏微分,
联立方程组(6)即可得到模型的参数估计值。
实施例2
模型的性能比较
我们从故障跟踪系统中三个Apache项目收集的故障数据集。它的网站是https://issues.apache.org/。故障跟踪系统中开源软件的故障数据称为问题(Issues)。我们删除了故障状态为“无法修复”、“无效”、“重复”和“无问题”的故障,其余的作为故障数据集。表1列出了开源软件的详细故障数据采集信息。
为了比较模型的性能,我们使用了五个模型比较标准。它们是MSE、R2、RMSE、TS和Bias。详见表2。在表2中,μ(tj)和O(tj)分别表示均值函数和实际观测到的故障数。n和m表示样本量大小。此外,在表2中,1~4这些模型比较标准值越小,模型性能越好。此外,R2值越大,模型拟合性能越好。
本发明采用八种模型对模型的性能进行了比较。这八个模型包括完美调试,如G-O模型、延迟S形模型、拐点S形模型、Weibull分布模型、Wang模型和Li模型;不完美调试,即P-N-Z模型和P-Z模型;或闭源软件可靠性模型,例如G-O模型、延迟S形模型、拐点S形模型、Weibull分布模型,P-N-Z模型和P-Z模型;开源软件可靠性模型,例如Wang模型和Li模型。
需要注意的是,在模型拟合性能方面,我们使用了100%的故障数据集来拟合和估计模型参数值,并对模型拟合性能进行了比较。我们使用90%的故障数据集来拟合和估计模型参数值,其余的用来比较模型的预测性能。表4显示了所提出模型的估计参数值。
从表5~7可以看出,该模型的拟合性能优于其他模型。虽然在表7中,使用100%的故障数据(DS3-1)时,拐点S形模型的Bias值小于提出模型的值,但提出模型的其他比较标准值优于它。两种模型的Bias值相差很小,可以忽略不计。总的来说,其他模型的拟合性能不如所提出的模型。图1a~i显示了所提出的模型比其他模型具有更好的拟合性能。
从表8~10可以看出,与其它模型相比,提出模型具有更好的预测性能。在表8中,使用90%的数据(DS1-1),Li模型的Biaspreidct值小于提出模型的Biaspreidct值。在表9中,延迟S形模型的Biaspreidct值小于使用90%故障数据(DS2-3)的提出模型的Biaspreidct值。对于Li模型和使用表8中90%数据(DS1-1)的提出模型,它们Biaspreidct值分别为1.31和1.4。对于延迟S形模型和使用表9中90%数据(DS2-3)的提出模型,它们分别为0.4和0.41。它们之间的差别太小,可以看作近似相等。从图2a~i可以看出,提出模型的预测性能明显优于其他模型。
综上所述,与其它模型相比,无论是开源软件和闭源软件、完全调试还是不完全调试模型,该模型都具有较好的拟合和预测性能。由于开源软件开发和测试的复杂性、动态性和不确定性,建立一个适合所有开源码软件开发和测试环境的模型是不可能的。因此,根据开源软件开发和测试的特点和规律,建立相应的开源软件可靠性模型是非常必要和实用的。本文提出的模型可以应用于大多数开源软件的开发和测试环境。此外,它还可以帮助开源软件的开发人员评估软件的可靠性。
表1.开源软件故障数据集
表2.模型比较标准
表3.比较模型
表4.提出模型的参数估计值
表5.模型比较结果(DS1)
表6.模型比较结果(DS2)
表7.模型比较结果(DS3)
表8.模型比较结果(DS1)
表9.模型比较结果(DS2)
表10.模型比较结果(DS3)
Claims (6)
1.故障检测和引进非线性变化的开源软件可靠性建模方法,其特征在于,包括以下步骤:
步骤1,提出模型假设:
(1)开源软件的故障检测为非齐次泊松过程;
(2)在开源软件开发和测试过程中,检测到的故障数量与软件中剩余的故障数量有关;
(3)开源软件的故障检测过程是非线性变化的;
(4)在开源软件的开发和测试过程中,当检测到的故障被排除后,可能引进新的故障;
(5)在开源软件的调试过程中,引入的故障数量随测试时间的变化呈非线性变化;
步骤2,模型的建立。
4.根据权利要求1所述的故障检测和引进非线性变化的开源软件可靠性建模方法,其特征在于,所述步骤1假设(5)中非线性变化用非线性函数表示:
a(t)=aexp(βtd),β>0和d>0 (3)
其中,a,β和d分别表示为期望最初检测到故障总的数量,比例参数和形状参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010473322.3A CN111737113B (zh) | 2020-05-29 | 2020-05-29 | 故障检测和引进非线性变化的开源软件可靠性建模方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010473322.3A CN111737113B (zh) | 2020-05-29 | 2020-05-29 | 故障检测和引进非线性变化的开源软件可靠性建模方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111737113A true CN111737113A (zh) | 2020-10-02 |
CN111737113B CN111737113B (zh) | 2021-09-28 |
Family
ID=72646501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010473322.3A Active CN111737113B (zh) | 2020-05-29 | 2020-05-29 | 故障检测和引进非线性变化的开源软件可靠性建模方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111737113B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157585A (zh) * | 2021-04-28 | 2021-07-23 | 山西大学 | 一种基于测试工作量变化的开源软件优化发布方法 |
CN113778872A (zh) * | 2021-09-07 | 2021-12-10 | 山西大学 | 一种故障引进下降变化的开源软件可靠性建模方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915192A (zh) * | 2015-03-25 | 2015-09-16 | 哈尔滨工程大学 | 一种基于移动点和不完美排错的软件可靠性建模方法 |
CN106125714A (zh) * | 2016-06-20 | 2016-11-16 | 南京工业大学 | 结合bp神经网络与二参数威布尔分布的故障率预测方法 |
CN109766281A (zh) * | 2019-01-29 | 2019-05-17 | 山西大学 | 一种故障检测率下降变化的不完美调试软件可靠性模型 |
CN109815149A (zh) * | 2019-01-29 | 2019-05-28 | 山西大学 | 一种基于Weibull分布引进故障的软件可靠性增长模型 |
CN109857582A (zh) * | 2019-01-29 | 2019-06-07 | 山西大学 | 一种基于排错过程引进故障的开源软件可靠性建模方法 |
CN111045939A (zh) * | 2019-12-09 | 2020-04-21 | 山西大学 | Weibull分布的故障检测开源软件可靠性建模方法 |
CN111045938A (zh) * | 2019-12-09 | 2020-04-21 | 山西大学 | 基于Pareto分布故障引进开源软件可靠性建模方法 |
US10642716B1 (en) * | 2019-02-07 | 2020-05-05 | Fujitsu Limited | Automated software program repair |
-
2020
- 2020-05-29 CN CN202010473322.3A patent/CN111737113B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915192A (zh) * | 2015-03-25 | 2015-09-16 | 哈尔滨工程大学 | 一种基于移动点和不完美排错的软件可靠性建模方法 |
CN106125714A (zh) * | 2016-06-20 | 2016-11-16 | 南京工业大学 | 结合bp神经网络与二参数威布尔分布的故障率预测方法 |
CN109766281A (zh) * | 2019-01-29 | 2019-05-17 | 山西大学 | 一种故障检测率下降变化的不完美调试软件可靠性模型 |
CN109815149A (zh) * | 2019-01-29 | 2019-05-28 | 山西大学 | 一种基于Weibull分布引进故障的软件可靠性增长模型 |
CN109857582A (zh) * | 2019-01-29 | 2019-06-07 | 山西大学 | 一种基于排错过程引进故障的开源软件可靠性建模方法 |
US10642716B1 (en) * | 2019-02-07 | 2020-05-05 | Fujitsu Limited | Automated software program repair |
CN111045939A (zh) * | 2019-12-09 | 2020-04-21 | 山西大学 | Weibull分布的故障检测开源软件可靠性建模方法 |
CN111045938A (zh) * | 2019-12-09 | 2020-04-21 | 山西大学 | 基于Pareto分布故障引进开源软件可靠性建模方法 |
Non-Patent Citations (1)
Title |
---|
王金勇: "考虑故障引进的软件可靠性增长模型研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157585A (zh) * | 2021-04-28 | 2021-07-23 | 山西大学 | 一种基于测试工作量变化的开源软件优化发布方法 |
CN113157585B (zh) * | 2021-04-28 | 2023-09-22 | 山西大学 | 一种基于测试工作量变化的开源软件优化发布方法 |
CN113778872A (zh) * | 2021-09-07 | 2021-12-10 | 山西大学 | 一种故障引进下降变化的开源软件可靠性建模方法 |
CN113778872B (zh) * | 2021-09-07 | 2023-09-22 | 山西大学 | 一种故障引进下降变化的开源软件可靠性建模方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111737113B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Alhazmi et al. | Modeling the vulnerability discovery process | |
US8826426B1 (en) | Systems and methods for generating reputation-based ratings for uniform resource locators | |
CN101794359B (zh) | 用于启用用于遗留应用的经群体测试的安全特征的方法和系统 | |
Clark et al. | Familiarity breeds contempt: The honeymoon effect and the role of legacy code in zero-day vulnerabilities | |
AU2017228584A1 (en) | Multi-data analysis based proactive defect detection and resolution | |
CN111737113B (zh) | 故障检测和引进非线性变化的开源软件可靠性建模方法 | |
Ward et al. | HYBRIDCHECK: software for the rapid detection, visualization and dating of recombinant regions in genome sequence data | |
Bhatt et al. | Modeling and characterizing software vulnerabilities | |
CN111045939B (zh) | Weibull分布的故障检测开源软件可靠性建模方法 | |
US9906542B2 (en) | Testing frequency control using a volatility score | |
Joh et al. | Vulnerability discovery modeling using Weibull distribution | |
JP2019501429A (ja) | 破損ネットワーク接続の機械学習に基づく識別 | |
CN111488281B (zh) | 一种基于随机引进故障的开源软件可靠性建模方法 | |
Alexopoulos et al. | The tip of the iceberg: On the merits of finding security bugs | |
CN107292178B (zh) | 一种基于多层次影响因子的安全漏洞威胁量化方法 | |
CN110083518B (zh) | 一种基于AdaBoost-Elman的虚拟机软件老化预测方法 | |
US11151021B2 (en) | Selecting test-templates using template-aware coverage data | |
EP3506592B1 (en) | Method and system for detecting fradulent user-content provider pairs | |
US10025697B2 (en) | Generation of automated unit tests for a controller layer system and method | |
CN111045938B (zh) | 基于Pareto分布故障引进开源软件可靠性建模方法 | |
US9148353B1 (en) | Systems and methods for correlating computing problems referenced in social-network communications with events potentially responsible for the same | |
Ezenwoye et al. | Classifying Common Security Vulnerabilities by Software Type. | |
RU2669172C2 (ru) | Способ и система мониторинга согласованности веб-сайта | |
Luan et al. | An improved Pareto distribution for modelling the fault data of open source software | |
Movahedi et al. | Cluster-based vulnerability assessment applied to operating systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |