一种面向参数化系统的自动验证方法

文档序号:6536536阅读:220来源:国知局
一种面向参数化系统的自动验证方法
【专利摘要】本发明公开了一种面向参数化系统的自动验证方法,目的是解决参数化系统验证成本高、准确性低、速度慢的问题。技术方案是先针对参数化系统的特点构建参数化系统自动化验证框架;然后从外界读入单个进程模型、进程个数、待验证性质和自定义谓词库,并构建单个进程的有限状态机模型;根据真并发合成规则自动构建描述完整的参数化系统的真并发合成模型;接着采用谓词抽象技术对真并发合成模型自动进行抽象化简,得到有限状态机描述的抽象模型;最后,采用模型检验技术遍历抽象模型,并判断待验证性质是否满足。采用本发明可降低参数化系统建模和验证的成本,提高验证准确性,降低参数化系统的验证规模,提高验证速度。
【专利说明】一种面向参数化系统的自动验证方法
【技术领域】
[0001]本发明涉及形式化验证领域中模型检验方法,尤其涉及一种面向参数化系统的自动验证方法。
【背景技术】
[0002]参数化系统是一组结构相同、协同运行的进程,进程之间以同步或异步方式并发执行,进程的个数称为系统参数。参数化系统在现实中非常普遍,如通信协议、Cache—致性协议等。随着工程和科学等方面的需求不断提高,系统规模日益扩大、功能日趋复杂,导致参数化系统设计非常容易出错,必须对其进行全面而有效的验证。模型检验技术在形式化验证领域应用非常广泛,该方法用有限状态机表示待验证系统,用时态逻辑公式描述系统期望满足的性质,通过遍历有限状态机自动地判断时态逻辑公式的正确性,已成功地应用于软硬件系统的验证,是验证有限状态系统的一种非常有效的方法。然而,如何采用模型检验技术高效验证参数化系统仍是当前验证领域一项非常具有挑战性的工作。
[0003]参数化系统参数的任意性和进程之间交互的复杂性导致了参数化系统规模的状态空间爆炸。一方面,系统规模的增大给验证人员带来严峻的挑战,如何保证系统建模的准确性成为参数化系统验证的一个主要问题。另一方面,参数化系统规模根据系统参数成指数增长,状态空间爆炸导致已有的模拟验证和形式化验证方法不能直接应用于系统验证,如何更好地提高参数化系统验证的规模和验证速度是面临的另外一个主要问题。

【发明内容】

