【技术实现步骤摘要】
演绎最弱前置条件的模型和算法
本专利技术涉及一种软件可靠性技术。具体地说,主要实现对软件运行结果进行反向演绎推理,寻找产生这种结果的原因及其传播路径。进一步讲,本专利技术主要针对赋值程序,建立演绎其最弱前置条件的模型及设计相应的实现算法。
技术介绍
在程序的测试过程中,测试者常常遇到这样一种情况:程序没有任何语义和语法错误,但程序运行结果却不正确。将最弱前置条件推理技术应用于程序分析,则程序中潜在的bug(bug导致了错误或意想不到的结果)及其演绎传播路径将得到推断。对于一定程序,演绎给定后置条件的程序的最弱前置条件过程就是构建软件故障树的失效路径的过程。最弱前置条件直接建立了问题到原因的推理机制,因而,它是软件可靠性研究中的故障分析和定位探索的直接动因。然而,程序受各种复杂因素的影响(比如:多变量、多状态、多条件约束、多结构形式、存储手段、分支判断、循环处理等),要通过最弱前置条件来实现对程序的反向推理实际是非常困难的。存在许多难以解决或需改进完善的模型(实现技术)。(1)程序正确性证明中对选择结构各分支的最弱前置条件进行合取操作在可靠性研究中并不合适。其理由如 ...
【技术保护点】
演绎最弱前置条件的模型和算法,包括以下四个关联部分:(1)改进最弱前置条件的表述;(2)提出最弱前置条件的演绎模型;(3)给出算法表述的统一定义;(4)以演绎模型为依据,统一定义为表述手段,设计演绎算法。
【技术特征摘要】
1.演绎最弱前置条件的模型和算法,包括以下四个关联部分:(1)改进最弱前置条件的表述;(2)提出最弱前置条件的演绎模型;(3)给出算法表述的统一定义;(4)以演绎模型为依据,统一定义为表述手段,设计演绎算法。2.根据权利1所述的演绎最弱前置条件的模型和算法,其特征在于,所述部分(1)包括a.以析取的方式来并行分析选择结构的两条最弱前置条件的传播路径;b.在考虑目标代码的最弱前置条件时,也同时考虑执行条件的最弱前置条件;c.分支思想也用于演绎while循环结构的最弱前置条件。3.根据权利1所述的演绎最弱前置条件的模型和算法,其特征在于,所述部分(2)包括a.路径扩展模型,在演绎最弱前置条件的过程中,传播路径将在模块位置开始扩展;b.最内层连接模型,任何非第一个节点的最弱前置条件将连接在它上一个兄弟节点的最弱前置条件的最内层终端之后;c.条件跳跃模型,演绎执行条件的最弱前置条件将“跳过”当前条件对应的目标代码,以当前模块的下一个兄弟节点为演绎入口。4.根据权利1所述的演绎最弱前置条件的模型和算法,其特征在于,所述部分(3)包括a.程序节点,在MATLAB程序中,以分号和关键词作为识别和划分依据,任何一条赋值语句、选择结构、循环结构及其嵌套结构(如果存在的话)被定义为一个程序节点;b.节点存储结构,对于一个给定的MATLAB程序,其节点的基本存储结构定义为1×3cell形式的元胞数组;每个元胞表示特定的含义:第一元胞为节点索引,第二元胞为节点类型,第三元胞为节点内容;根据语句类型,节点划分为4种类型;如果节点内容为模块,则该位置将进行1×3cell形式的嵌套定义;c.演绎最弱前置条件的存储结构,对于一个给定的MATLAB程序,演绎最弱前置条件的存储结构定义为1×3cell形式的元胞数组,每个元胞表示特定含义:第一元胞为最弱前置条件或1×3cell形式的嵌套元胞数组,第二元胞为赋值语句或节点类型,第三元胞为后置条件;d.采用堆栈思想来识别和提取程序中的模块(包括嵌套子模块),以零值初始化判别变量,搜索时一旦识别到模块的起始特征字符,则判别变量值增加1,一旦识别到模块的结束特征字符,则判别变量减少1,只要判别变量的值再次变为零,则最外层模块得到识别,继续采用此法,识别和提取模块中的任何子模块。5.根据权利3和4所述的演绎最弱前置条件的模型和算法,其特征在于,所述部分(4)包括a.演绎第一节点的最弱前置条件,算法被命名为:SFT_WP_MODULE;输入参数为MODULE和POST_CON,前者代表判断分析的对象(或为普通节点——赋值语句,或为特殊节点——模块,或为特殊节点的进一步扩展形式),后者代表后置条件;首先定义一个空元胞结构(命名为T_WP),用以存储在当前兄弟节点中第一次出现的模块的最弱前置条件,执行时,以输入参数MODULE的行数为边界进行循环判断和演绎;如果T_WP非空,后续节点的最弱前置条件直...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。