一种去除完美理解假设的软件故障定位系统技术方案

技术编号:19744981 阅读:25 留言:0更新日期:2018-12-12 04:41
本发明专利技术公开了一种关于去除完美理解假设的软件故障定位方法,本方法通过实现Eclipse监控插件,将用户的调试信息保存在MYSQL数据库中,这些信息包括用户的调试行为信息和程序上下文情景信息。通过分析这些信息发现,对于同一故障调试人员的调试轨迹具有一定的关联性,参照关键类本方法给出了调试中的关键信息,并采用基于标签的关键信息识别方法,作为通用的推荐规则,将关键信息作为推荐的内容,直接反馈到用户的集成开发环境中,从而辅助调试人员定位故障。

【技术实现步骤摘要】
一种去除完美理解假设的软件故障定位系统
本专利技术涉及软件故障定位方法,特别是去除完美理解假设的情况下,定义与识别关键信息,并计算关键程度推荐给用户,辅助调试人员定位故障。
技术介绍
对于软件调试来说,如何找到可用于推荐的关键信息是推荐系统在故障定位中应用的最重要一环。这激励LisaBurnell和EricHorvitz研究如何利用逻辑和概率推理的方法来支持软件调试,他们描述了一个基于逻辑的合成和概率推理的方法[18],可以被用来识别在复杂的软件中故障的来源和位置.该方法可以被用来诊断Sabre系统在运行时的错误,Sabre系统是世界上最大的分时预定系统.验证结果显示,该方法可以把软件工程师的注意力引向那些有很大可能包含错误的程序执行路径和程序指令上,从而提高调试效率.利用公式计算可疑度,将语句按照可疑度进行排名,推荐给用户。这种方式很大程度上减少了开发人员理解程序故障的时间,更快速的定位故障。其中较典型的比如Tarantula公式,Tarantula利用了从标准测试工具中很容易获得的信息:关于每组测试用例的成功/失败信息,每个测试用例执行的实体(比如,语句,分支,方法),以及待测程序的源代码。Tarantula的思路是,在一个主要执行失败的测试用例的程序比那些主要通过成功测试用例的程序更有可能是错误的.不同于此前使用的故障定位技术,Tarantula允许一些对错误的容忍偶尔可以通过成功的测试用例.这种容忍经常可以提供更有效的故障定位信息。从2008年至今,国内外出现很多关于关键类识别的文献,比如:《AutomaticIdentificationofKeyClassesinaSoftwareSystemUsingWebminingTechniques》、《一种基于关键类判定的代码提交理解辅助方法》、《基于关键类判定的代码提交理解辅助方法》,国内外学者不断通过实验验证关键类关键变量的识别可以提高软件在开发和调试过程中的速度和准确度。但目前尚缺乏关于调试时的关键类、关键变量规则的提出,本课题针对这一缺陷,通过监控、搜集调试信息,提出关键变量存在的通用规则,给出代码推荐的统一模式。本方法关于关键信息的定义参照PhilippeGalinier等学者对关键类的定义:(1)最重要的类一定需要更深层的测试(2)频繁修改的类是最复杂的且发生错误倾向最大的(3)从本质上来说,某个元素引用的其他元素的数量越多,这个元素就越重要.
技术实现思路
本专利技术作为辅助软件故障定位的手段,所要解决的是如何从调试信息中识别出关键信息,并将计算后的关键信息按照关键程度排名推荐给用户。本专利技术的技术解决问题是:关键信息的识别,并推荐给用户,提高故障定位的效率。本专利技术的技术解决方案:基于标签的关键信息识别方法。调试信息的收集是利用eclipse监控插件监控调试人员调试行为,并将其保存在MYSQL数据库中,包括用户设置的断点位置、断点表达式、查看的变量等信息。关键信息的识别与推荐是受机器学习在推荐系统领域有效性的启发,利用UGC标签应用算法,从程序的调试信息中抽取可判别性特征来度量程序中调试信息的关键性。UGC(UserGeneratedContent,用户生成的内容)是一种表示用户兴趣和对象语义的重要方式。当一个用户对一个对象打上标签,这个标签一方面描述了用户的兴趣,另一方面则表示对象的语义,从而将用户和对象联系起来。在本方法中,标签来源是监控到的用户调试信息,对象指的是关键信息。其中,关键信息关键程度的计算公式如下:其中,p(u,i)指的是程序u中变量i的关键程度,nu,b指的是程序u中断点行b的设置次数,nb,i指的是断点行b中变量i被查看的次数,指的是断点行b被多少个不同的用户设置过。推荐算法中的元素定义如下:1)标签(records)用records存储标签数据的四元组:records[i]=[projectName,breakpoint_line,value,countValue]projectName指的是调试项目的名称,breakpoint_line指的是设置断点的位置,value指的是用户查看的变量,countVaule是一个数组,统计当前变量被查看的次数。2)断点信息(project_tags)用project_tags存储即程序u中断点行b的设置次数project_tags[u][b]=n_(u,b);3)变量信息(tag_items)用tag_items存储用户调试时查看的变量信息tag_items[b][i]=n_(b,i)利用算法中的addValueToMat(theMat,key,value,incr)方法可以从records中统计出project_tags和tag_items,最后利用关键程度计算公式计算调试信息的关键程度,并以此为依据推荐给用户。本专利技术与现有技术相比的有益效果是:1)分析现有的故障定位技术,发现完美理解假设的故障定位方法中的缺陷;2)收集历史调试轨迹,在分析人为调试行为的基础上做关键信息的识别与推荐;3)从收集调试用户的调试信息出发,对影响调试效率的因素进行分析,提出了关键信息的存在,并提出基于标签的关键信息识别方法,将关键信息推荐给用户,从而提高故障定位的速度,提高调试效率。附图说明图1为监控插件的框架图。图2为基于标签的推荐算法结构图。具体实施方式下面将结合附图对本专利技术做进一步的详细说明。目前关于软件故障定位的研究都试图用某种计算方式预估程序易出错的位置,并推荐给用户,但通过研究和分析发现这些研究中有的忽略了人为参与的因素,导致故障定位的效果不如预期。本方法师徒去除这种完美理解假设的故障定位方法,以人为的历史调试轨迹为分析对象,找出共性,并提出基于标签的关键信息识别方法,作为推荐依据推荐给用户。如图1所示,本专利技术实现了监控调试人员行为轨迹的监控插件。当用户产生调试行为时,Eclipse平台上注入的监控插件会根据监控逻辑捕获用户调试行为的各属性数据,以及行为所处程序的上下文环境,经过数据处理模块,得到相关的信息,主要包括:用户ID,程序的类名、方法名、断点的位置和数量、断点表达式、查看的变量等。并将信息保存在MYSQL数据库当中,用作后续的关键信息识别与推荐。本专利技术中基于标签的关键信息识别方法结构图如图2所示。主要分为标签子系统和推荐子系统,标签子系统会对数据库中的调试信息进行分析和识别,首先建立用户和断点信息的映射,然后建立用户查看变量与断点之间的映射,生成用户-断点行-变量三元组保存标签数据,进入推荐子系统。推荐子系统会根据推荐算法计算调试信息的关键程度,包括程序语句、程序变量、程序分支在程序中的关键程度,并会给出相应的评分,按照评分高低,和当前用户设置的断点位置,将相关的TOPN关键信息推荐给用户。为了评估本专利技术的去除完美理解假设的软件故障定位方法,与当前软件故障定位领域被认为最有前景之一的基于程序频谱的故障定位技术(SBFL)进行实验比较。SBFL通常利用失败的和成功的程序频谱来评估程序中所有实体的风险值,并按照风险值进行排名推荐给用户。故障定位公式将选取SBFL技术中较典型的Jaccard公式进行比较。本文档来自技高网
...

