[发明专利]一种用于Java软件的形式化验证方法及装置在审
申请号: | 202210998284.2 | 申请日: | 2022-08-19 |
公开(公告)号: | CN115357492A | 公开(公告)日: | 2022-11-18 |
发明(设计)人: | 赵永望;陆嘉晨;沈韬立;常瑞;任奎 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 杭州中成专利事务所有限公司 33212 | 代理人: | 李亦慈;唐银益 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 java 软件 形式化 验证 方法 装置 | ||
本发明公开了一种用于Java软件的形式化验证方法及装置。本发明将Java代码转换为一种中间表示语言,并对该中间表示语言进行建模,再由相关形式化验证人员根据不同模型的功能需求文档描述程序规约并证明。由于中间语言的语义较为简单,有较少的未定义行为,因此本发明基于中间语言的形式化验证,通过将Java代码转换为中间表示代码,避免了形式化验证系统需要对复杂的Java语言模型进行建模和验证,降低了对于Java语言的形式化验证的难度,也减少了对于形式化验证人员的个人素质依赖。通过基于SMT求解器的形式化验证方式,提高了形式化验证的自动化程度,降低了形式化验证的数学难度和形式化验证的门槛。
技术领域
本发明属于形式化方法领域,是一种用于Java软件的形式化验证方法及装置。
背景技术
现有的Java源代码形式化验证工具主要包括LOOP、JACK、TACO、Sireum/Kiasan、ESC/Java2、OpenJML、KeY、Krakatoa等。这些工具的情况概述如表1-1所示,其中LOOP和JACK虽然在21世纪初很受欢迎,但是如今项目都处于荒废的状态,网站也不再可用;TACO虽然通过有界模型检查验证难以直接数学证明的语句,但是不支持浮点数运算;Sireum\Kiasan声称他支持浮点数运算,但是实际上也不支持;OpenJML简单易用的Java形式化验证工具基于自动SMT求解,但是相应的验证能力比较弱。
表1-1常见Java形式化工具概述
这些Java源代码验证工具的可用性,如表1-2所示。现有的Java源代码形式化验证工具在使用前环境配置和后续使用过程中都存在较难以克服的问题,例如KeY不支持浮点运算和多线程,使得很难应用KeY于常见工业软件的形式化验证项目中。
表1-2常见Java形式化工具可用性
本发明的技术问题在于:
调研结果表明,现有的Java语言形式化验证工具很难满足常见工业软件的形式化验证需求。因此,本发明提出了一种用于Java软件的新型形式化验证方法,以解决现有工具难以完成工业级Java程序形式化验证的问题:
1)Java语言语义复杂,难以对浮点运算、多线程等行为进行语义建模;
2)形式化验证对程序员的数学基础要求高;
3)SMT求解器难以求解无限循环下的约束条件;
4)KeY不支持浮点运算和多线程,使得很难应用KeY于常见工业软件的形式化验证项目中;
发明内容
本发明为了解决上述技术问题,目的在于提供一种用于Java软件的形式化验证方法及装置,一种用于工业界的Java程序形式化验证,对装置多维度状态变化时间序列数据进行建模的方法,本发明是通过以下技术方案来实现的:
本发明公开了一种用于Java软件的形式化验证方法,包括
S1:获得Java程序源代码,并对Java程序源代码进行词法分析、语法分析和语义分析,生成Java扩展抽象语法树;
S2:解析出Java扩展抽象语法树中的常量、变量、继承关系和函数限定符,为其分配内存地址,生成中间表示代码;
S3:对Java程序需求文档进行自动化建模,翻译成对应的Java形式化规约,其中,形式化规约主要包括Java程序的表达不变式、安全性;
S4:解析Java程序规约,将形式化人员定义的Java程序规约转换成对应的Java程序规约的SMT表达式;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210998284.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于无人机的船舶备件传送方法
- 下一篇:螺旋折流板异形管束管壳式换热器