现有的软件测试方法一般以测试用例覆盖率理论为基础,很难发现分布式软件系统中一些关键而隐蔽的错误。本项目研究Java程序的模型检查技术,验证Java程序的时态逻辑性质,以弥补软件测试技术之不足。本项目从Java源程序中提取程序有限状态模型,采用流分析作为Java 程序模型检查的算法基础,开发Java程序模型检查工具,以实际软件系统、网络协议程序为重点开展程序模型检查实验,研究模型检查技术在实际系统中的应用方法和效果;研究新型的高效搜索技术,探索提高模型检查算法时间和空间效率的新途径。本项目开发了Java 源程序分析与模型检查系统(JAMCT),实现了自动从源代码中提取程序模型,自动验证软件的时态逻辑性质;在该系统中,实现了基于流分析的模型检查算法;进一步研究了并发系统的模型检查算法,针对Java内存模型提出更精确的并发模型及检查算法;在以上工作的基础上,开展了模型检查应用于实际系统的实验,对Linux内核,网络协议,安全协议等系统进行性质验证,发现或重现了一些漏洞和缺陷。
英文主题词Java Program;model checking;flow analysis;property verify;program model checking tools