验证目标程序的验证规范的产生装置和方法制造方法及图纸

技术编号:2824593 阅读:204 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种验证目标程序的验证规范的产生装置和方法,该装置产生验证规范以验证包含对一个或多个对象进行操作的函数的验证目标程序,该装置包括:第一输入单元,用来输入描述第一有限状态机的第一规范,所述第一有限状态机定义由于事件的发生而导致的多个状态之间的转换;第二输入单元,用来输入第二规范,所述第二规范为第一对象类型描述了对具有所述第一对象类型的对象进行操作的函数与所述第一有限状态机中的所述事件之间的对应;以及验证规范产生单元,用来通过合成所述第一和第二规范来产生对所述验证目标程序进行验证的验证规范,所述验证规范描述了第二有限状态机,所述第二有限状态机定义了由于调用对具有所述第一对象类型的所述对象进行操作的函数而导致的具有所述第一对象类型的所述对象的状态之间的转换。

【技术实现步骤摘要】

本专利技术涉及到一种装置,用于产生对验证目标程序进行验证的验证规范,以及产生所述验证规范的方法。
技术介绍
在用于探测计算机程序中的逻辑错误的验证技术中,有一种称作类型状态验证的众所周知的技术。类型状态验证包括输入验证对象的程序代码和由用户所描述的验证规范,在不执行程序的情况下进行验证。顺便提及,作为相关的文件,可以参考非专利文件1和非专利文件2,其中,非专利文件1为“Checking system rules using SystemSpecific,Programmer-written compiler extensions(使用程序员编写的编译器扩展“SystemSpecific”对系统规则进行检查)”in Proceedings of the FourthSymposium on Operating Systems Design and Implementation(关于操作系统的设计和实现的第四次会议的文集),San Diego,CA,October 200(Dawson Engler,Benjamin Chief,Andy Chou,and Seth Hallem),非专利文件2为“Esp:Pathsensitive program verification in polynomial time(多项式时间中的路径敏感的程序验证)”in Proceedings of the ACM SIGPLAN2002 Conference on Programming Ianguage design and implementation(关于编程语言的设计和实现的ACM SIGPLAN 2002会议的文集)(ManuvirDas,Sorin Lerner,and Mark Seigle)。用于类型状态验证的验证规范是将程序代码中出现的对象变量的状态变化抽象成有限状态机的一种验证规范。用于类型状态验证的验证算法如下。即,有限状态机在搜寻程序代码的控制流图时根据对用户指定的对象-->变量所进行的操作来做出转换,并检查是否存在到无效状态的转换,其中,如果存在到无效状态的转换,那么转换路径就被显示为反例。类型状态验证有几个优点:它直接取程序代码为验证目标,不需要执行程序,并且它检查程序的所有可能的执行路径。另一方面,类型状态验证的不利之处在于,会给出关于实际上不可行的路径的错误报告(假的反例),因为程序代码中的变量值或分支目标被处理为未决定的(unsettled),并且验证结果是不正确的。在做类型状态验证时,要求用户正确地描述有限状态机,其中,对要验证的对象变量的内部状态进行抽象。如果通过描述大的程序代码的验证规范来进行类型状态验证,那么会出现下列情形。1.多个不同的对象经常做类似的状态转换,其中,如果单个地描述验证规范,那么大量的描述就会重复。2.如果有限状态机中的状态数很大,那么很难没有错误地描述验证规范。3.很难判断类型状态验证中所报告的反例是否实际上发生了。本专利技术提供一种产生程序验证规范的装置、方法以及程序,它们至少具有下列优点之一,即,尽可能地节省验证规范的描述量、减少复杂验证规范中的错误以及减少假反例。
技术实现思路
根据本专利技术的一个方面,提供一种装置,该装置产生验证规范以验证包含对一个或多个对象进行操作的函数的验证目标程序,该装置包括:第一输入单元,配置为用来输入描述第一有限状态机的第一规范,所述第一有限状态机定义由于事件的发生而导致的多个状态之间的转换;第二输入单元,配置为用来输入第二规范,所述第二规范为第一对象类型描述了对具有所述第一对象类型的对象进行操作的函数与所述第一有限状态机中的事件之间的对应;以及验证规范产生单元,配置为用来通过合成所述第一和第二规范来产生-->用于对所述验证目标程序进行验证的验证规范,所述验证规范描述了第二有限状态机,所述第二有限状态机定义了由于调用对具有所述第一对象类型的所述对象进行操作的函数而导致的具有所述第一对象类型的所述对象的各状态之间的转换。根据本专利技术的一个方面,提供一种方法,该方法用来产生验证规范以验证包含对一个或多个对象进行操作的函数的验证目标程序,该方法包括:输入描述第一有限状态机的第一规范,所述第一有限状态机定义由于事件的发生而导致的多个状态之间的转换;输入第二规范,所述第二规范为第一对象类型描述了对具有所述第一对象类型的对象进行操作的函数与所述第一有限状态机中的所述事件之间的对应;以及通过合成所述第一和第二规范来产生对所述验证目标程序进行验证的验证规范,所述验证规范描述了第二有限状态机,所述第二有限状态机定义了由于调用对具有所述第一对象类型的所述对象进行操作的函数而导致的具有所述第一对象类型的所述对象的各状态之间的转换。附图说明图1是一个方框图,显示了根据本专利技术的一个实施例的具有程序验证规范合成设备的程序验证装置;图2是流程图,示意地显示了图1中的程序验证装置的操作;图3是一个方框图,显示了程序验证规范合成设备(规范合成单元)的详细配置;图4显示了抽象规范和具体规范之间的关系;图5说明了抽象规范(文件、互斥锁);图6显示了抽象规范的转换表(fsm对象);图7显示了抽象规范的转换表(fsm互斥锁(mutex));图8显示了断言表达式的真值表;图9显示了关于有限状态机的转换表(没有考虑断言表达式);-->图10显示了关于有限状态机的转换表(考虑了断言表达式);图11显示了具体规范的对应关系表;图12说明了常规的程序验证;图13显示了控制流图的例子;图14说明了类型状态验证的一个操作例子(mutex_check1);图15说明了类型状态验证的一个操作例子(mutex_check2);图16显示了与常规的验证规范1相对应的有限状态机(验证规范);以及图17显示了与常规的验证规范2相对应的有限状态机(验证规范)。具体实施方式首先,简短地举例说明常规的类型状态验证(type state verification),之后描述本专利技术所提出的方案。图12用来说明常规的类型状态验证(参见非专利文件1)。将验证规范(verification specification)101和验证目标程序(verification target program)(即要验证的程序)102输入程序验证装置103中。程序验证装置103根据类型状态验证算法进行验证,并输出验证结果104。验证规范101由某种特定语言X来描述,程序验证装置103只能对用该特定语言X描述的验证规范进行解释。例1给出了验证目标程序。例1对包括作为状态变量的文件变量f、互斥锁(mutual exclusion locks)m和整数x的变量进行开始操作,重复地进行文件的读和写,然后对变量进行结束操作以结束程序。“*”和“...”项表示对布尔表达式和用于文件操作的一些参数的替代。-----例1:验证对象-----file f;//文件mutex m;//互斥锁int x;-->f.fopen(“text.txt”);m.init();while(*){  m.lock();  if(*){      x=f.read(...);本文档来自技高网
...

