CN104331362B - 一种软件故障预测方法 - Google Patents
一种软件故障预测方法 Download PDFInfo
- Publication number
- CN104331362B CN104331362B CN201410554598.9A CN201410554598A CN104331362B CN 104331362 B CN104331362 B CN 104331362B CN 201410554598 A CN201410554598 A CN 201410554598A CN 104331362 B CN104331362 B CN 104331362B
- Authority
- CN
- China
- Prior art keywords
- software
- trace
- functional block
- monitored
- matrix
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件故障预测方法,包括以下步骤:S101、对软件运行过程中的方法执行信息进行监控,并对监控得到的数据进行处理以生成在一个时间段内的方法调用关系图;S102、对被监控软件进行基本功能块的划分,根据划分结果和所述方法调用关系图生成各个功能块相应的方法调用关系网络;S103、对软件的动态运行进行持续监控,生成当前功能块在时间片段Δti内系统的方法调用关系网络Gi;S104、根据动态网络结构演化公式Gi+1=f(Gi,Δti+1)预测被监控软件的当前功能块在下一时间片段内的状态G’i+1。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种软件故障预测方法。
背景技术
软件系统在达到一定规模之后,随着软件的长时间运行,软件系统模块存在“老化”的特点,常常面临各种故障或者失效问题。随着人们对软件系统功能需求的不断增加,软件系统变得越来越庞大和复杂,缺陷和漏洞的发生也随之难以避免。这直接或间接地给人们带来严重的损失。例如,2002年,美国NIST估算其每年因软件失效造成近600亿美元损失,约占其当年GDP的0.6%。
因此,软件系统的可信性问题已经成为业界普遍关注的一个焦点,国内外众多组织机构正致力于解决软件系统面临的安全和可信问题。然而,相关的研究主要关注于软件系统故障的定位,而很少关注对软件系统中的故障或失效进行预测,因为后者涉及多学科领域的知识。
目前,业界亟需对软件系统,尤其是大规模软件系统的故障进行预测的解决方案。
发明内容
针对现有技术的不足,本发明的目的在于提供一种软件故障预测方法,该方法可以适用于大规模软件系统。
为实现以上发明目的,本发明采用以下技术方案:
一种软件故障预测方法,包括以下步骤:
S101、对软件运行过程中的方法执行信息进行监控,并对监控得到的数据进行处理以生成在一个时间段内的方法调用关系图;
S102、对被监控软件进行基本功能块的划分,根据划分结果和所述方法调用关系图生成各个功能块相应的方法调用关系网络;
S103、对软件的动态运行进行持续监控,生成当前功能块在时间片段Δti内系统的方法调用关系网络Gi;
S104、根据动态网络结构演化公式G′i+1=f(Gi,Δti+1)预测被监控软件的当前功能块在下一时间片段内的状态G’i+1;
S105、根据动态网络结构测量公式d=g(G′i+1,Gi+1),对当前功能块在时间片段Δti+1内得到的被监控软件状态Gi+1与预测状态G’i+1的差异进行测量;
S106、如果所测量的差异值超过预定阈值,则确定被监控软件的当前功能块在时间片段Δti+1内发生了故障。
与现有技术相比,本发明具有以下有益效果:可以监控大规模软件系统中每一个时间段内的状态改变,分析所监控软件发生故障的可能性,从而为用户提供系统故障预警信息。本发明的这些和其他方面、特征和优点将通过下面对附图和具体实施方式的描述而变得更加明显。
附图说明
图1是根据本发明实施例的软件故障预测方法流程图;
图2是根据本发明实施例的K-core分解算法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及示例性实施例,对本发明进行进一步详细说明。应当理解,此处所描述的示例性实施例仅用以解释本发明,并不用于限定本发明的适用范围。
本发明基于以下思想:将大规模软件系统的动态运行信息提取出来,再将软件的动态运行方法调用序列所映射的调用关系进行网络分析,监控网络中每一个时间段内的状态改变,记入每一个状态对应的调用关系网络,进而实现故障与异常的检测。
图1是根据本发明实施例的软件故障预测流程图。如图所示,本实施例的软件故障预测方法包括以下步骤:
S101、对软件运行过程中的方法执行信息进行监控,并对监控得到的数据进行处理以生成在一个时间段内的方法调用关系图(callgraph)。
在本实施例中,该步骤可以具体包括:
对软件行为进行持续监控,得到软件运行时的方法执行信息。其中,数据可以以dat文件的格式存储;以及
对监控数据进行处理,通过trace重构来获得软件运行时的方法调用序列,并生成K-core分解之后的调用关系网络。
其中,为了形象地说明trace的含义,这里以一个网络书店为例。类Bookstore的searchBook方法中分别调用类Catalog的getBook方法与类CRM(CustomerRelationshipManagement)中的getOffers方法,而在CRM.getOffers方法的定义中又调用了Catalog.getBook方法。也就是说,书店既可以直接查询目录来获取书的信息,也可以通过咨询管理员由管理员来查询相关信息。
在监控的过程中,可以对于执行服务请求的线程附加一个特有的traceId,同时将其加入到同一个trace的所有的数据记录之中。根据记录的traceId,便可以将监控数据中的同一个traceId的方法提取出来,通过对它们的开始与结束时间排序便可以重构原来的trace路径。这样做理论上没有问题,但是如果网络系统规模极其巨大,系统时间也十分复杂,如果采用分布式部署的话,便会产生一个问题,即:如果分布式系统的系统时钟并不同步,那么每个数据记录的开始时间与结束时间便会存在误差,理想的trace重构过程便无法完成。
针对这一问题,可选地,可以引入两个附加参数来进行trace重构:执行顺序(executionorderindex)与执行栈大小(executionstacksize),下文中简称为eoi与ess。
a)eoi:eoi的值为i意味着在这个trace中这个方法执行的顺序为i,起始值设置为0;
b)ess:ess的值为j意味着在这个trace中,方法开始执行前调用栈的大小为j,起始值同样设置为0。
在前面的trace示例中,方法执行序列searchBook、getBook、getOffers、getBook构成一个trace,而每个方法的eoi与ess也标记在方法后。这里存在一个重要的trace规律:eoi的顺序从0开始逐步递增并且不会重复,而ess的值则会变化,而且同一个ess的值出现的机会一般说来不止一次。
在前面的描述中,trace中的信息都是字符串,由于数据量庞大会导致性能上的严重下降,所以在实际处理过程中,可选地可以给所有的trace方法名建立一个统一的映射,将其映射成为数字ID,这样对字符串的比较就转化为对数字的比较,从而可以加快数据处理的速度。
另外,K-core分解算法可以定义如下:
如果无向图G=(V,E),其中|V|=n代表节点,|E|=e代表边,那么无向图的K-core分解子图必须满足如下条件:
H=(C,E|C)
满足如上3个条件的最大的子图H是原图G的一个K核分解子图。
可以这样定义:K-core分解的子图为它是原图的一个子图,而且在这个子图中所有的节点在这个子图中的度都大于等于k,那么它就是满足这个性质的最大子图。
图2所示为K-core分解算法流程图。按照递归筛选的算法处理,依次递归输出原图系统的2核子图、3核子图......直到剪枝到最大核——K-core才停止,这样一幅原图的完整K-core分解就结束了。因此,K-core分解算法能够显示出大规模复杂网络中的层次性结构与核心节点等重要特性,进构与核心节点等重要特性,进而实现对复杂网络进行结构划分。
下面分析K-core分解算法的过程来得到它的时间复杂度。
K-core分解算法的过程为一个“递归剪枝”的过程。主要分为两个步骤,首先在剪枝之前,获得n个节点的度数所需的时间为O(n),从最低的度数kmin开始,所有度数等于kmin的节点都会被剪掉,如果一个度数初始为kmin+1的节点在这个过程中它的一个邻居节点被剪掉的话那么它的度数就会相应的变为kmin,这也就是“递归剪枝”的原因所在。在这个过程中剪掉的所有的节点组成kmin层,因为这些节点具有相同的核心度kmin,相应的剪枝过程之后的图变为原图的kmin+1子图,然后重复进行上述过程,直到图中所有的节点都被剪掉时算法结束。在此过程中,去掉所有的边所花费的时间复杂度为O(e),因为去掉一个顶点意味着要剪掉所有的与这个节点相关联的边,在整个算法的处理过程中,所有的边都会被依次的剪掉。所以,总的算法的时间复杂度为O(n+e)。
S102、对被监控软件进行基本功能块的划分,根据划分结果和所述方法调用关系图生成各个功能块相应的方法调用关系网络。
无论是需求分析阶段还是实际代码编写阶段,由于软件工程都要求遵循模块化的设计风格,因此,软件一般可以按照功能划分为若干基本的模块。举例来说,操作系统作为一个大规模软件系统,其可以划分为以下基本功能块:处理器管理、存储管理、设备管理、文件管理和作业管理。在本实施例中,可以根据前述K-core分解的结果将与各个功能块相关的方法调用关系从前一步骤得到的方法调用关系图中剥离出来,生成与各功能块相应的方法调用关系网络。
S103、对软件的动态运行进行持续监控,生成当前功能块在时间片段Δti内系统的方法调用关系网络Gi。
本实施例把动态调用关系网络作为软件状态描述方法,由此模拟软件运行状态。在处理过程中,对生成的动态网络的分析主要通过相应的矩阵来实现,矩阵概念主要用来分析检测软件系统正常与异常情况下的调用关系网络所对应的矩阵的变化趋势。
为了达到对矩阵的动态变化过程进行监控的目的,这里引入矩阵的2范数来衡量网络变化。矩阵A的范数||A||需要满足如下条件:
PAP≥0当且仅当A为零矩阵时等号成立;
PαAP=|α|PAP
PA+BP≤PAP+PBP
PABP≤PAPBP(1)
矩阵的2范数又称谱范数,其定义如下:
式中:
ρ(·)——矩阵的谱半径,代表矩阵特征值绝对值的最大值。也就是说,矩阵的2范数就是矩阵ATA谱半径的平方根。
进一步地,在本实施例中,调用关系网络的数据结构可以有邻接矩阵和加权矩阵两种形式。为了能够准确地检测到矩阵元素的变化,本实施例在邻接矩阵的基础上做了一些限定,定义矩阵中的每一个位置(a,b)代表确定的含义,这样可以避免出现同构图的邻接矩阵相似的情况。为了满足这个要求,生成的动态网络所对应的矩阵的顶点集合取所有出现的顶点的全集,这样可以保证所有的邻接矩阵具有相同的维数,也方便了矩阵的后继处理。矩阵元素的取值为0或1,其中0代表不存在相应的调用关系,1代表对应的调用关系至少出现过一次。由于检测异常主要是发现调用关系网络的结构性变化,所以可以采用可达矩阵的方式,而不进行加权。此外,矩阵元素可以设计为只能取0或1。
S104、根据动态网络结构演化公式G′i+1=f(Gi,Δti+1)预测被监控软件的当前功能块在下一时间片段内的状态G’i+1。
大规模复杂网络对应于软件系统的不断衍变周期。用户不断对软件提出新的指令,使得软件系统对此作出反应,每一次反应都会产生一个新的状态,软件状态随运行时间的增加也变得更加复杂。为了对软件状态加以记录分析,本实施例中,动态调用网络结构的演变过程定义为一个映射函数:
G′i+1=f(Gi,Δti+1)(3)
该函数的意义就是根据软件运行所产生的数据,将其划分成为一个个最小的时间切片,测量这个时间切片内对应的方法调用关系网络的状态。也即:
G′i+1=f(Gi,Δti+1)=Gk(4)
式中,Gk即为对应功能块的方法调用关系网络时间切片。
S105、根据动态网络结构测量公式d=g(G′i+1,Gi+1),对当前功能块在时间片段Δti+1内得到的被监控软件状态Gi+1与预测状态G’i+1的差异进行测量。
在本实施例中,动态网络结构测量公式可以为:
d=g(G′i+1,Gi+1)=Mi+1(5)
式中,Mi+1为矩阵G’i+1与Gi+1的差异矩阵。
根据前面的描述可知,矩阵的2范数可以作为矩阵的测量手段。在本实施例中,可以选取差异矩阵的2范数来作为生成网络的调用矩阵之间的差异的测量标准。
设计差异矩阵的目的是为了度量调用关系动态网络的结构性变化。为了同等度量网络结点的出现与消失,可以将差异矩阵在矩阵直接相减的基础上进行处理,即将矩阵中所有值为-1的结点的值变为1。这样,差异矩阵结点的取值范围为0或者1,其中0代表此位置对应的方法的出现情况没有变化,1代表此方法只在其中的一个矩阵之中出现。
S106、如果所测量的差异值超过预定阈值,则确定被监控软件的当前功能块在时间片段Δti+1内发生了故障。
在实际运行中,同一个功能块内部获得的监控数据所生成的动态网络之间随着用户实际访问过程输入参数的不同会导致噪声的存在,也就是说,度量函数的取值范围在正常状态下可能会出现随机的波动。但是,通过对比实验发现,虽然噪声会导致动态网络发生微小的变化,但是相对于故障所导致的动态网络的整体结构性改变而言,这个影响很小。因此,可以根据噪声的情况设置恰当的阈值,从而过滤掉噪声的干扰,分析出真正的故障所在。
应当指出,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种软件故障预测方法,包括以下步骤:
S101、对软件运行过程中的方法执行信息进行监控,并对监控得到的数据进行处理以生成在一个时间段内的方法调用关系图;
S102、对被监控软件进行基本功能块的划分,根据划分结果和所述方法调用关系图生成各个功能块相应的方法调用关系网络;
S103、对软件的动态运行进行持续监控,生成当前功能块在时间片段Δti内系统的方法调用关系网络Gi;
S104、根据动态网络结构演化公式G′i+1=f(Gi,Δti+1)预测被监控软件的当前功能块在下一时间片段内的状态G’i+1,其中G′i+1=f(Gi,Δti+1)=Gk,Gk为对应功能块的方法调用关系网络时间切片;
S105、根据动态网络结构测量公式d=g(G′i+1,Gi+1),对当前功能块在时间片段Δti+1内得到的被监控软件状态Gi+1与预测状态G’i+1的差异进行测量,其中所述动态网络结构测量公式为:d=g(G′i+1,Gi+1)=Mi+1,Mi+1为矩阵G’i+1与Gi+1的差异矩阵;
S106、如果所测量的差异值超过预定阈值,则确定被监控软件的当前功能块在时间片段Δti+1内发生了故障。
2.根据权利要求1所述的软件故障预测方法,其中所述步骤S101具体包括:
对软件行为进行持续监控,得到软件运行时的方法执行信息;以及
对监控数据进行处理,通过trace重构来获得软件运行时的方法调用序列,并生成K-core分解之后的调用关系网络。
3.根据权利要求2所述的软件故障预测方法,其中,所述trace重构包括:
对于执行服务请求的线程附加一个特有的traceId,同时将其加入到同一个trace的所有的数据记录之中;
根据记录的traceId将监控数据中的同一个traceId的方法提取出来,通过对它们的开始与结束时间排序来重构trace路径。
4.根据权利要求3所述的软件故障预测方法,其中,所述trace重构还包括引入两个附加参数来进行trace重构:执行顺序与执行栈大小。
5.根据权利要求3所述的软件故障预测方法,其中,所述trace重构还包括给所有的trace方法名建立一个统一的映射,将其映射成为数字ID。
6.根据权利要求1所述的软件故障预测方法,其中,选取差异矩阵的2范数来作为生成网络的调用矩阵之间的差异的测量标准。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410554598.9A CN104331362B (zh) | 2014-10-17 | 2014-10-17 | 一种软件故障预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410554598.9A CN104331362B (zh) | 2014-10-17 | 2014-10-17 | 一种软件故障预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104331362A CN104331362A (zh) | 2015-02-04 |
CN104331362B true CN104331362B (zh) | 2015-11-11 |
Family
ID=52406094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410554598.9A Expired - Fee Related CN104331362B (zh) | 2014-10-17 | 2014-10-17 | 一种软件故障预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331362B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105207806A (zh) * | 2015-08-20 | 2015-12-30 | 百度在线网络技术(北京)有限公司 | 分布式服务的监控方法及装置 |
CN108228779B (zh) * | 2017-12-28 | 2021-03-23 | 华中师范大学 | 一种基于学习社区对话流的成绩预测方法 |
CN112134356A (zh) * | 2020-02-11 | 2020-12-25 | 吴龙圣 | 基于大数据分析的智能电网故障监控方法及系统 |
CN113467407B (zh) * | 2021-09-06 | 2021-11-16 | 西安热工研究院有限公司 | 一种分散控制系统故障信息收集方法、系统及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008234520A (ja) * | 2007-03-23 | 2008-10-02 | Toyota Central R&D Labs Inc | ソフトウェア挙動監視装置、ソフトウェア挙動監視システム及びそのプログラム |
TW201201120A (en) * | 2010-06-30 | 2012-01-01 | Univ Shu Te | Failure prediction system for software maintenance |
CN103930346A (zh) * | 2011-09-20 | 2014-07-16 | 波音公司 | 一体化表面热管理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257921B (zh) * | 2013-04-16 | 2015-07-22 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
-
2014
- 2014-10-17 CN CN201410554598.9A patent/CN104331362B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008234520A (ja) * | 2007-03-23 | 2008-10-02 | Toyota Central R&D Labs Inc | ソフトウェア挙動監視装置、ソフトウェア挙動監視システム及びそのプログラム |
TW201201120A (en) * | 2010-06-30 | 2012-01-01 | Univ Shu Te | Failure prediction system for software maintenance |
CN103930346A (zh) * | 2011-09-20 | 2014-07-16 | 波音公司 | 一体化表面热管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104331362A (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459766B (zh) | 一种面向微服务系统的调用链跟踪与分析方法 | |
KR102483025B1 (ko) | 운영 유지 시스템 및 방법 | |
Yang et al. | A time efficient approach for detecting errors in big sensor data on cloud | |
Arbesser et al. | Visplause: Visual data quality assessment of many time series using plausibility checks | |
CN104331362B (zh) | 一种软件故障预测方法 | |
CN109150619B (zh) | 一种基于网络流量数据的故障诊断方法及系统 | |
CN107656176A (zh) | 一种基于改进贝叶斯Petri网的电网故障诊断方法 | |
CN111259073A (zh) | 基于日志、流量和业务访问的业务系统运行状态智能研判系统 | |
CN105656693A (zh) | 一种基于回归的信息安全异常检测的方法及系统 | |
Momtazpour et al. | Analyzing invariants in cyber-physical systems using latent factor regression | |
Domova et al. | Towards intelligent alarm management in the age of IIoT | |
Jacobs et al. | Large-scale industrial alarm reduction and critical events mining using graph analytics on spark | |
Fournier-Viger et al. | Discovering alarm correlation rules for network fault management | |
CN114095032B (zh) | 基于Flink和RVR的数据流压缩方法、边缘计算系统及存储介质 | |
EP4010828A1 (en) | Automatic generation of detection alerts | |
CN102158372A (zh) | 一种分布式系统异常检测方法 | |
Sikdar et al. | Time series analysis of temporal networks | |
CN105722129A (zh) | 一种基于fsax-markov模型的无线传感网事件检测方法及系统 | |
Arjannikov et al. | Using markov chains to model sensor network reliability | |
CN112699281A (zh) | 一种基于gspan算法的告警事件规则挖掘方法与系统 | |
CN110417621B (zh) | 一种轻量级嵌入式系统异常运行状态检测方法 | |
CN106874525B (zh) | 一种风电机组设备故障筛查、统计的方法与装置 | |
Lo et al. | Coding‐based schemes for fault identification in communication networks | |
Brenner et al. | Modelling Grid5000 point availability with SAN | |
Khan et al. | Context-based irregular activity detection in event logs for forensic investigations: An itemset mining approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151111 Termination date: 20171017 |
|
CF01 | Termination of patent right due to non-payment of annual fee |