CN110427316A - 基于访问行为感知的嵌入式软件缺陷修复方法 - Google Patents

基于访问行为感知的嵌入式软件缺陷修复方法 Download PDF

Info

Publication number
CN110427316A
CN110427316A CN201910597056.2A CN201910597056A CN110427316A CN 110427316 A CN110427316 A CN 110427316A CN 201910597056 A CN201910597056 A CN 201910597056A CN 110427316 A CN110427316 A CN 110427316A
Authority
CN
China
Prior art keywords
defect
code
access
equipment
behavioural characteristic
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
CN201910597056.2A
Other languages
English (en)
Other versions
CN110427316B (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.)
Shenyang Aerospace University
Original Assignee
Shenyang Aerospace University
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 Shenyang Aerospace University filed Critical Shenyang Aerospace University
Priority to CN201910597056.2A priority Critical patent/CN110427316B/zh
Publication of CN110427316A publication Critical patent/CN110427316A/zh
Application granted granted Critical
Publication of CN110427316B publication Critical patent/CN110427316B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Quality & Reliability (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于访问行为感知的嵌入式软件缺陷修复方法,包括如下步骤:对设备访问缺陷的症状进行建模;对设备访问缺陷进行分类,并构建修复模板;对硬件设备访问相关的代码片段进行聚类;对待修复的源程序进行缺陷语句定位;判断代码是否包含设备访问行为;针对包含设备访问行为的代码,判断其行为特征是否已出现缺陷症状,确定缺陷类型,并根据缺陷类型选取修复模板;将缺陷代码与聚类结果进行比较,计算缺陷代码与各聚类中心的距离;选取聚类中心与缺陷代码距离最近的类别作为修复素材代码,并合成候选修复补丁代码;根据行为相似性对修复后的代码段进行排序。该方法能够根据设备访问行为特征,实现嵌入式软件缺陷的自动化修复。

Description

基于访问行为感知的嵌入式软件缺陷修复方法
技术领域
本发明涉及软件缺陷的修复方法,特别涉及嵌入式软件。
背景技术
软件缺陷(通常称为Bug)在各类软件中普遍存在,带有缺陷的软件在运行过程中可能会引发错误或者导致故障,因此需要在软件维护阶段及时地发现缺陷并采取有效修复措施。软件缺陷类型众多,软件代码规模庞大,人工修复周期长、成本高,利用机器学习、数据分析等技术实现自动化的软件缺陷修复是未来的趋势。
目前针对软件缺陷修复主要包括缺陷定位、补丁生成和修复质量评估三个阶段,其中缺陷定位经过多年的发展已经逐步完善,但在缺陷修复的准确率方面无法满足实际系统的需求,主要问题是目前的框架下所支持的缺陷修复类型有限,不足以支持整个修复框架,这就需要构建差异化的修复策略,针对不同领域和不同特点的程序建立不同的修复方法。而嵌入式软件具有软硬件紧密耦合的特点,程序中包含大量的对设备的访问操作,这些访问通常是由一条或多条指令完成,这些指令分布在程序中的不同位置,但是具有很强的相关性。现有的软件缺陷修复技术并不适用于嵌入式软件。现有的修复技术通常是局限在语句层面的修复,而嵌入式软件中设备访问缺陷需要进行行为层面的分析。行为层面的缺陷表达可以更好地理解缺陷内涵,指导高质量修复,但目前缺乏面向嵌入式软件设备访问行为缺陷的模型,无法满足嵌入式软件中设备访问缺陷的修复需求。
发明内容
鉴于此,本发明的目的在于提供一种基于访问行为感知的嵌入式软件缺陷修复方法,以解决现有的软件缺陷修复方法不适于嵌入式软件的问题。
本发明提供的技术方案是:基于访问行为感知的嵌入式软件缺陷修复方法,包括如下步骤:
步骤1:针对嵌入式系统中硬件访问行为进行建模,提取设备访问行为特征和属性,对设备访问缺陷的症状进行建模;
步骤2:根据嵌入式设备访问行为特征,对设备访问缺陷进行分类,并针对同一类型的缺陷构建修复模板;
步骤3:对开发文档中的示例代码和代码仓库进行分析,提取硬件设备访问相关的代码片段,并根据步骤1中所建立的模型,对代码片段进行聚类;
步骤4:利用程序频谱分析技术对待修复的源程序进行缺陷语句定位,得到疑似缺陷语句的列表;
步骤5:依次处理列表中的疑似缺陷语句,结合语句中包含的变量、设备句柄、参数、以及上下文信息判断该代码是否包含设备访问行为;
步骤6:针对包含设备访问行为的代码,判断其行为特征是否已出现缺陷症状,确定缺陷类型,并根据缺陷类型选取修复模板;
步骤7:将缺陷代码与步骤3中得到的聚类结果进行比较,根据行为相似度计算缺陷代码与各聚类中心的距离;
步骤8:优先选取聚类中心与缺陷代码距离最近的类别作为修复素材代码,然后用元启发式搜索技术合成候选修复补丁代码;
步骤9:根据行为相似性对修复后的代码段进行排序,排序结果作为缺陷修复质量评价依据。
优选,步骤1中,访问行为的特征和属性包括寄存器状态、地址范围、模块类型、端口类型。
进一步优选,步骤7包括如下步骤:
步骤7-1:根据步骤1所建立的设备访问行为模型,对缺陷代码进行分析,提取缺陷代码的访问行为特征;
步骤7-2:计算步骤7-1提取的缺陷代码访问行为特征点和步骤3中的各个聚类中心的距离。
进一步优选,步骤9包括如下步骤:
步骤9-1:将步骤8得到的修复补丁代码应用到待修复程序中,并记录下修复位置;
步骤9-2:对步骤9-1中修复位置处的代码段进行分析、提取其访问行为特征,计算该代码段与步骤6选取的修复模板的行为相似性,并进行排序,相似性越高的排序越靠前,排序越靠前表示修复质量越高。
本发明提供的基于访问行为感知的嵌入式软件缺陷修复方法的有益效果如下:
(1)本发明提供的方法将现有程序缺陷的定位和识别从语句层面提升到行为层面,即:以代码行为特征进行缺陷程序的识别和定位,可以更准确地实现对程序缺陷的描述,尤其适用于软硬件关联性较高的嵌入式程序;
(2)本发明提供的方法将示例代码和开源代码仓库的示例代码作为缺陷修复素材,能够提高缺陷修复补丁代码的质量;
(3)本发明提供的方法对于代码中的行为特征进行聚类,将候选补丁按照行为度量进行排序,有利于在补丁搜索过程中快速发现正确代码补丁。
具体实施方式
下面将结合具体的实施方案对本发明进行进一步的解释,但并不局限本发明。
本发明提供了一种基于访问行为感知的嵌入式软件缺陷修复方法,包括如下步骤:
步骤1:针对嵌入式系统中硬件访问行为进行建模,提取设备访问行为特征和属性,对设备访问缺陷的症状进行建模;
其中,提取设备访问行为特征和属性的过程中,需通过解析嵌入式代码,根据设备访问对象(如存储器、通信端口等),确定具体的访问行为(如读写寄存器、访问端口、管理中断等),访问行为的特征和属性主要包括寄存器状态、地址范围、模块类型、端口类型等;
步骤2:根据嵌入式设备访问行为特征,对设备访问缺陷进行分类,并针对同一类型的缺陷构建修复模板;
其中,修复模板包括设备访问的基本规范,如初始化流程、寄存器配置、读写时序等;
步骤3:对开发文档中的示例代码和代码仓库进行分析,提取硬件设备访问相关的代码片段,并根据步骤1中所建立的模型,对代码片段进行聚类;
其中,示例代码和代码仓库主要来源于芯片手册和成熟的开源代码仓库,对代码片段进行聚类,具体为:根据代码片段的访问行为特征,如寄存器状态、地址范围、模块类型、端口类型等进行聚类操作,聚类后的结果是将具有相近的行为特征的代码片段划归为一类;
步骤4:利用程序频谱分析技术对待修复的源程序进行缺陷语句定位,得到疑似缺陷语句的列表;
其中,程序频谱分析技术可以根据测试用例集对待修复程序进行分析,并定位到疑似缺陷语句;
步骤5:依次处理列表中的疑似缺陷语句,结合语句中包含的变量、设备句柄、参数、以及上下文信息判断该代码是否包含设备访问行为;
步骤6:针对包含设备访问行为的代码,判断其行为特征是否已出现缺陷症状,确定缺陷类型,并根据缺陷类型选取修复模板;
步骤7:将缺陷代码与步骤3中得到的聚类结果进行比较,根据行为相似度计算缺陷代码与各聚类中心的距离;
其中,步骤7具体包括如下步骤:
步骤7-1:根据步骤1所建立的设备访问行为模型,对缺陷代码进行分析,提取缺陷代码的访问行为特征,即:寄存器状态、地址范围、模块类型、端口类型等;
步骤7-2:计算步骤7-1提取的缺陷代码访问行为特征点和步骤3中的各个聚类中心的距离,该距离作为访问行为的相似性度量依据;
步骤8:优先选取聚类中心与缺陷代码距离最近的类别作为修复素材代码,然后用元启发式搜索技术合成候选修复补丁代码;
其中,元启发式搜索技术主要采用演化算法、遗传算法合成修复补丁代码,该修复补丁代码可以保证程序通过测试用例集;
步骤9:根据行为相似性对修复后的代码段进行排序,排序结果作为缺陷修复质量评价依据;
其中,步骤9具体包括如下步骤:
步骤9-1:将步骤8得到的修复补丁代码应用到待修复程序中,并记录下修复位置;
步骤9-2:对步骤9-1中修复位置处的代码段进行分析、提取其访问行为特征,计算该代码段与步骤6选取的修复模板的行为相似性,并进行排序,相似性越高的排序越靠前,排序越靠前表示修复质量越高。
该基于访问行为感知的嵌入式软件缺陷修复方法将现有程序缺陷的定位和识别从语句层面提升到行为层面,即:以代码行为特征进行缺陷程序的识别和定位,可以更准确地实现对程序缺陷的描述,尤其适用于软硬件关联性较高的嵌入式程序;该方法将示例代码和开源代码仓库的示例代码作为缺陷修复素材,能够提高缺陷修复补丁代码的质量;该方法对于代码中的行为特征进行聚类,将候选补丁按照行为度量进行排序,有利于在补丁搜索过程中快速发现正确代码补丁。
上面对本发明的实施方式做了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

Claims (4)

1.基于访问行为感知的嵌入式软件缺陷修复方法,其特征在于,包括如下步骤:
步骤1:针对嵌入式系统中硬件访问行为进行建模,提取设备访问行为特征和属性,对设备访问缺陷的症状进行建模;
步骤2:根据嵌入式设备访问行为特征,对设备访问缺陷进行分类,并针对同一类型的缺陷构建修复模板;
步骤3:对开发文档中的示例代码和代码仓库进行分析,提取硬件设备访问相关的代码片段,并根据步骤1中所建立的模型,对代码片段进行聚类;
步骤4:利用程序频谱分析技术对待修复的源程序进行缺陷语句定位,得到疑似缺陷语句的列表;
步骤5:依次处理列表中的疑似缺陷语句,结合语句中包含的变量、设备句柄、参数、以及上下文信息判断该代码是否包含设备访问行为;
步骤6:针对包含设备访问行为的代码,判断其行为特征是否已出现缺陷症状,确定缺陷类型,并根据缺陷类型选取修复模板;
步骤7:将缺陷代码与步骤3中得到的聚类结果进行比较,根据行为相似度计算缺陷代码与各聚类中心的距离;
步骤8:优先选取聚类中心与缺陷代码距离最近的类别作为修复素材代码,然后用元启发式搜索技术合成候选修复补丁代码;
步骤9:根据行为相似性对修复后的代码段进行排序,排序结果作为缺陷修复质量评价依据。
2.按照权利要求1所述基于访问行为感知的嵌入式软件缺陷修复方法,其特征在于:步骤1中,访问行为的特征和属性包括寄存器状态、地址范围、模块类型、端口类型。
3.按照权利要求1所述基于访问行为感知的嵌入式软件缺陷修复方法,其特征在于:步骤7包括如下步骤:
步骤7-1:根据步骤1所建立的设备访问行为模型,对缺陷代码进行分析,提取缺陷代码的访问行为特征;
步骤7-2:计算步骤7-1提取的缺陷代码访问行为特征点和步骤3中的各个聚类中心的距离。
4.按照权利要求1所述基于访问行为感知的嵌入式软件缺陷修复方法,其特征在于:步骤9包括如下步骤:
步骤9-1:将步骤8得到的修复补丁代码应用到待修复程序中,并记录下修复位置;
步骤9-2:对步骤9-1中修复位置处的代码段进行分析、提取其访问行为特征,计算该代码段与步骤6选取的修复模板的行为相似性,并进行排序,相似性越高的排序越靠前,排序越靠前表示修复质量越高。
CN201910597056.2A 2019-07-04 2019-07-04 基于访问行为感知的嵌入式软件缺陷修复方法 Active CN110427316B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910597056.2A CN110427316B (zh) 2019-07-04 2019-07-04 基于访问行为感知的嵌入式软件缺陷修复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910597056.2A CN110427316B (zh) 2019-07-04 2019-07-04 基于访问行为感知的嵌入式软件缺陷修复方法

Publications (2)

Publication Number Publication Date
CN110427316A true CN110427316A (zh) 2019-11-08
CN110427316B CN110427316B (zh) 2023-02-14

Family

ID=68410245

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910597056.2A Active CN110427316B (zh) 2019-07-04 2019-07-04 基于访问行为感知的嵌入式软件缺陷修复方法

Country Status (1)

Country Link
CN (1) CN110427316B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737120A (zh) * 2020-06-15 2020-10-02 河南工业大学 一种软件缺陷修复方法及装置
CN114064472A (zh) * 2021-11-12 2022-02-18 天津大学 基于代码表示的软件缺陷自动修复加速方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937392A (zh) * 2010-08-27 2011-01-05 华南理工大学 一种嵌入式软件动态缺陷检测方法
CN102750220A (zh) * 2011-12-31 2012-10-24 中国信息安全测评中心 一种软件源代码安全缺陷分析的方法和装置
CN104239082A (zh) * 2013-06-20 2014-12-24 上海博达数据通信有限公司 嵌入式系统的热补丁实现方法
CN104699611A (zh) * 2015-03-18 2015-06-10 北京航空航天大学 一种基于开源软件缺陷代码修改模式的缺陷信息提取方法
US20150363197A1 (en) * 2014-06-13 2015-12-17 The Charles Stark Draper Laboratory Inc. Systems And Methods For Software Analytics
CN106445801A (zh) * 2016-04-27 2017-02-22 南京慕测信息科技有限公司 一种基于频谱定位和可视化定位软件缺陷的方法
US20170270302A1 (en) * 2012-09-28 2017-09-21 Synopsys, Inc. Security remediation
CN107688748A (zh) * 2017-09-05 2018-02-13 中国人民解放军信息工程大学 基于漏洞指纹的脆弱性代码克隆检测方法及其装置
CN108021390A (zh) * 2017-10-24 2018-05-11 南京航空航天大学 一种Java应用编程接口的文档缺陷自动修复方法
CN109165159A (zh) * 2018-08-10 2019-01-08 北京理工大学 一种基于程序频谱的多缺陷定位方法
WO2019094933A1 (en) * 2017-11-13 2019-05-16 The Charles Stark Draper Laboratory, Inc. Automated repair of bugs and security vulnerabilities in software
CN109783387A (zh) * 2019-01-18 2019-05-21 深圳壹账通智能科技有限公司 穿线测试方法、装置、计算机设备及存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937392A (zh) * 2010-08-27 2011-01-05 华南理工大学 一种嵌入式软件动态缺陷检测方法
CN102750220A (zh) * 2011-12-31 2012-10-24 中国信息安全测评中心 一种软件源代码安全缺陷分析的方法和装置
US20170270302A1 (en) * 2012-09-28 2017-09-21 Synopsys, Inc. Security remediation
CN104239082A (zh) * 2013-06-20 2014-12-24 上海博达数据通信有限公司 嵌入式系统的热补丁实现方法
CN106663003A (zh) * 2014-06-13 2017-05-10 查尔斯斯塔克德拉珀实验室公司 用于软件分析的系统和方法
US20150363197A1 (en) * 2014-06-13 2015-12-17 The Charles Stark Draper Laboratory Inc. Systems And Methods For Software Analytics
CN104699611A (zh) * 2015-03-18 2015-06-10 北京航空航天大学 一种基于开源软件缺陷代码修改模式的缺陷信息提取方法
CN106445801A (zh) * 2016-04-27 2017-02-22 南京慕测信息科技有限公司 一种基于频谱定位和可视化定位软件缺陷的方法
CN107688748A (zh) * 2017-09-05 2018-02-13 中国人民解放军信息工程大学 基于漏洞指纹的脆弱性代码克隆检测方法及其装置
CN108021390A (zh) * 2017-10-24 2018-05-11 南京航空航天大学 一种Java应用编程接口的文档缺陷自动修复方法
WO2019094933A1 (en) * 2017-11-13 2019-05-16 The Charles Stark Draper Laboratory, Inc. Automated repair of bugs and security vulnerabilities in software
CN109165159A (zh) * 2018-08-10 2019-01-08 北京理工大学 一种基于程序频谱的多缺陷定位方法
CN109783387A (zh) * 2019-01-18 2019-05-21 深圳壹账通智能科技有限公司 穿线测试方法、装置、计算机设备及存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
HUARUI LIN ET AL.: "PFix: fixing concurrency bugs based on memory access patterns", 《PROCEEDINGS OF THE 33RD ACM/IEEE INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING》 *
MING WEN ET AL.: "Context-Aware Patch Generation for Better Automated Program Repair", 《2018 IEEE/ACM 40TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE)》 *
YALIN KE ET AL.: "Repairing Programs with Semantic Code Search (T)", 《2015 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE)》 *
何博远: "逻辑漏洞检测与软件行为分析关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 *
潘琢金: "基于RSSI定位的WSN虫洞攻击节点检测与仿真", 《计算机仿真》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737120A (zh) * 2020-06-15 2020-10-02 河南工业大学 一种软件缺陷修复方法及装置
CN111737120B (zh) * 2020-06-15 2022-09-23 河南工业大学 一种软件缺陷修复方法及装置
CN114064472A (zh) * 2021-11-12 2022-02-18 天津大学 基于代码表示的软件缺陷自动修复加速方法
CN114064472B (zh) * 2021-11-12 2024-04-09 天津大学 基于代码表示的软件缺陷自动修复加速方法

