关于软件故障定位技术的研究进展及展望

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于软件故障定位技术的研究进展及展望
摘要在软件调试工作中,故障定位非常耗时耗力,为了使调试成本进一步降低,需要由开发人员来配合进行软件故障的定位与修复,软件故障定位技术需要对源代码进行审查,并对软件在测试过程中所产生的行为,同时依据测试结果来实现故障中代码片段的定位。

鉴于此,本文便对软件故障定位技术的研究进展进行了综述,以此探讨这些不同故障定位技术的原理及建模技术,并对软件故障定位技术的未来研究趋势进行了展望。

关键词软件故障;定位技术;研究進展;前景展望
1 软件故障定位技术的研究进展
根据软件故障在定位时是否需要软件协助这一特征,可将软件故障定位技术划分成两类,分别是基于静态分析的故障定位技术与基于测试的故障定位技术,以下便对这两种软件故障定位技术的研究进展进行探讨[1]。

2 软件故障定位技术的静态分析手段研究进展
在软件故障定位技术的静态分析手段中,主要包括四种形式的故障分析方法,分别是面向语句的故障定位方法、形式化故障定位方法、符号执行故障定位方法与指针分析式故障定位方法。

在面句语句的故障定位方法中,主要是根据程序设计语言中所具备的基本约束来对程序的控制结构、语法和数据类型进行检测的,以实现故障的定位,并进行预警的同时给出具体的修复建议。

FindBugs是面向语句的故障定位方法中的一个开源框架,在该框架中对超过300种故障及缺陷进行了预定义,而赵建军等人则在该框架的基础上,又定义了17种故障模式,并且设计了一种能够对AspectJ故障进行检测的XFindBugs系统。

在形式化故障定位方法中,主要是通过相应的逻辑方法或数学算法来对软件系统进行验证与描述,其描述的内容为系统性为及性质两个方面。

Flanagan等人采用自动定理与条件验证的方式对能够适用于Java代码进行静态检查的检查器进行了设计,该检查器能够在进行java代码编译时对常见的源代码故障进行检测。

在符号执行故障定位方法中,其是通过符号来当作变量值,并模拟程序路径,同时对路径中的变量值进行跟踪,以获得相应的路径条件,并采用约束求解法来对路径条件的满足性与否进行判定。

King在调试过程中便通过符号执行故障定位法的应用来对顺序程序进行调试,并取得了良好的调试效果。

Young等人则研发出一种能够对并发程序故障进行检测的符号执行并发故障定位技术,其利用Taylor算法来对程序流图进行生成,并在各个流图中对控制线程进行分配,并通过路径表达式来对符号执行值进行表示,同时由路径条件对符号执行条件进行表示,然后按照自上而下的方式来对该程序流图进行执行,从而使死锁、访问冲突等故障得到了准确的定位。

在指针分析式故障定位方法中,主要是根据指针所指的对象存储位置及其指针值来对故障进行定位的。

在指针分析式故障定位方法中,NPR问题是其重点内容。

对于NPR问题来说,其具体分析方法的研究进展
主要包括两类,其一是对空指针标注进行自动推导,为此,Cousot等人通过抽象域概念的定义来对程序的空值变量进行描述,并利用抽象解释对抽象域描述方法的正确性进行了证明[2]。

3 软件故障定位技术的测试手段研究进展
软件故障定位技术的测试手段属于动态化故障定位分析手段,其主要包括三类,分别是执行覆盖的故障定位、模型故障定位与依赖关系故障定位。

其中,执行覆盖的故障定位主要包含三种故障定位方法,分别是概率统计法、集合运算法与怀疑度计算优化。

Renieris与Reiss等人设计了一种最近邻执行轨迹的故障定位方法,共通过对夹角余弦、海量距离的计算,来对执行轨迹所具备的相似性进行良好体现,并从中分离出部分程施序当作可疑故障集合。

Jones等人则提出一种利用黄、红、绿等颜色来对语句故障进行可视化表示的方法。

Naish等人设计了一种利用C语言来对单故障程序发生时的两种情形进行了描述。

在模型故障定位中,诸多学者主要是对统计模型、时间频谱模型及程序状态模型进行了研究,Han等人设计了一种利用统计模型SOBER来实现故障定位的方法。

在依赖关系的故障定位中,Santelice等人则设计了一种组合覆盖式的故障定位方法;Baah 等人则在原有程序依赖图的前提下,对节点进行了增加,并构建了概率依赖图,其根据程序在失败时的节点信息来对PPDG节点中的条件概率进行计算。

4 软件故障定位技术的未来趋势展望
软件故障定位技术在未来研究趋势上将主要集中于故障模式、故障修复价代、多重故障影响这三个方面,并且,在未来发展中,将研发出更多的故障定位新技术与新方法,这些新技术与新方法将主要从以下角度入手:其一是采用软件来对过程信息进行开发;其二是通过程序语义信息的利用来使程序更易理解,进而帮助开发人员对故障进行定位与修复;其三是通过数据挖掘技术与人工智能技术的应用,以使程序的故障特征得到更好的识别,进而使故障定位工作能够更加有效的适用于规模不断扩大的软件[3]。

5 结束语
总而言之,在软件调试工作中,故障定位是其关键所在,对故障进行自动定位能够有效减少开发人员对程序进行手工检查的工作量,进而使软件的调试效率得到显著提升。

本文通过对现有的软件故障定位技术的研究进展进行了分析,明确了现有软件故障定位技术的适用范围及原力,并对其主要成果进行了探讨,最后对故障定位的未来研究趋势进行了展望。

参考文献
[1] 王志兵,李长云. 软件故障诊断技术综述[J]. 微计算机信息,2010,26(34):161-163,211.
[2] 杨书新,刁文. 一种改进的基于交叉矩阵统计的软件故障定位技术[J].
计算机工程与科学,2016,38(04):679-685.
[3] 王珣,王轶辰. 软件系统故障传播模型研究进展[J]. 计算机科学,2016,43(06):1-9,27.
张杰(1982-),女(苗族),湖南张家界人,硕士,讲师,主要研究方向:软件工程。

边文钰(1982-),女(汉族),山东人,硕士,讲师,主要研究方向:知识管理、高等教育教学研究。

相关文档
最新文档