[0004]本发明要解决的技术问题是提出一种面向参数化系统的自动验证方法,解决参数化系统验证的下面问题:1)参数化系统验证人工参与多,导致验证成本高的问题;2)参数化系统验证的准确性问题;3)验证规模和验证速度问题。该方法针对参数化系统的特点,构建参数化系统自动化验证框架。本发明从参数化系统的待验证性质出发,自动构建参数化模型并进行抽象化简,然后自动完成性质验证。首先,建立单个进程的有限状态机模型;然后,自动构建完整的参数化系统,减少人工参与并且保证建模的准确性;最后,采用谓词抽象方法对参数化系统进行模型抽象化简,得到有限状态机描述的抽象模型,并运用模型检验方法验证参数化系统是否满足待验证性质,提高验证规模和验证速度。
[0005]本发明的技术方案是:
[0006]第一步,构建参数化系统自动化验证框架,为参数化系统设计人员提供一个验证平台,用于完成参数化系统的验证工作。参数化系统自动化验证框架由读入模块、真并发合成模块、模型抽象模块和验证模块组成。读入模块从外部获取需要的数据,包括设计人员提供的单进程设计模型、进程个数和待验证的性质,解析这些数据得到单进程模型M、进程个数η和待验证性质p。其中,M采用有限状态机描述;η是一个自然数,表示整个参数化系统包含的进程个数;Ρ采用正规文法描述,表示待验证的性质。读入模块将M和η发送给真并发合成模块,将P发送给模型抽象模块;真并发合成模块从读入模块获得单进程模型Μ,然后根据定义的真并发合成规则完成η个进程的真并发合成,得到描述整个参数化系统的真并发合成模型Μη,其中,Mn也采用有限状态机描述。真并发合成模块将MM专送给模型抽象模块,模型抽象模块根据从读入模块得到的待验证性质P从自定义谓词库B中自动选取谓词,构成谓词集合Φ,并得到谓词表达式1,然后采用谓词表达式I对#进行等价划分,得到
有限状态机描述的抽象模型并将发送给验证模块;验证模块接受抽象模型I,
采用模型检验方法给出性质验证结果,如果满足待验证性质P,输出消息“满足”,否则输出消息“不满足”。
[0007]第二步,选取标记迁移系统LTS (Labeled Transition System)进行单个进程建模。LTS是有限状态机的一种,在普通的状态转移图中增加一个迁移动作得来的,是解释多种形式化模型的操作语义的基础。LTS是一个三元组〈S,A,一 >,其中,S表示状态集合;A表示动作集合,包括其它进程不可见的内部动作和与其它进程交互的外部动作;一表示迁移集合,即LTS中的边,其中,一中的每一个元素都是一个三元组〈s,a, t>,表示的是从状态S,在动作a发生的情况下,到达状态t的一条边,s和t都是状态集合S中的元素。LTS能够非常直观地描述系统行为,适用于描述参数化系统。
[0008]第三步,定义真并发合成规则。对于给定的任意两个LTS,即P=〈Sp,Ap,一一和Q=<Sq, Aq, — q>组成的真并发系统PI I I Q=<Spq, Apq, — pq>的形式语义模型定义如下:
[0009]3.1、Spq=SpX Sq,其中Sp表示P中的一个状态,Sq表示Q中的一个状态,Sp和Sq构成的二兀组表不真并发系统P11 Iq的一个状态,用Sm来表不。
[0010]3.2、Apq=Ap X Aq,其中Ap表示P中的一个动作,Aq表示Q中的一个动作,Ap和Aq构成的二元组表示真并发系统P11 Iq的一个动作,用Am来表示。
[0011]3.3、对于 P 和 Q 中任意的边(Spa1, s’D e — p,(s2, a2, s’2) e—q,即 P 中的一条迁移边从状态S1经过动作B1到达状态S`,1; Q中的一条迁移边从状态S2经过动作a2到达状态s’ 2,合成的迁移一M按照以下规则产生:
[0012](a)如果B1为空操作,a2不为空操作,那么,S1=S^并且(S1S2, a2, S1S'2) e — M,即P I I I Q中存在从状态S1S2经过动作a2到状态S1S' 2的一条迁移边,其中,S1S2和S1S' 2表不合成系统中的新状态,即状态S1S2表示第一个进程状态为S1,第二个进程状态为S2合成之后得到的新状态,规则(b)、(c)中合成状态的标记类似;
[0013](b)如果B1不为空操作,a2为空操作,那么,s2=s’2并且(S1S2, a1; s’而)e — pq,即P I I I Q中存在从状态S1S2经过动作ai到状态s’ ,S2的一条迁移边;
[0014](c)如果B1不为空操作,a2也不为空操作,并且B1和a2改变的不是S1和S2的公共变量,或者对公共变量的修改是相同的,那么,称S1和S2是兼容可组合的,并且(S1S2, B1B2, Sj1Sj2) e — pq,即P I I I Q中存在从状态S1S2经过动作a1&2到状态s’ lS’ 2的一条迁移边。
[0015]第四步,读入模块读取验证框架需要的数据,方法是:
[0016]步骤4.1,读入模块从外部文件读入单个进程状态迁移表T,建立单进程的LTS模型M。状态迁移表T以文件的形式描述单个进程的状态迁移情况,包括状态、动作和迁移关系三大部分。状态迁移表中的每一个迁移关系是一个三元组:〈当前状态,动作,目标状态>。每一个状态对应状态集合S中的一个元素,动作对应动作集合A中的一个元素,所有进程之间错综复杂的关系构成整个迁移关系集合一^采用文本的方式存储,并且具有固定的格式。具体格式是:
[0017](I)、表T最开始的一行为关键字“begin”,表示迁移表开始。
[0018](2)、状态描述。表T的第二行为关键字“states”和一个整数sNumber,表示单个进程的状态个数。接下来的sNumber行为所有状态的名称。 [0019](3)、动作描述。状态描述结束后,另起一行为关键字“acts”和一个整数aNumber,表示单个进程的动作个数。接下来的aNumber行为所有动作的名称。
[0020](4)、迁移描述。动作描述结束后,另起一行为关键字“trans”。接下来为每一条迁移的具体描述,每一行都记录当前状态、动作和目标状态这三条信息。
[0021](5)、表T最后一行为关键字“end”,表不迁移表结束。
[0022]从上到下逐行读入表T的内容,依次构建状态集合、动作集合和迁移关系集合,得到LTS描述的单进程模型M。
[0023]步骤4.2,读入模块从计算机终端读入系统进程个数num,然后存储为整数类型变量η。
[0024]步骤4.3,读入模块从计算机终端读入文本字符串描述的待验证性质text,并采用开源的工具 Lex&Yacc (参考图书:Jhon R.Levine,Tony Mason,Doug Brown 著.杨作梅,张旭东译.《Lex与Yacc》(第二版),机械工业出版社,2003年I月)进行词法分析、语法分析和语义分析,得到正规文法描述的待验证性质P。
[0025]第五步,真并发合成模块对η个单进程模型M进行真并发合成,自动构建描述完整参数化系统的真并发合成模型Mn,方法是:
[0026]步骤5.1,令 lts_set 为 η 个 LTS 的集合,lts_mdl=<Slts, Alts, — lts> 为这 η 个 LTS组成的真并发系统的真并发合成模型,相应的初始值分别为JtS-Set=P1, P2,...,Ρη},其中P11P2,...,Pn表示η个LTS S1 =0,A1 =0,3&尸0,其中0表示空集。
[0027]步骤5.2,如果ltS_mdl中的元素均为空集,首先,从lts_set中任意选取两个LTSPi和Pj (I ( i〈n,Kj≤n,i关j);然后,从lts_set中删除Pi和Pj ;最后,建立由Pi和Pj组成的真并发系统的真并发合成模型PiI I IPp即根据第三步定义的真并发合成规则,对Pi和P」进行真并发合成,并将Pi I I I Pj赋值给lts_mdl。
[0028]如果lts_mdl中的元素不全是空集,首先,从lts_set中任意选取一个LTSPk(KkSn);然后,从lts_set删除Pk;最后,建立由Itsjndl和Pk组成的真并发系统的形式化语义模型lts_mdl I I I Pk,即根据第三步定义的真并发合成规则,对lts_mdl和Pk进行真并发合成,并将lts_mdl I I Pk赋值给lts_mdl。
[0029]步骤5.3,如果lts_set不为空,转步骤5.2 ;否则,将Itsjndl赋值给Mn,真并发合成模型建立成功,执行第六步。
[0030]第六步,模型抽象模块采用谓词抽象方法对参数化系统Mn进行化简,得到有限状
态机描述的抽象模型。模型抽象模块由定义谓词模块和谓词抽象模块组成。定义谓词
模块从读入模块获得待验证性质P,从用户提供的谓词库获得自定义谓词库B,根据待验证性质P选取B中的部分谓词构成谓词集合Φ,然后用Φ中的元素描述待验证性质P,得到谓词表达式1,并将I发送到谓词抽象模块。谓词抽象模块从定义谓词模块得到谓词表达式1,从真并发合成模块得到真并发合成模型Mn,采用谓词表达式I对真并发合成模型Mn进行性质划分,得到有限状态机描述的抽象模型μ;;,具体方法是:
[0031]步骤6.1,定义谓词模块从读入模块得到待验证性质P,采用开源工具Lex&Yacc解析待验证性质P,将P划分成多个子项,每一个子项表示待验证参数化系统的一个性质;
[0032]步骤6.2,令Φ为谓词集合,表示验证用到的所有谓词,并初始化为空集。谓词是待验证的参数化系统某种性质的形式化表示,如果谓词μ表示的性质能在状态s上体现,则称状态s满足谓词μ。
[0033]步骤6.3,从用户获得自定义谓词库B,B需要验证人员提供。根据不同的验证模型,用户自定义合适的谓词库,提高了验证的灵活性和适应性。
[0034]步骤6.4,对P的每一个子项X,从B中选取一个对应的谓词bx (即谓词bx描述的性质为子项X表达的性质)dfbx添加到Φ。一个谓词μ将整个状态集合划分为两部分(这
里称之为两个等价类)=Sli和f,Sli中的所有状态均满足谓词μ T中的所有状态均不
满足谓词μ。
[0035]步骤6.5,采用集合Φ中谓词的逻辑与来表示待验证性质P (即多个谓词采用逻辑与连接符连接起来构成一个长公式),得到谓词表达式1,将I输出给谓词抽象模块。由于谓词表达式I是多个谓词的逻辑与,所以由m个谓词构成的表达式最终将状态空间划分为2m个等价类。每一个等价类分配一个等价标记,等价标记是长度为m的字符串(或者认为是一个二进制数)。如果满足第i谓词,则等价标记的第i位标记为‘1’,否则为‘O’。每一个等价类是谓词抽象化简之后的一个新状态,等价标记称为这个新状态的名称。
[0036]步骤6.6,谓词抽象模块从定义谓词模块获得谓词表达式1,从真并发合成模块获·得真并发合成模型Mn,然后对真并发合成模型Mn进行谓词抽象,得到抽象模型Μ;: ο抽象模
型由状态集合Sn和迁移关系集合Rn构成,谓词抽象的具体方法是:
[0037]步骤6.6.1,生成状态集合Sn。如果谓词表达式I由m个谓词的逻辑与构成,则集合Sn中有2m个状态,每一个状态名称采用二进制编码,即每一个状态的名称采用二进制数字。如果二进制数字的第i位为‘1’,表示满足第i个谓词;否则,表示不满足第i个谓词。依次检查Mn的每一个状态,并记录该状态在第m个谓词上是否满足的信息,然后根据记录
的信息将该状态添加到对应的集合。生成的抽象模型的状态集合Sn中的每一个元素由
多个真并发合成模型Mn中的状态组成。
[0038]步骤6.6.2,生成迁移关系集合Rn,按照如下步骤完成:
[0039]6.6.2.1、初始化,迁移关系集合Rn初始化为空集。
[0040]6.6.2.2、对Sn中的元素根据状态名称的二进制编码按照升序排序,并初始化计数变量i=0。
[0041]6.6.2.3、如果1〈2-,初始化计数变量j=0,转第6.6.2.4步;否则转步骤6.6.3。
[0042]6.6.2.4、如果 j<2m,则转第 6.6.2.5 步;否则转第 6.6.2.6 步。
[0043]6.6.2.5、取抽象模型的两个状态^和^,分别对应两个等价类,其中每一个等价类都是真并发合成模型Mn中状态的集合。如果和乂对应的等价类中分别存在状态S和t,并且在模型Mn中存在状态从S到状态t的一个迁移,则生成一条从到的迁移,
并添加到Rn。计数变量j加1,转第6.6.2.4步。
[0044]6.6.2.6、计数变量 i 加 I,转第 6.6.2.3 步。
[0045]步骤6.6.3,计算机存储\ M;;可以直接采用图数据结构存储。每一个抽象状态对应图的一个节点,每一个迁移关系对应图的一条边。
[0046]步骤6.6.4,谓词抽象模块将M;;传送给验证模块。验证模块得到的抽象模型
是以图数据结构存储的有限状态机。谓词抽象模块输出的抽象模型中存在一个状态名
称二进制编码为全‘ I ’的状态,记为S.,该状态表示满足待验证性质P的等价类。如果S.不可达,则表示参数化系统中不存在不满足待验证性质P的状态。
[0047]第七步,验证模块依次访问抽象模型的每一个状态,检查P是否满足,若满足
则返回消息“满足”,若不满足则返回消息“不满足”。“满足”表示待验证参数化系统满足性质P,“不满足”表示即待验证参数化系统不满足性质P,具体方法是:
[0048]步骤7.1,检测真并发合成模型Mn的初始状态是否在S.中,如果在,则返回消息“满足”,表示S.可达,转第八步;否则,转步骤7.2。
[0049]步骤7.2,如果初始状态不在S.中,则遍历Λ/,,中的状态集合Sn中除S.之外的
所有状态,如果存在一个状态Sy并且Sy到S.存在一条迁移,则返回消息“满足”,转第八步;否则返回“不满足”表示S.不可达,转第八步。
[0050]第八步,结束。
[0051]采用本发明可以达到以下技术效果:
[0052]1、由于本发明除了第一步和第六步需要人工提供必要数据外,其他步骤均由计算机自动化完成,减少了人工参与,降低了参数化系统验证的成本。
[0053]2、由于本发明第四步读入单个进程模型和第五步构建真并发模型均由计算机根据定义的规则完成,自动化构建参数化系统模型,提高了参数化系统验证的准确性。
[0054]3、由于本发明第六步采用谓词抽象技术,极大地压缩了验证系统的状态空间,并且采用高效的模型检验技术进行状态空间遍历,降低了参数化系统的验证规模,提高了验证速度。
【专利附图】

【附图说明】
[0055]图1是本发明第一步构建的参数化系统自动化验证框架逻辑结构图。
[0056]图2是本发明总体流程图。
[0057]图3是本发明第三步真并发合成规则示意图。
【具体实施方式】
[0058]图1是本发明第一步构建的参数化系统自动化验证框架逻辑结构图。整个验证框架由读入模块、真并发合成模块、模型抽象模块和验证模块组成。
[0059]读入模块从文件和终端读入需要的数据,经过处理后发送给真并发合成模块和模型抽象模块。首先,读入模块从外部文件读入单个进程状态迁移表T,建立单进程的LTS模型M。状态迁移表T以文件的形式描述单个进程的状态迁移情况,包括状态和迁移关系两大部分。状态迁移表记录状态名称、动作名称和迁移关系,每一个迁移关系是一个三元组:〈当前状态,动作,目标状态〉。每一个状态对应S中的一个元素,动作对应A中的一个元素,所有进程的迁移构成整个迁移关系集合一。然后,读入模块从计算机终端读入系统进程个数num,并存储为整数类型变量η。最后,读入模块从计算机终端读入文本字符串描述的待验证性质text,并采用Lex&Yacc工具进行词法分析、语法分析和语义分析,得到正规文法描述的待验证性质P。
[0060]真并发模块接收来自读入模块的输入数据M和n,完成η个单进程模型M的真并发合成,构建描述整个参数化系统的真并发合成模型Μη。
[0061 ] 模型抽象模块接收来自读入模块和真并发合成模块的数据P和Μη,经过处理之后
得到抽象模型,并将I;送到验证模块。该模块分为两个子模块:定义谓词模块和谓词
抽象模块。定义谓词模块接收从读入模块得到的P ;然后根据人工提供的谓词库B,选取合适的谓词构成谓词集合Φ,并采用谓词的逻辑与描述待验证性质P,得到谓词表达式I ?’最后将I送到谓词抽象模块。谓词抽象模块接收来自真并发合成模块的Mn和定义谓词模块的1,并采用谓词表达式I对真并发合成模块Mn进行划分,最后得到有限状态机描述的抽象模型Ai
[0062]验证模块的输入数据为 抽象模型,采用模型检验技术遍历Μ;的状态空间,
验证P是否满足。如果系统满足待验证性质P,则返回消息“满足”;否则返回消息“不满足”。
[0063]图2是本发明总体流程图。本发明包括以下步骤:
[0064]第一步,构建参数化系统自动化验证框架,为参数化系统设计人员提供一个验证平台,用于完成参数化系统验证。
[0065]第二步,选取符号迁移系统这一数据结构描述单个进程模型。
[0066]第三步,根据参数化系统的功能,定义多个进程真并发合成的规则。
[0067]第四步,读入模块从外部获取需要的数据,包括设计人员提供的单进程设计模型、进程个数和待验证的性质,解析这些数据得到单进程模型、进程个数和待验证性质。
[0068]第五步,真并发合成模块从读入模块获得单个进程模型和进程个数,自动构建描述完成参数化系统的真并发合成模型。
[0069]第六步,模型抽象模块从真并发模块获得合成的真并发合成模型,从读入模块获得待验证性质,然后采用谓词抽象方法对真并发合成模型描述的参数化系统进行抽象化简,得到有限状态机描述的抽象模型。
[0070]第七步,验证模块依次访问抽象模型的每一个状态,检查是否满足待验证性质,若满足则返回消息“满足”,若不满足则返回消息“不满足”。
[0071]第八步,验证结束。
[0072]图3是本发明第三步真并发合成规则示意图。以两个LTSP=〈Sp,Ap, — 5>和Q=<Sq, Aq, - q>中的若干状态为例,直观地描述本发明提供的真并发系统中迁移的产生规贝U,图3(1)、3(2)、3(3)分别对应第三步的3.3中所述的迁移产生规则(a)、(b)、(C)。
[0073]在图3(1)中,S1 e Sp, ε e Ap 是空操作,s2 e Sq, s'2 e Sq, a2 e Aq 并且(s2,a2,s’2) e—q,即S1是P中的状态,当前没有任何操作导致其状态发生变化,82和8’2是Q中的两个状态,动作a2引发状态S2转换到状态s’ 2,表明动作a2并没有改变S1和S2的公共变量,仅仅改变了 S2的局部变量或者S2和P中其他状态的公共变量,那么,S1和S2对这些公共变量的解释是一致的,因此Si和s2是兼容可组合的,同时,S1和S,2对于公共变量的解释也是一致的,因此也是兼容可组合的。根据真并发系统的定义,在P和Q构成的真并发系统 PI I I Q=<Spq, Apq, — M> 中,S1S2 和 S1S' 2 是合法状态,即 S1S2 e Spq, S1S' 2 e Spq,a2 e Am,并且(S1S2, a2, S1S, 2) e — M。
[0074]在图3(2)中,S1 e SP,S’ i e Sp7B1 e Ap 并且(spas,J e—p,s2 e Sq, ε e Aq是空操作,即S2是Q中的状态,当前没有任何操作导致其状态发生变化,S1和S’ i是P中的两个状态,动作S1引发状态S1转换到状态s’ i,表明动作并没有改变S1和S2的公共变量,仅仅改变了 S1的局部变量或者S1和Q中其他状态的公共变量,那么,S1和S2对这些公共变量的解释是一致的,因此S1和S2是兼容可组合的,同时,V1和S2对于公共变量的解释也是一致的,因此也是兼容可组合的。根据真并发系统的定义,在P和Q构成的真并发系统P I Q=<Spq, Apq, — pq> 中,S1S2 和 S,而是合法状态,即 S1S2 e Spq, s’ 而 e Spq, a1 e Apq,并且(S1S2, a” s’ JS2) e — pq。
[0075]在图3(3)中,S1 e Sp,s,I e Sp, B1 e Ap, s2 e Sq, s’2 e Sq, a2 e Aq,并且(S1, av sf ^ e — p, (s2, a2, s’ 2) ε — q,即 S1 和 s’ i 是 P 中的两个状态,S2 和 s’ 2 是 Q 中的两个状态,动作S1引发状态S1转换到状态s’ i,动作a2引发状态S2转换到状态s’ 2。如果B1和a2改变的不是S1和S2的公共变量(也就是说,B1改变的是S1的局部变量或者S1和Q中其他状态的公共变量,a2改变的是S2的局部变量或者S2和P中其他状态的公共变量),或者和a2对公共变量的修改是相同的,那么,动作和a2是允许同时发生的,它们的执行不会引起任何冲突,S1和S2对它们的公共变量的解释是一致的,s’ i和s’ 2对它们的公共变量的解释也是一致的,因此,S1和s2、s’ i和s’ 2都是兼容可组合的。根据真并发系统的定义,在P和Q构成的真并发系统P I I Q=<Spq, Apq, — M>中,S1S2和S,lS’2是合法状态,SPSiS2 e Spq, s’ js' 2 e Spq, B1 a2 e Apq,并且(S1S2, a^, s’ ^2) e — pq。
【权利要求】
1.一种面向参数化系统的自动验证方法,其特征在于包括以下步骤: 第一步,构建参数化系统自动化验证框架,参数化系统自动化验证框架由读入模块、真并发合成模块、模型抽象模块和验证模块组成;读入模块从外部获取需要的数据,包括设计人员提供的单进程设计模型、进程个数和待验证的性质,解析这些数据得到单进程模型M、进程个数η和待验证性质P,其中,M采用有限状态机描述;η是一个自然数,表示整个参数化系统包含的进程个数;Ρ采用正规文法描述,表示待验证的性质;读入模块将M和η发送给真并发合成模块,将P发送给模型抽象模块;真并发合成模块从读入模块获得单进程模型Μ,然后根据定义的真并发合成规则完成η个进程的真并发合成,得到描述整个参数化系统的真并发合成模型Μη,其中,Mn也采用有限状态机描述;真并发合成模块将MM专送给模型抽象模块,模型抽象模块根据从读入模块得到的待验证性质P从自定义谓词库B中自动选取谓词,构成谓词集合Φ,并得到谓词表达式1,然后采用谓词表达式I对,进行等价划分,得到有限状态机描述的抽象模型,并将Μ;;发送给验证模块;验证模块接受抽象模型,采用模型检验方法给出性质验证结果,如果满足待验证性质P,输出消息“满足”,否则输出消息“不满足”; 第二步,选取标记迁移系统LTS进行单个进程建模,LTS是有限状态机的一种,在普通的状态转移图中增加一个迁移动作得来;LTS是一个三元组<S,A,一 >,其中,S表示状态集合;A表示动作集合,包括其它进程不可见的内部动作和与其它进程交互的外部动作;一表示迁移集合,即LTS中的边,其中,一中的每一个元素都是一个三元组<s,a, t>,表示从状态s,在动作a发生的情况下,到达状态t的一条边,s和t都是状态集合S中的元素; 第三步,定义真并发合成规则,对于给定的任意两个LTS即P=〈Sp,Ap,一 {和Q=<Sq, Aq, — q>组成的真并发系统P I I I Q=<Spq, Apq, — pq>的形式语义模型定义如下: .3.1.Sm=SpX Sq,其中Sp表示P中的一个状态,Sq表示Q中的一个状态,Sp和Sq构成的二兀组表不真并发系统P11 Iq的一个状态,用Sm来表不; .3.2.Am=ApXAq,其中Ap表示P中的一个动作,Aq表示Q中的一个动作,Ap和Aq构成的二元组表示真并发系统P11 Iq的一个动作,用Am来表示; . 3.3.对于P和Q中任意的边(Spa11S1') e —p,(s2, a2, s' 2) e — q,即P中的一条迁移边从状态S1经过动作S1到达状态S,1; Q中的一条迁移边从状态S2经过动作a2到达状态s’ 2,合成的迁移一pq按照以下规则产生: (a)如果B1为空操作,a2不为空操作,那么,S1=S^并且(S1S21B2,S1S'2) e —pq,即p| | Q中存在从状态S1S2经过动作a2到状态S1S' 2的一条迁移边,其中,S1S2和S1S' 2表不合成系统中的新状态,即状态S1S2表示第一个进程状态为S1,第二个进程状态为S2合成之后得到的新状态; (b)如果B1不为空操作,32为空操作,那么,S2=S’2并且(S1S21B1,Sj1S2) G — pq,即P | | Q中存在从状态S1S2经过动作B1到状态S,,S2的一条迁移边; (C)如果ai不为空操作,a2也不为空操作,并且ai和a2改变的不是S1和S2的公共变量,或者对公共变量的修改是相同的,那么,称S1和S2是兼容可组合的,并且(S1S2, B1B2, Sj1Sj2) e — pq,即P I I I Q中存在从状态S1S2经过动作a1&2到状态s’ lS’ 2的一条迁移边;第四步,读入模块读取验证框架需要的数据,方法是: 步骤4.1,读入模块从外部文件读入单个进程状态迁移表T,建立单进程的LTS模型M ;状态迁移表T以文件的形式描述单个进程的状态迁移情况,包括状态、动作和迁移关系三大部分,状态迁移表中的每一个迁移关系是一个三元组:< 当前状态,动作,目标状态 >,每一个状态对应状态集合S中的一个元素,动作对应动作集合A中的一个元素,所有进程之间错综复杂的关系构成整个迁移关系集合一;从上到下逐行读入表T的内容,依次构建状态集合、动作集合和迁移关系集合,得到LTS描述的单进程模型M: 步骤4.2,读入模块从计算机终端读入系统进程个数num,然后存储为整数类型变量η ;步骤4.3,读入模块从计算机终端读入文本字符串描述的待验证性质text,并采用开源的工具Lex&Yacc进行词法分析、语法分析和语义分析,得到正规文法描述的待验证性质P ; 第五步,真并发合成模块对η个单进程模型M进行真并发合成,构建描述完整参数化系统的真并发合成模型Μη,方法是:
步骤 5.1:令 lts_set 为 η 个 LTS 的集合,lts_mdl=<Slts, Alts, — lts> 为这 η 个 LTS 组成的真并发系统的真并发合成模型,相应的初始值分别为:1^_8的={匕P2,, PJ,其中P1, P2,...,Pn 表示 η 个 LTS S =0,Alts = 0 , —0,其中 0 表示空集; 步骤5.2:如果Itsjndl中的元素均为空集,首先,从lts_set中任意选取两个LTS Pi和P」(l ≤ i≤n,l<j ≤n, i ≠ j);然后,从lts_set中删除Pi和Pj ;最后,建立由Pi和Pj组成的真并发系统的真并发合成模型Pi I I I Pp即根据第三步定义的真并发合成规则,对Pi和Pj进行真并发合成,并将Pi I I I Pj赋值给lts_mdl ; 如果lts_mdl中的元素不全是空集,首先,从lts_set中任意选取一个LTSPk(KkSn);然后,从lts_set删除Pk;最后,建立由Itsjndl和Pk组成的真并发系统的形式化语义模型lts_mdl I I I Pk,即根据第三步定义的真并发合成规则,对lts_mdl和Pk进行真并发合成,并将lts_mdl I I Pk赋值给lts_mdl ; 步骤5.3:如果lts_set不为空,转步骤5.2 ;否则,将Itsjndl赋值给Mn,真并发合成模型建立成功,执行第六步; 第六步,模型抽象模块采用谓词抽象方法对参数化系统Mn进行化简,得到有限状态机描述的抽象模型Μ:;模型抽象模块由定义谓词模块和谓词抽象模块组成,定义谓词模块从读入模块获得待验证性质P,从用户提供的谓词库获得自定义谓词库B,根据待验证性质P选取B中的部分谓词构成谓词集合Φ,然后用Φ中的元素描述待验证性质P,得到谓词表达式1,并将I发送到谓词抽象模块;谓词抽象模块从定义谓词模块得到谓词表达式1,从真并发合成模块得到真并发合成模型Mn,采用谓词表达式I对真并发合成模型Mn进行性质划分,得到有限状态机描述的抽象模型M;:,具体方法是: 步骤6.1,定义谓词模块从读入模块得到待验证性质P,采用开源工具Lex&Yacc解析待验证性质P,将P划分成多个子项,每一个子项表示待验证参数化系统的一个性质; 步骤6.2,令Φ为谓词集合,表示验证用到的所有谓词,并初始化为空集,谓词是待验证的参数化系统某种性质的形式化表示,如果谓词μ表示的性质能在状态s上体现,则称状态s满足谓词μ ;步骤6.3,从用户获得自定义谓词库B ; 步骤6.4,对P的每一个子项X,从B中选取一个对应的谓词bx,bx描述的性质为子项X表达的性质,将bx添加到Φ 个谓词μ将整个状态集合划分为两个等价类=Sli和&,Sli中的所有状态均满足谓词μ,&中的所有状态均不满足谓词μ ; 步骤6.5,采用集合Φ中谓词的逻辑与来表示待验证性质P,即多个谓词采用逻辑与连接符连接起来构成一个长公式,得到谓词表达式1,将I输出给谓词抽象模块,由m个谓词构成的表达式最终将状态空间划分为2Π个等价类;每一个等价类分配一个等价标记,等价标记是长度为m的字符串,如果满足第i谓词,则等价标记的第i位标记为‘1’,否则为‘0’ ;每一个等价类是谓词抽象化简之后的一个新状态,等价标记称为这个新状态的名称; 步骤6.6,谓词抽象模块从定义谓词模块获得谓词表达式1,从真并发合成模块获得真并发合成模型Mn,对真并发合成模型Mn进行谓词抽象,得到抽象模型M;:,M;由状态集合Sn和迁移关系集合Rn构成,谓词 抽象的具体方法是: 步骤6.6.1,生成状态集合Sn ;如果谓词表达式I由m个谓词的逻辑与构成,则集合Sn中有2m个状态,每一个状态名称采用二进制编码,即每一个状态的名称采用二进制数字;如果二进制数字的第i位为‘1’,表示满足第i个谓词;否则,表示不满足第i个谓词;依次检查Mn的每一个状态,并记录该状态在第m个谓词上是否满足的信息,然后根据记录的信息将该状态添加到对应的集合;生成的抽象模型的状态集合Sn中的每一个元素由多个真并发合成模型Mn中的状态组成; 步骤6.6.2,生成迁移关系集合Rn,按照如下步骤完成: .6.6.2.1、初始化,迁移关系集合Rn初始化为空集; . 6.6.2.2、对Sn中的元素根据状态名称的二进制编码按照升序排序,并初始化计数变量i=0 ; . 6.6.2.3、如果i〈2m,初始化计数变量j=0,转第6.6.2.4步;否则转步骤6.6.3步; . 6.6.2.4、如果j<2m,则转第6.6.2.5步;否则转第6.6.2.6步; .6.6.2.5、取抽象模型Μ;的两个状态57和5;,分别对应两个等价类,其中每一个等价类都是真并发合成模型Mn中状态的集合;如果57和对应的等价类中分别存在状态s和t,并且在模型Mn中存在状态从s到状态t的一个迁移,则生成一条从^到&的迁移,并添加到Rn ;计数变量j加1,转第6.6.2.4步; . 6.6.2.6、计数变量i加1,转第6.6.2.3步; 步骤6.6.3,计算机存储M;; 步骤6.6.4,谓词抽象模块将夂^传送给验证模块;Μ;中存在一个状态名称二进制编码为全‘ I ’的状态,记为S.,该状态表示满足待验证性质P的等价类,如果S.不可达,则表示参数化系统中不存在不满足待验证性质P的状态;第七步,验证模块依次访问抽象模型Μ;;的每一个状态,检查P是否满足,若满足则返回消息“满足”,若不满足则返回消息“不满足”,“满足”表示待验证参数化系统满足性质P,“不满足”表示即待验证参数化系统不满足性质P,具体方法是: 步骤7.1,检测真并发合成模型Mn的初始状态是否在S.中,如果在,则返回消息“满足”,表示S.可达,转第八步;否则,转步骤7.2 ; 步骤7.2,如果初始状态不在S.中,则遍历Μ〗中的状态集合Sn中除S.之外的所有状态,如果存在一个状态Sy并且Sy到S.存在一条迁移,则返回消息“满足”,转第八步;否则返回“不满足”表示S.不可达,转第八步; 第八步,结束。
2.如权利要求1所述的一种面向参数化系统的自动验证方法,其特征在于所述状态迁移表T采用文本的方式存储,具体格式是: (1)、表T最开始的一行为关键字“begin”,表示迁移表开始; (2)、表T的第二行为关键字“states”和一个整数sNumber,表示单个进程的状态个数,接下来的sNumber行为所有状态的名称; (3)、状态描述结束后,另起一行为关键字“acts”和一个整数aNumber,表示单个进程的动作个数,接下来的aNumber行为所有动作的名称; (4)、动作描述结束后,另起一行为关键字“trans”,接下来为每一条迁移的具体描述,每一行都记录当前状态、动作和目标状态这三条信息; (5)、表T最后一行为关键字“end”,表不迁移表结束。
3.如权利要求1所述的一种面向参数化系统的自动验证方法,其特征在于所述步骤.6.6.3计算机存储的方法是:采用图数据结构存储,每一个抽象状态对应图的一个节点,每一个迁移关系对应图的一条边。
【文档编号】G06F17/50GK103729523SQ201410030123
【公开日】2014年4月16日 申请日期:2014年1月22日 优先权日:2014年1月22日
【发明者】屈婉霞, 张龙, 郭阳, 李思昆, 汪审权, 胡慧俐, 李暾, 刘畅 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1