[发明专利]软件源代码的验证方法及装置有效
申请号: | 201710038189.7 | 申请日: | 2017-01-18 |
公开(公告)号: | CN106886446B | 公开(公告)日: | 2020-10-23 |
发明(设计)人: | 马殿富;谭宇;赵永望;陈志伟;刘克瑞 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 杨贝贝;刘芳 |
地址: | 100191 北京市海淀区学*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 源代码 验证 方法 装置 | ||
1.一种软件源代码的验证方法,其特征在于,包括:
根据编程语言的语法规则,对软件源代码进行文法单元的划分,得到至少一个所述文法单元;
基于预设的下推自动机,对每个文法单元进行识别;
识别通过后,将所述文法单元编译为目标代码段;
根据预设的专用公理集,获取所述文法单元对应的第一指称语义,获取所述目标代码段对应的第二指称语义;
判断所述第一指称语义与所述第二指称语义是否一致;
若所述第一指称语义与所述第二指称语义不一致,确定所述软件源代码存在错误。
2.根据权利要求1所述的方法,其特征在于,所述文法单元为循环结构文法单元或非循环结构文法单元;
若所述文法单元为循环结构文法单元,相应的,所述判断所述第一指称语义与所述第二指称语义是否一致,包括:
基于循环交互证明算法,所述判断所述第一指称语义与所述第二指称语义是否一致;
若所述文法单元为非循环结构文法单元,相应的,所述判断所述第一指称语义与所述第二指称语义是否一致,包括:
基于自动推理算法,比较所述第一指称语义与所述第二指称语义是否一致。
3.根据权利要求1所述的方法,其特征在于,所述判断所述第一指称语义与所述第二指称语义是否一致之后,还包括:
若所述软件源代码中的每个文法单元的所述第一指称语义与所述第二指称语义均一致,确定所述软件源代码正确;
将所述软件源代码中的每个文法单元所对应的目标代码段进行组合,得到所述软件源代码对应的目标代码。
4.根据权利要求1所述的方法,其特征在于,
所述预设的下推自动机包含第一动作函数,所述第一动作函数包括状态调用接口和状态返回接口;
所述状态调用接口用于跳转到所述下推自动机的第二动作函数;所述第二动作函数为所述状态调用接口对应的动作函数;
所述状态返回接口用于从所述第二动作函数返回到第三动作函数;所述第三动作函数为位于所述第一动作函数之后的下一个动作函数;
相应的,所述基于预设的下推自动机,对每个文法单元进行识别,包括:
将所述预设的下推自动机的第一动作函数的字符与所述文法单元的当前字符匹配;
匹配成功后,根据所述第一动作函数的状态函数的状态调用接口,跳转到所述第二动作函数,将所有第二动作函数的字符与当前文法单元相关联的子文法单元的所有字符进行匹配;
匹配成功后,根据所述第一动作函数的状态返回接口返回所述第三动作函数,将所述第三动作函数的字符与所述文法单元的当前字符的下一个字符进行匹配。
5.根据权利要求1所述的方法,其特征在于,还包括:当确定所述软件源代码存在错误之后,修正所述文法单元对应的软件源代码。
6.一种软件源代码的验证装置,其特征在于,包括:
划分模块,根据编程语言的语法规则,对软件源代码进行文法单元的划分,得到至少一个所述文法单元;
识别模块,基于预设的下推自动机,对每个文法单元进行识别;
编译模块,识别通过后,将所述文法单元编译为目标代码段;
获取模块,根据预设的专用公理集,获取所述文法单元对应的第一指称语义,获取所述目标代码段对应的第二指称语义;
判断模块,判断所述第一指称语义与所述第二指称语义是否一致;
第一确定模块,若所述第一指称语义与所述第二指称语义不一致,确定所述软件源代码存在错误。
7.根据权利要求6所述的装置,其特征在于,所述文法单元为循环结构文法单元或非循环结构文法单元;
所述判断模块,具体用于当所述文法单元为循环结构文法单元时,基于循环交互证明算法,所述判断所述第一指称语义与所述第二指称语义是否一致;或当所述文法单元为非循环结构文法单元时,基于自动推理算法,比较所述第一指称语义与所述第二指称语义是否一致。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710038189.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种在线编程方法及装置
- 下一篇:基于云计算提升三维图形软件性能的系统及方法