【技术保护点】
1.一种去除完美理解假设的软件故障定位系统,其特征在于:关键信息识别模块和推荐模块;关键信息识别模块:通过分析监控到的调试信息,在数据库中建立关键信息与非关键信息之间的映射。具体来说,从搜集到的调试信息中提取结构性耦合信息及代码调试特征作为可判别特征,用来度量信息的关键性,识别出关键信息,包括程序中的关键变量、关键语句、关键分支。调试特征利用UGC标签应用算法获取,变量与变量之间的结构性耦合信息指明了变量之间所满足的静态耦合关系。推荐模块:受机器学习技术在推荐系统领域有效性的启发,本专利技术提出一种基于标签的关键信息识别方法,利用UGC标签应用算法,从程序的调试信息中抽取可判别性特征来度量程序中调试信息的关键性。可判别特征具体指的是变量与变量之间结构性耦合信息及代码调试特征。UGC(User Generated Content,用户生成的内容)是一种表示用户兴趣和对象语义的重要方式。当一个用户对一个对象打上标签,这个标签一方面描述了用户的兴趣,另一方面则表示对象的语义,从而将用户和对象联系起来。在本方法中,标签来源是监控到的用户调试信息,包括用于设置的断点行、查看的变量等;对象指的是调试中的关键信息,包括语句、变量、分支。根据此算法,可得出目标调试程序中关键信息的排名程度,并将按照此排名在用户产生调试行为时,根据当前调试情况,将信息动态的反馈到用户的集成开发环境中。...

【技术特征摘要】
1.一种去除完美理解假设的软件故障定位系统,其特征在于:关键信息识别模块和推荐模块;关键信息识别模块:通过分析监控到的调试信息,在数据库中建立关键信息与非关键信息之间的映射。具体来说,从搜集到的调试信息中提取结构性耦合信息及代码调试特征作为可判别特征,用来度量信息的关键性,识别出关键信息,包括程序中的关键变量、关键语句、关键分支。调试特征利用UGC标签应用算法获取,变量与变量之间的结构性耦合信息指明了变量之间所满足的静态耦合关系。推荐模块:受机器学习技术在推荐系统领域有效性的启发,本发明提出一种基于标签的关键信息识别方法,利用UGC标签应用算法,从程序的调试信息中抽取可判别性特征来度量程序中调试信息的关键性。可判别特征具体指的是变量与变量之间结构性耦合信息及代码调试特征。UGC(UserGeneratedContent,用户生成的内容)是一种表示用户兴趣和对象语义的重要方式。当一...

【专利技术属性】
技术研发人员:杨波于茜
申请(专利权)人:北方工业大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1