【技术保护点】
一种装置,其产生验证规范,用于验证包含对一个或多个对象进行操作的函数的验证目标程序,该装置包括:第一输入单元,配置为用来输入描述第一有限状态机的第一规范,所述第一有限状态机定义由于事件的发生而导致的多个状态之间的转换;第二输入单元,配置为用来输入第二规范,所述第二规范为第一对象类型描述了对具有所述第一对象类型的对象进行操作的函数与所述第一有限状态机中的所述事件之间的对应;以及验证规范产生单元,配置为用来通过合成所述第一和第二规范来产生对所述验证目标程序进行验证的验证规范,所述验证规范描述了第二有限状态机,所述第二有限状态机定义了由于调用对具有所述第一对象类型的所述对象进行操作的函数而导致的具有所述第一对象类型的所述对象的各状态之间的转换。

【技术特征摘要】
JP 2007-3-27 081612/20071.一种装置,其产生验证规范,用于验证包含对一个或多个对象进行操作的函数的验证目标程序,该装置包括:第一输入单元,配置为用来输入描述第一有限状态机的第一规范,所述第一有限状态机定义由于事件的发生而导致的多个状态之间的转换;第二输入单元,配置为用来输入第二规范,所述第二规范为第一对象类型描述了对具有所述第一对象类型的对象进行操作的函数与所述第一有限状态机中的所述事件之间的对应;以及验证规范产生单元,配置为用来通过合成所述第一和第二规范来产生对所述验证目标程序进行验证的验证规范,所述验证规范描述了第二有限状态机,所述第二有限状态机定义了由于调用对具有所述第一对象类型的所述对象进行操作的函数而导致的具有所述第一对象类型的所述对象的各状态之间的转换。2.根据权利要求1所述的装置,其中所述第一输入单元输入描述多个所述第一有限状态机的所述第一规范,所述第二输入单元输入所述第二规范,所述第二规范为彼此不同的对象类型描述了与所述第一有限状态机相对应的多个所述对应,以及所述验证规范产生单元产生描述第三有限状态机的验证规范,所述第三有限状态机定义了由于调用对具有多个所述对象类型的多个所述对象进行操作的多个函数而导致的具有多个所述对象类型的多个所述对象的多个状态的各个组合之间的转换。3.根据权利要求2所述的装置,其中,所述第二规范还描述了逻辑表达式,所述逻辑表达式基于所述对象的状态和所述事件的发生来定义约束,以及所述验证规范描述了所述第三有限状态机,所述第三有限状态机定义了当违反所述约束而调用函数时转换到预定状态的转换。4.根据权利要求3所述的装置,其中,所述预定状态...

【专利技术属性】
技术研发人员:进博正
申请(专利权)人:株式会社东芝
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1