[发明专利]一种基于语法树的程序正确性验证方法在审
申请号: | 200810060942.3 | 申请日: | 2008-04-08 |
公开(公告)号: | CN101261602A | 公开(公告)日: | 2008-09-10 |
发明(设计)人: | 吴卿;胡维华;谢红标;周必水 | 申请(专利权)人: | 杭州电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 杭州求是专利事务所有限公司 | 代理人: | 张法高 |
地址: | 310018浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 语法 程序 正确性 验证 方法 | ||
技术领域
本发明属于计算机应用技术领域,特别是涉及一种程序设计正确性验证的方法。
背景技术
程序正确性验证是IT技能测评自动化的一项重要内容,也是其中的一个理论、技术难点。程序的正确性,是指对于给定领域的所有的输入,程序都能给出正确的输出,程序都能给出正确的输出。然而正如Dijkstra所指出:“我们可以通过测试发现程序中存在的错误,但无法证明不存在错误。”通常情况下,即使是一个非常简单的程序,都可能具有无限多个可能的输入。
目前,进行程序正确性验证通常有两种方案:第一种,完全抛弃检查输入-输出的方法,通过形式语言理解来判断程序的正确性;第二种方案则维持采用检查输入-输出的方法,但不是检查所有的可能输入,而是检查领域问题的各种“典型”输入。限于形式语言理解研究的发展水平,第一种方案的研究、发展非常缓慢。国内外学者将研究的重点放在第二种方案上,也就是典型测试数据的自动生成,并提出了一些切实可的方法,如符号执行方法、迭代张弛法等,但这些方法的效率以及验证的准确性不够。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于语法树的程序正确性验证方法。
本发明解决其技术问题采用的技术方案如下:
1)采用XML的格式将源程序转换为程序语法树,具体方法是:
分析待验证程序的语义信息,转换成XML格式的语义表达,映射为一棵无序标签树。其中,程序名及程序中的各元素转化为相应层次的父节点和子节点;程序中的操作符、操作数为叶子节点。使用一个虚拟根节点将所有节点进行组合。
2)对程序语法树进行优化,具体方法是:
采用常量合并、同类语义合并、无用变量删除以及复杂表达式拆分的方法对1)中的程序语法树进行分析,排除语义的多样性,使同一功能呈现同一的语法树表现形式。
3)使用XPath语句对2)中的优化后的程序语法树进行表达,每一条XPath语句都对应一个权重,具体方法是:
①对于XPath语句组中的每一条XPath语句依次检验,如果XPath语句在待验证语法树中查询结果与在匹配树中的查询结果一致,则此XPath语句对应的权重值累加到作为结果的匹配度中;
②一组XPath语句查询完成,生成匹配树,将得到的匹配度作为最小匹配代价。
4)利用XPath路径的匹配方法验证源程序整体的正确性,具体方法是:
将匹配树与每一待验证树进行比较。取匹配树的每条路径并在待验证树中查找对应路径根节点。如果未找到该根节点,则完全不匹配,源程序整体错误,退出验证。如果找到该根节点,则进入5)。
5)对待验证树中的单条路径进行验证,如果待验证树中的节点n是查询树的第k条路径的根节点,并且与以节点n为根的子树和匹配树中的第k条路径相匹配,则待验证树与匹配树在其第k条路径上匹配,即验证第k条路径所对应的源程序正确。
6)通过5)对待验证树中的全路径进行验证,如果部分路径上匹配,则对应该路径的源程序正确;如果所有路径上匹配,则源程序整体正确。
本发明是一种基于语法树的程序正确性验证方法,其主要功能是通过该方法以程序的语法树作为程序正确性的检验对象,运用无序标签树语义匹配算法,验证目标程序的正确性。本方法实现程序的正确性自动验证,为计算机程序自动测评提供了方法保障。
(1)语义形式化。程序语法树是程序结构的树状表示,是形式化、规范化的程序语义表示,是程序设计者思想的形式化表示,比源程序具有更低的层次,能够形象地抽象出程序结构,便于程序正确性的验证;
(2)高效性。引入Xpath使得在匹配XML文档结构树时能够准确地找到某一个节点元素。将XPath比作文件管理路径,通过文件管理路径,按照一定的规则查找到所需要的文件。同理,根据XPath所制定的规则,能够快速找到XML结构文档树中的任何一个节点。每一条XPath语句都有一个返回结果,若查找到该节点则返回值为True,或节点的值;当查询节点不存在时,返回结果为False。
具体实施方式
1方法中涉及到相关的定义及说明:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810060942.3/2.html,转载请声明来源钻瓜专利网。