CN104331362A - 一种软件故障预测方法 - Google Patents

一种软件故障预测方法 Download PDF

Info

Publication number
CN104331362A
CN104331362A CN201410554598.9A CN201410554598A CN104331362A CN 104331362 A CN104331362 A CN 104331362A CN 201410554598 A CN201410554598 A CN 201410554598A CN 104331362 A CN104331362 A CN 104331362A
Authority
CN
China
Prior art keywords
software
trace
monitored
matrix
network
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
Application number
CN201410554598.9A
Other languages
English (en)
Other versions
CN104331362B (zh
Inventor
胡晓晔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baoji University of Arts and Sciences
Original Assignee
Baoji University of Arts and Sciences
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Baoji University of Arts and Sciences filed Critical Baoji University of Arts and Sciences
Priority to CN201410554598.9A priority Critical patent/CN104331362B/zh
Publication of CN104331362A publication Critical patent/CN104331362A/zh
Application granted granted Critical
Publication of CN104331362B publication Critical patent/CN104331362B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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、对软件运行过程中的方法执行信息进行监控,并对监控得到的数据进行处理以生成在一个时间段内的方法调用关系图(call graph)。
在本实施例中,该步骤可以具体包括:
对软件行为进行持续监控,得到软件运行时的方法执行信息。其中,数据可以以dat文件的格式存储;以及
对监控数据进行处理,通过trace重构来获得软件运行时的方法调用序列,并生成K-core分解之后的调用关系网络。
其中,为了形象地说明trace的含义,这里以一个网络书店为例。类Bookstore的searchBook方法中分别调用类Catalog的getBook方法与类CRM(Customer Relationship Management)中的getOffers方法,而在CRM.getOffers方法的定义中又调用了Catalog.getBook方法。也就是说,书店既可以直接查询目录来获取书的信息,也可以通过咨询管理员由管理员来查询相关信息。
在监控的过程中,可以对于执行服务请求的线程附加一个特有的traceId,同时将其加入到同一个trace的所有的数据记录之中。根据记录的traceId,便可以将监控数据中的同一个traceId的方法提取出来,通过对它们的开始与结束时间排序便可以重构原来的trace路径。这样做理论上没有问题,但是如果网络系统规模极其巨大,系统时间也十分复杂,如果采用分布式部署的话,便会产生一个问题,即:如果分布式系统的系统时钟并不同步,那么每个数据记录的开始时间与结束时间便会存在误差,理想的trace重构过程便无法完成。
针对这一问题,可选地,可以引入两个附加参数来进行trace重构:执行顺序(execution order index)与执行栈大小(execution stack size),下文中简称为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)
C ⊆ V
iff ∀ v ∈ C : degre e H ( v ) ≥ k
满足如上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范数又称谱范数,其定义如下:
PAP 2 = ρ ( A T A ) - - - ( 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 (7)

1.一种软件故障预测方法,包括以下步骤:
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内发生了故障。
2.根据权利要求1所述的软件故障预测装置,优选的,其中所述步骤S101具体包括:
对软件行为进行持续监控,得到软件运行时的方法执行信息;以及
对监控数据进行处理,通过trace重构来获得软件运行时的方法调用序列,并生成K-core分解之后的调用关系网络。
3.根据权利要求1所述的软件故障预测方法,其中,所述trace重构包括:
对于执行服务请求的线程附加一个特有的traceId,同时将其加入到同一个trace的所有的数据记录之中;
根据记录的traceId将监控数据中的同一个traceId的方法提取出来,通过对它们的开始与结束时间排序来重构trace路径。
4.根据权利要求3所述的软件故障预测方法,其中,所述trace重构还包括引入两个附加参数来进行trace重构:执行顺序(execution order index)与执行栈大小(execution stack size)。
5.根据权利要求3所述的软件故障预测方法,其中,所述trace重构还包括给所有的trace方法名建立一个统一的映射,将其映射成为数字ID。
6.根据权利要求1所述的软件故障预测方法,步骤S105中,所述动态网络结构测量公式为:
d=g(G’i+1,Gi+1)=Mi+1
式中,Mi+1为矩阵G’i+1与Gi+1的差异矩阵。
7.根据权利要求6所述的软件故障预测方法,其中,选取差异矩阵的2范数来作为生成网络的调用矩阵之间的差异的测量标准。
CN201410554598.9A 2014-10-17 2014-10-17 一种软件故障预测方法 Expired - Fee Related CN104331362B (zh)

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 true CN104331362A (zh) 2015-02-04
CN104331362B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105207806A (zh) * 2015-08-20 2015-12-30 百度在线网络技术(北京)有限公司 分布式服务的监控方法及装置
CN108228779A (zh) * 2017-12-28 2018-06-29 华中师范大学 一种基于学习社区对话流的成绩预测方法
CN111260504A (zh) * 2020-02-11 2020-06-09 吴龙圣 智能电网监控方法、系统及智能电网控制器
CN113467407A (zh) * 2021-09-06 2021-10-01 西安热工研究院有限公司 一种分散控制系统故障信息收集方法、系统及设备

Citations (4)

* Cited by examiner, † Cited by third party
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
CN103257921A (zh) * 2013-04-16 2013-08-21 西安电子科技大学 一种基于改进随机森林算法的软件故障预测系统及其方法
CN103930346A (zh) * 2011-09-20 2014-07-16 波音公司 一体化表面热管理系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
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 波音公司 一体化表面热管理系统
CN103257921A (zh) * 2013-04-16 2013-08-21 西安电子科技大学 一种基于改进随机森林算法的软件故障预测系统及其方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105207806A (zh) * 2015-08-20 2015-12-30 百度在线网络技术(北京)有限公司 分布式服务的监控方法及装置
CN108228779A (zh) * 2017-12-28 2018-06-29 华中师范大学 一种基于学习社区对话流的成绩预测方法
CN108228779B (zh) * 2017-12-28 2021-03-23 华中师范大学 一种基于学习社区对话流的成绩预测方法
CN111260504A (zh) * 2020-02-11 2020-06-09 吴龙圣 智能电网监控方法、系统及智能电网控制器
CN112134356A (zh) * 2020-02-11 2020-12-25 吴龙圣 基于大数据分析的智能电网故障监控方法及系统
CN112165161A (zh) * 2020-02-11 2021-01-01 吴龙圣 基于物联网的智能电网监控方法及系统
CN113467407A (zh) * 2021-09-06 2021-10-01 西安热工研究院有限公司 一种分散控制系统故障信息收集方法、系统及设备
CN113467407B (zh) * 2021-09-06 2021-11-16 西安热工研究院有限公司 一种分散控制系统故障信息收集方法、系统及设备

Also Published As

Publication number Publication date
CN104331362B (zh) 2015-11-11

Similar Documents

Publication Publication Date Title
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
CN111885040A (zh) 分布式网络态势感知方法、系统、服务器及节点设备
CN104331362B (zh) 一种软件故障预测方法
US9865101B2 (en) Methods for detecting one or more aircraft anomalies and devices thereof
Momtazpour et al. Analyzing invariants in cyber-physical systems using latent factor regression
Jacobs et al. Large-scale industrial alarm reduction and critical events mining using graph analytics on spark
Domova et al. Towards intelligent alarm management in the Age of IIoT
Fournier-Viger et al. Discovering alarm correlation rules for network fault management
CN102158372B (zh) 一种分布式系统异常检测方法
Valli et al. Importance of AIOps for Turn Metrics and Log Data: A Survey
CN114095032B (zh) 基于Flink和RVR的数据流压缩方法、边缘计算系统及存储介质
Sikdar et al. Time series analysis of temporal networks
CN112769615B (zh) 一种异常分析方法及装置
Dorgo et al. Hierarchical frequent sequence mining algorithm for the analysis of alarm cascades in chemical processes
CN105722129A (zh) 一种基于fsax-markov模型的无线传感网事件检测方法及系统
Arjannikov et al. Using markov chains to model sensor network reliability
CN112699281A (zh) 一种基于gspan算法的告警事件规则挖掘方法与系统
Zhou et al. Performance evaluation method for network monitoring based on separable temporal exponential random graph models with application to the study of autocorrelation effects
Lo et al. Coding‐based schemes for fault identification in communication networks
CN106874525B (zh) 一种风电机组设备故障筛查、统计的方法与装置
CN113971119B (zh) 基于无监督模型的用户行为异常分析评估方法及系统
CN116149926A (zh) 业务指标的异常监测方法、装置、设备及存储介质
Wang et al. Multi‐block principal component analysis based on variable weight information and its application to multivariate process monitoring

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