一种运行时验证中性质的可监控性概率的度量方法与流程

文档序号:21318565发布日期:2020-06-30 20:49阅读:220来源:国知局
一种运行时验证中性质的可监控性概率的度量方法与流程

本发明属于计算机软件领域,尤其是指运行时验证领域。



背景技术:

随着信息和计算机技术的迅猛发展,计算机软件在当今社会的各个领域都发挥着越来越重要的作用。与此同时,软件缺陷所造成的后果也越来越不可忽视。在医疗、航空、航天及国防软件中,一个错误可能导致不可估量的损失。例如:therac-25放射治疗仪的软件设计缺陷导致重大医疗事故,六位病人因此高度灼伤甚至死亡;阿丽亚娜5号火箭升空后的爆炸导致了近85亿美元损失,其原因是系统软件试图将一个64位的数字塞入16位的空间产生的溢出错误。鉴于此,软件的安全性和可靠性越来越受到人们的关注和重视。

运行时验证是一种轻量级的形式化验证技术,用于确保软件的安全性和可靠性。该技术自动地将程序需要满足的性质合成为监控器,监控器通过在运行时监测程序的行为来检查其是否满足或违反给定的性质,以此来验证程序的正确性或者发现程序中的错误。此外,还可以在发现错误时发出警告或进行错误恢复。运行时验证通常使用线性时序逻辑、针对有限或无限长度执行序列的有限状态机和正则表达式等形式化语言来描述程序需要满足的性质。

然而,并不是所有的性质都适合用于运行时验证。因此,人们用可监控性和弱可监控性来衡量一个性质在运行时验证中的适用性。其中,一个性质是可监控的,当且仅当程序所有的有限长度执行序列都能通过有限步的扩展来满足或者违反该性质,即所有的有限执行序列都是可监控的;一个性质是弱可监控的,当且仅当至少存在一条程序的有限长度执行序列满足或者违反该性质,即至少存在一条有限执行序列是可监控的。由此可见,可监控性的要求过于严格,因为它要求“所有的”执行序列都是可监控的;而弱可监控性的要求过于宽松,因为它仅要求“存在”可监控的执行序列,无论是一条、多条还是所有序列。而对于处于二者之间(即弱可监控但不可监控)的性质,人们无法对这些性质可监控的程度进行度量。

研究发现,不同性质的可监控有限序列的数量占所有可能有限序列的数量的比例是不一样的。一个性质的可监控有限序列所占的比例越大,那么该性质在运行时验证中就越有可能给出确定的判定结果,其被验证的价值也就越大。但是,现有的可监控性和弱可监控性无法度量这个比例。例如,可监控性要求所有的有限序列都是可监控的,即比例为100%;而弱可监控性要求性质存在可监控的部分即可,即比例大于0,但无法量化具体的比例数值。因此,为了准确地度量给定性质在运行时验证中的价值大小,为程序开发人员和验证工程师提供量化的价值参考,亟待提出一种能够度量性质的可监控性概率的方法。



技术实现要素:

为了克服上述背景技术提到的技术问题,本发明提出了一种运行时验证中性质的可监控性概率的度量方法。

一种运行时验证中性质的可监控性概率的度量方法,包括以下步骤:

(1)将给定的性质转化为对应的监控器

(2)遍历监控器获取的初始状态、迁移上的标签公式、不可监控状态集合u和不可监控状态集合的前驱状态集合

(3)根据不可监控状态集合u判断是否提前返回性质的可监控性概率结果;

(4)将监控器转换为对应的离散时间马尔可夫链

(5)根据监控器的不可监控状态集合u、不可监控状态集合的前驱状态集合以及离散时间马尔可夫链的迁移概率分布函数和初始概率分布函数,列出关于可监控性概率的线性方程组e;

(6)求解线性方程组e,得到性质的可监控性概率。

进一步地,在步骤(1)中,性质对应的监控器被表示为五元组的有限状态机其中,q是一个非空且有限的状态集合;α=2ap是字母表,ap是被监控的全部事件集合,α中的元素被称为符号,其中α*表示所有有限符号序列的集合,αω表示所有无限符号序列的集合;δ:q×α→q是状态迁移函数;q0∈q是初始状态;是输出函数,其中是三种输出值,分别表示性质被满足、违反和待定;

具体的转化过程如下:

(101)构造的否定

(102)分别构造对应的非确定性büchi自动机其中接受同样的无限符号序列集合,接受同样的无限符号序列集合;

(103)分别构造非确定性büchi自动机对应的非确定性有限自动机其中,的状态集合和状态迁移函数与相同,且中的状态q是接受状态当且仅当中存在一条从状态q出发的被接受的无限符号序列,的关系与的关系一致;

然后将非确定性有限自动机确定化为确定性有限自动机

(104)计算两个确定性有限自动机的笛卡尔积得到监控器其中的一个状态的状态的状态构成;如果不是接受状态,则状态输出如果不是接受状态,则状态输出否则状态输出进一步地,在步骤(2)中,其中,pre*(u)表示集合u中所有状态的所有前驱状态的并集,\表示集合减法运算;在监控器中,如果状态q∈q满足:λ(q)=?且对于所有状态r∈post*(q)都有λ(r)=?,则状态q被称为不可监控状态,其中,post*(q)表示状态q的所有后继状态的集合。

