CN110427316A - 基于访问行为感知的嵌入式软件缺陷修复方法 - Google Patents
基于访问行为感知的嵌入式软件缺陷修复方法 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering 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)
- Stored Programmes (AREA)
- Test And Diagnosis Of Digital Computers (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选取的修复模板的行为相似性,并进行排序,相似性越高的排序越靠前,排序越靠前表示修复质量越高。
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)
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)
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 | 深圳壹账通智能科技有限公司 | 穿线测试方法、装置、计算机设备及存储介质 |
-
2019
- 2019-07-04 CN CN201910597056.2A patent/CN110427316B/zh active Active
Patent Citations (13)
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)
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)
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 |
---|---|---|
CN106295807B (zh) | 一种信息处理的方法及装置 | |
CN103578568B (zh) | 固态硬盘的性能测试方法及装置 | |
CN110533086B (zh) | 图像数据半自动标注方法 | |
CN106663003A (zh) | 用于软件分析的系统和方法 | |
CN107437113A (zh) | 一种配电主设备带电检测判据知识库系统及其实现方法 | |
CN110427316A (zh) | 基于访问行为感知的嵌入式软件缺陷修复方法 | |
CN115440292B (zh) | 存储芯片的测试方法、装置、设备及存储介质 | |
CN109726058A (zh) | 检测方法、装置及计算机设备 | |
CN114255784A (zh) | 一种基于声纹识别的变电站设备故障诊断方法及相关装置 | |
CN110221933A (zh) | 代码缺陷辅助修复方法及系统 | |
CN109189407A (zh) | 一种对多芯片烧录的统计方法、系统、装置和存储介质 | |
CN114201328A (zh) | 基于人工智能的故障处理方法、装置、电子设备及介质 | |
CN109656615A (zh) | 一种基于代码方法重要程度进行权限预警的方法 | |
US8649990B2 (en) | Method for detecting variance in semiconductor processes | |
US20210166362A1 (en) | Wafer map identification method and computer-readable recording medium | |
CN110108717A (zh) | 一种显示模组生产设备状态评估方法,装置及系统 | |
CN102567351A (zh) | 一种数据库变更效果的测试方法及测试装置 | |
CN111330871B (zh) | 一种品质分类方法及装置 | |
CN113569988A (zh) | 一种算法模型评测方法及系统 | |
CN105678557A (zh) | 模型生成方法及装置、服务质量的评估方法及装置 | |
CN113902222B (zh) | 一种新能源智慧运维系统 | |
CN105469141A (zh) | 基于神经网络的预测方法及系统 | |
CN113221108B (zh) | 一种工控系统漏洞扫描工具综合评价方法 | |
CN114820618A (zh) | 瑕疵检测模型的训练方法、装置、设备及存储介质 | |
CN112380224A (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 |