Also Published As

Publication number Publication date
CN110427316B (zh) 2023-02-14

Similar Documents

Publication Publication Date Title
CN108375715B (zh) 一种配电网线路故障风险日预测方法及系统
CN103578568B (zh) 固态硬盘的性能测试方法及装置
CN110533086B (zh) 图像数据半自动标注方法
CN108764480A (zh) 一种信息处理的系统
CN106663003A (zh) 用于软件分析的系统和方法
CN107437113A (zh) 一种配电主设备带电检测判据知识库系统及其实现方法
CN110427316A (zh) 基于访问行为感知的嵌入式软件缺陷修复方法
CN115440292B (zh) 存储芯片的测试方法、装置、设备及存储介质
CN109726058A (zh) 检测方法、装置及计算机设备
CN109189407A (zh) 一种对多芯片烧录的统计方法、系统、装置和存储介质
CN114255784A (zh) 一种基于声纹识别的变电站设备故障诊断方法及相关装置
US8649990B2 (en) Method for detecting variance in semiconductor processes
US20210166362A1 (en) Wafer map identification method and computer-readable recording medium
CN110108717A (zh) 一种显示模组生产设备状态评估方法,装置及系统
CN111330871B (zh) 一种品质分类方法及装置
CN110221933A (zh) 代码缺陷辅助修复方法及系统
CN113569988A (zh) 一种算法模型评测方法及系统
CN117520184A (zh) 一种计算机软件开发用测试系统
CN105678557A (zh) 模型生成方法及装置、服务质量的评估方法及装置
CN113902222B (zh) 一种新能源智慧运维系统
CN112380224B (zh) 一种面向海量异构多维数据采集的质量大数据系统
CN113221108B (zh) 一种工控系统漏洞扫描工具综合评价方法
CN115587333A (zh) 一种基于多分类模型的失效分析故障点预测方法及系统
CN114201328A (zh) 基于人工智能的故障处理方法、装置、电子设备及介质
CN115599576A (zh) 修补算法的验证方法、电子设备及存储介质

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