进一步地,在步骤(3)中,如果即监控器中没有不可监控状态,则性质是可监控的,即可监控性概率为1,直接返回1;如果u=q,即监控器中的所有状态都是不可监控状态,则性质是弱不可监控的,即可监控性概率为0,直接返回0。

进一步地,在步骤(4)中,将监控器转换为对应的离散时间马尔可夫链其中,p:q×q→[0,1]是根据迁移上的标签公式计算得到的迁移概率分布函数,两个状态q与q′之间的迁移概率等于监控器中二者之间迁移上的标签公式对应的符号数量占字母表α中所有符号数量的比例,且对于所有状态q∈q,∑q'∈qp(q,q′)=1;ι:q→[0,1]是初始概率分布函数,其中只有q0的初始概率不为0,即ι(q0)=1,且对于所有状态q∈q\{q0},ι(q)=0,\表示集合减法运算;是标签函数,即在所有状态q∈q上标注状态名q和监控器中的输出值λ(q)。

进一步地,在步骤(5)中,所述关于可监控性概率的线性方程组e:

x=ax+b

其中,表示从中每个状态q出发到达集合u的概率xq所组成的的矩阵,为一个的矩阵,表示从中状态r到状态s的迁移概率,为一个的矩阵,表示从中状态t通过一次迁移到达集合u的迁移概率,其中是从状态q0出发到达集合u的概率,是性质的可监控性概率。

进一步地,在步骤(6)中,求解线性方程组e,得到y的值即为性质的可监控性概率;求解方法包括人工求解和计算机自动求解。

采用上述技术方案带来的有益效果:

本发明可以解决如何计算一个性质的可监控性概率、量化度量该性质在运行时验证中的价值大小的难题,相比于已有技术,本发明不再简单地通过可监控性或弱可监控性来判断给定性质在运行时验证中的适用性,而是通过可监控性概率使得程序开发人员和验证工程师可以更加准确地判断性质被验证的价值。因此,他们能够在进行运行时验证之前,更加准确地判断待验证性质的适用性,从而提高软件验证的效率和质量,有良好的社会效益。

附图说明

图1为本发明的方法流程图;

图2为实施例中构造非确定性büchi自动机的示意图;

图3为实施例中构造确定性有限自动机的示意图;

图4为实施例中根据确定性有限自动机得到监控器的示意图;

图5为实施例中监控器转换为对应的离散时间马尔可夫链的示意图。

具体实施方式

下面结合具体实施例对本发明的技术方案进行详细描述,但不作为本发明的限定。本实施例采用本发明的方法计算一个用线性时序逻辑描述的性质的可监控性概率。

如图1所示,本发明设计的运行时验证中性质的可监控性概率的度量方法,包括以下步骤:

步骤1:将给定的性质转化为对应的监控器

步骤2:遍历监控器获取的初始状态、迁移上的标签公式、不可监控状态集合u和不可监控状态集合的前驱状态集合

步骤3:根据不可监控状态集合u判断是否提前返回性质的可监控性概率结果;

步骤4:将监控器转换为对应的离散时间马尔可夫链

步骤5:根据监控器的不可监控状态集合u、不可监控状态集合的前驱状态集合以及离散时间马尔可夫链的迁移概率分布函数和初始概率分布函数,列出关于可监控性概率的线性方程组e;

步骤6:求解线性方程组e,得到性质的可监控性概率。

在本实施例中,上述步骤1采用如下优选方案实现:

将性质转化为对应的监控器其中性质对应的监控器是被表示为五元组的有限状态机其中q是一个非空且有限的状态集合;α=2ap是字母表(即ap的幂集),其中ap是被监控的全部事件集合,α中的元素被称为符号(即ap的一个子集);δ:q×α→q是状态迁移函数;q0∈q是初始状态;是输出函数,其中是三种输出值,分别表示性质被满足、违反和待定。我们用α*表示所有有限(符号)序列的集合,αω表示所有无限(符号)序列的集合,pre*(q)表示状态q的所有前驱状态的集合,post*(q)表示状态q的所有后继状态的集合,pre*(q1)表示集合q1中所有状态的所有前驱状态的并集,post*(q2)表示集合q2中所有状态的所有后继状态的并集。

本实施例将线性时序逻辑描述的性质转化为对应的监控器,其中p为系统运行中产生的一个被监控事件,为逻辑非操作符,^为逻辑与操作符,x、g、f为时序操作符,其中xp表示系统的下一个状态必须包括p,表示将来某状态必须不包括p,gf表示所有的状态都有一个不包括p的将来状态。具体的转化步骤如下:

(1)构造的否定本实施例中,xp^gf的否定为

(2)分别构造对应的非确定性büchi自动机其中接受同样的无限序列集合,接受同样的无限序列集合。

本实施例中,分别构造对应的非确定性büchi自动机结果分别如图2中的(a)和(b)所示,图中的“!p”即为上文p的否定。

(3)分别构造非确定性büchi自动机对应的非确定性有限自动机其中的状态集合和状态迁移函数与相同,且中的状态q是接受状态当且仅当中存在一条从状态q出发的被接受的无限序列,的关系也一样;然后将非确定性有限自动机确定化为确定性有限自动机

本实施例中,分别构造非确定性büchi自动机对应的确定性有限自动机结果分别如图3中的(a)和(b)所示。

(4)计算两个确定性有限自动机的笛卡尔积得到监控器其中的一个状态的状态的状态构成,如果不是接受状态那么状态输出如果不是接受状态那么状态输出否则状态输出

本实施例中,根据对应的确定性有限自动机计算它们的笛卡尔积得到监控器如图4所示,其中状态集合q={0,1,2,3},字母表初始状态q0=0。

在本实施例中,上述步骤2采用如下优选方案实现:

不可监控状态集合的前驱状态集合其中\为集合减法,其中不可监控状态是指:在监控器中,如果状态q∈q满足:λ(q)=?且对于所有状态r∈post*(q)都有λ(r)=?,则状态q被称为不可监控状态。在监控器中,如果有限序列u∈α*有一个有限延长序列v∈α*,使得λ(δ(q0,uv))=t或λ(δ(q0,uv))=⊥,则u被称为的可监控有限序列;否则,u被称为的不可监控有限序列。给定性质及其对应的监控器的可监控性概率为中可监控有限序列的数量占所有有限序列的数量的比例,记为:

其中,表示长度为i(1≤i≤n)的有限序列的集合,表示集合中元素的个数,表示长度为i(1≤i≤n)的可监控有限序列的集合,表示集合中元素的个数。

本实施例中,遍历对应的监控器得:初始状态为0;0→1迁移上的标签公式为true,1→2迁移上的标签公式为p,1→3迁移上的标签公式为2→2迁移上的标签公式为true,3→3迁移上的标签公式为true;不可监控状态集合u={2};不可监控状态集合的前驱状态集合

在本实施例中,上述步骤3采用如下优选方案实现:

如果即监控器中没有不可监控状态,那么性质是可监控的,即可监控性概率为1,直接返回1;如果u=q,即监控器中的所有状态都是不可监控状态,那么性质是弱不可监控的,即可监控性概率为0,直接返回0。

在本实施例中,上述步骤4采用如下优选方案实现:

将监控器转换为对应的离散时间马尔可夫链其中p:q×q→[0,1]是根据迁移上的标签公式计算得到的迁移概率分布函数,具体而言,两个状态之间的迁移概率等于监控器中二者之间迁移上的标签公式对应的符号数量占字母表α中所有符号数量的比例,且对于所有状态q∈q,∑q′∈qp(q,q′)=1;ι:q→[0,1]是初始概率分布函数,其中只有q0的初始概率不为0,即ι(q0)=1,且对于所有状态q∈q\{q0},ι(q)=0;是标签函数,即在所有状态q∈q上标注状态名q和监控器中的输出值λ(q)。注意,监控器和离散时间马尔可夫链的主要区别在于:一、监控器的迁移是通过迁移上的符号选择的,而离散时间马尔可夫链的迁移是通过迁移概率分布函数选择的;二、监控器中只有唯一的初始状态q0,而离散时间马尔可夫链的初始状态是根据其初始概率分布函数来确定的。

本实施例中,根据步骤2得到的初始状态和迁移上的标签公式,将监控器转换为对应的离散时间马尔可夫链如图5所示,其中p(0,1)=1,p(1,2)=0.5,p(1,3)=0.5,p(2,2)=1,p(3,3)=1;ι(0)=1,ι(1)=0,ι(2)=0,ι(3)=0。

在本实施例中,上述步骤5采用如下优选方案实现:

根据监控器的不可监控状态集合u、不可监控状态集合的前驱状态集合离散时间马尔可夫链的迁移概率分布函数p和初始概率分布函数ι,列出关于可监控有限序列概率的线性方程组e。具体而言,用一个的矩阵来表示从中每个状态q出发到达集合u的概率xq,用一个的矩阵来表示从中状态r到状态s的迁移概率,用一个的矩阵来表示从中状态t通过一次迁移到达集合u的迁移概率,其中bt=p(t,u)=∑q∈up(t,q)。因此,关于可监控有限序列概率的线性方程组e包括:x=ax+b。注意,的值是从状态q0出发到达集合u的概率,也就是产生不可监控有限序列的概率,所以是性质的可监控性概率。因此,在方程组e中添加一项用以直接获取最后的可监控性概率结果y。

本实施例中,u={2},因此,

根据x=ax+b和可列出方程组e:

在本实施例中,上述步骤6采用如下优选方案实现:

对线性方程组e进行求解,结果中y的值即为性质的可监控性概率。求解方法包括人工求解、计算机自动求解,例如使用sat/smt求解器进行自动求解,最终结果y=0.5,即性质的可监控性概率为0.5。

经过上述步骤的操作,即可通过构造性质对应的监控器和离散时间马尔可夫链,实现对性质的可监控性概率的计算。

以上所述仅是本发明的部分实施方式。应当指出,对于本领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干优化和改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1