CN110532166A - 一种基于模型转换的状态机模型时序性质验证系统 - Google Patents
一种基于模型转换的状态机模型时序性质验证系统 Download PDFInfo
- Publication number
- CN110532166A CN110532166A CN201910605386.1A CN201910605386A CN110532166A CN 110532166 A CN110532166 A CN 110532166A CN 201910605386 A CN201910605386 A CN 201910605386A CN 110532166 A CN110532166 A CN 110532166A
- Authority
- CN
- China
- Prior art keywords
- model
- scade
- state machine
- symbol table
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种基于模型转换的状态机模型时序性质验证系统,包括:模型解析模块,用于解析SCADE文本模型,得到语法树实例;符号表容器模块,用于装载语法树实例,得到符号表实例;模型转换模块,用于根据模型转换规则将符号表实例转换为NuSMV模型;模型检查模块,用于根据LTL公式及CTL公式验证NuSMV模型的时序性质。通过解析高安全性的应用程序开发环境SCADE文本模型,将SCADE文本模型转换为NuSMV模型,根据LTL公式及CTL公式验证NuSMV模型的时序性质,从而实现验证SCADE文本模型的时序性质,突破了SCADE模型性质验证的这个限制,进一步提高软件系统的安全性与可靠性。通过为SCADE形式化验证引入能够描述时序相关安全需求的时序规范,从而能够验证模型的时序性质。
Description
技术领域
本申请涉及嵌入式软件领域,尤其涉及一种基于模型转换的状态机模型时序性质验证系统。
背景技术
安全攸关领域的软件安全性一直以来都备受关注,尽管软件应用的开发效率得到了提升,但依旧得保证软件系统的安全性和可靠性。毕竟在这些领域,软件发生错误将会带来严重的经济损失甚至会危及生命。传统的软件验证技术是对开发好的软件系统进行仿真模拟,进而发现错误并及时改正。不过安全关键应用程序开发环境(Safety-CriticalApplication Development Environment,SCADE)提供了形式化验证组件,设计验证程序(Design Verifier, DV),它先对安全需求进行图形化建模,然后通过基于可满足性(Satisfiability, SAT)的模型检查算法验证模型是否满足需求。但随着SCADE广泛的应用以及系统需求的多样性,尤其当涉及到时序相关的性质时,DV的表达能力已不够描述那些需求了。
综上所述,需要提供一种能够验证SCADE文本模型的时序性质,从而提高软件系统的安全性与可靠性的系统。
发明内容
为解决以上问题,本申请提出了一种基于模型转换的状态机模型时序性质验证系统,通过解析高安全性的应用程序开发环境SCADE文本模型,将SCADE 文本模型转换为NuSMV模型,根据LTL公式及CTL公式验证NuSMV模型的时序性质,从而实现验证SCADE文本模型的时序性质。
具体地,本发明提出了基于模型转换的状态机模型时序性质验证系统,包括:
模型解析模块,用于解析高安全性的应用程序开发环境SCADE文本模型,得到语法树实例;
符号表容器模块,用于装载语法树实例,得到符号表实例;
模型转换模块,用于根据模型转换规则将符号表实例转换为符号模型验证器NuSMV模型;
模型检查模块,用于根据线性时序逻辑LTL公式及计算树逻辑CTL公式验证NuSMV模型的时序性质。
优选地,所述模型解析模块包括语法设计单元、语法树遍历单元语和语法树生成单元;
所述语法设计单元,用于根据SCADE文本模型的语法语义声明,使用另一个语言识别工具ANTLR格式,将SCADE语法语义声明写成对应的ANTLR文件,所述ANTLR文件描述SCADE语言的语法语义声明;
所述语法树遍历单元,用于根据ANTLR文件中的声明,使用对应的Java监听器,对SCADE文本模型进行监听,得到语法树信息;
所述语法树生成单元,用于根据语法树信息生成语法树实例。
优选地,所述符号表容器模块包括层次化结构符号表定义单元、子状态机结构符号表定义单元和语法树信息装载单元;
所述层次化结构符号表定义单元,用于定义层次化结构符号表;
所述子状态机结构符号表定义单元,用于定义子状态机结构符号表;
所述语法树信息装载单元,用于根据层次化结构符号表和子状态机结构符号表,对语法树实例进行装载,得到符号表实例。
优选地,所述模型检查模块具体用于:
根据LTL公式及CTL公式验证NuSMV模型的时序性质;
若当前所验证的时序性质得到满足,则进行下一个时序性质的验证;
若当前所验证的时序性质未得到满足,则输出反例信息,停止时序性质的验证。
优选地,所述LTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
优选地,所述CTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
优选地,所述语法语义声明包括:程序语义、声明语义、类型声明、常量声明语义、自定义操作符节点声明语义、等式及表达式声明和SCADE状态机语义。
本申请的优点在于:通过解析高安全性的应用程序开发环境SCADE文本模型,将SCADE文本模型转换为NuSMV模型,根据LTL公式及CTL公式验证NuSMV 模型的时序性质,从而实现验证SCADE文本模型的时序性质,突破了SCADE模型性质验证的这个限制,进一步提高软件系统的安全性与可靠性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选事实方案的目的,而并不认为是对本申请的限制。而且在整个附图中,用同样的参考符号表示相同的部件。在附图中:
图1是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的示意图;
图2是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的结构示意图;
图3是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的卫星控制系统的子系统的SCADE状态机模型的示意图;
图4是本申请提供的一种基于模型转换的状态机模型时序性质验证方法的步骤示意图;
图5是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的转换规则的层次化SCADE状态机示例的示意图;
图6是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的转换规则的仿真中状态B与状态机SM2被激活的示意图;
图7是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的转换规则的NuSMV目标模型中层次化状态机的结构示意图;
图8是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的转换规则的状态S的转移图;
图9是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的转换规则的状态转移关系示意图;
图10是本申请提供的一种基于模型转换的状态机模型时序性质验证系统的转换规则的SCADE变量监控机制的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
根据本申请的实施方式,提出一种基于模型转换的状态机模型时序性质验证系统,如图1所示,包括:
模型解析模块101,用于解析高安全性的应用程序开发环境 (Safety-CriticalApplication Development Environment,SCADE)文本模型,得到语法树实例;
符号表容器模块102,用于装载语法树实例,得到符号表实例;
模型转换模块103,用于根据模型转换规则将符号表实例转换为符号模型验证器(New Symbolic Model Verifier,NuSMV)模型;
模型检查模块104,用于根据线性时序逻辑(Linear Temporal Logic,LTL) 公式及计算树逻辑(Compute Tree Logic,CTL)公式验证NuSMV模型的时序性质。
模型解析步骤、符号表容器步骤和模型转换步骤用于将输入的SCADE文本模型转换成一种模型检查器的输入模型,即符号模型验证器(New Symbolic Model Verifier,NuSMV)模型,并将生成的模型(NuSMV模型)作为模型检查步骤的输入。
模型检查步骤用于验证NuSMV模型中的对应状态机系统的时序安全需求和性质。
模型解析模块包括语法设计单元、语法树遍历单元语和语法树生成单元;
语法设计单元,用于根据SCADE文本模型的语法语义声明,使用另一个语言识别工具(ANother Tool for Language Recognition,ANTLR)格式,将SCADE 语法语义声明写成对应的ANTLR文件,所述ANTLR文件描述SCADE语言的语法语义声明;
语法树遍历单元,用于根据ANTLR文件中的声明,使用对应的Java监听器,对SCADE文本模型进行监听,得到语法树信息;
语法树生成单元,用于根据语法树信息生成语法树实例。
通过ANTLR工具生成SCADE语言语法的解析接口,通过这些接口来实现模型语法树的生成,从而获取SCADE状态机模型中的信息,该信息将作为后面语法树监听器(Java监听器)的输入。
通过使用ANTLR运行时的应用程序编程接口(Application ProgrammingInterface,API),实现不同的Java监听器种类来获取语法树上的各种信息(语法树信息)。
监听器包括:操作符节点监听器、数据类型监听器、表达式监听器、等式监听器、自定义操作符节点监听器、常量监听器以及状态机转移关系监听器等等。
通过组合使用这些监听器将语法树上的信息保存到相应的集合中,这些语法树上的信息用于生成语法树实例。
符号表容器模块包括层次化结构符号表定义单元、子状态机结构符号表定义单元和语法树信息装载单元;
层次化结构符号表定义单元,用于定义层次化结构符号表;
子状态机结构符号表定义单元,用于子状态机结构符号表;
语法树信息装载单元,用于根据层次化结构符号表和子状态机结构符号表,对语法树实例进行装载,得到符号表实例。
用户根据需要,通过层次化结构符号表定义单元对层次化结构符号表进行定义。
用户根据需要,通过子状态机结构符号表定义单元对子状态机结构符号表进行定义。
层次化结构符号表(SCADE层次化结构符号表)用于描述SCADE层次化状态机的结构,该结构描述了SCADE状态机模型中的变量集合、子状态机集合、状态机中使用到的运算操作符集合以及状态机调用的用户自定义函数功能节点集合,定义了这些集合的数据结构。
子状态机结构符号表(SCADE子状态机结构符号表)用于描述子状态机结构,子状态机结构描述了包括:此子状态机的所有状态的集合、初始状态、子状态机与状态关系的函数、状态之间的迁移关系以及状态中的事件行为操作;同时,子状态机结构符号表定义了SCADE子状态机结构的数据结构。
语法树信息装载单元用于将语法树实例装载进符号表中,将使用Java监听器得到的语法树实例作为输入,根据定义好的层次化结构符号表和子状态机结构符号表,将这些信息装载入符号表容器中,得到符号表实例,作为模型转换模块的输入。
转换规则基于两类机制,分别是层次化状态机结构转换机制和变量监控机制。层次化状态机结构转换机制通过要引入触发器参数规则来帮助转换过程,最终在NuSMV目标模型中构建出SCADE状态机的层次结构,同时还定义状态转移转换规则,从而使得每一个子状态机都能够用NuSMV模型中的一个模块来表示,并且模块中还声明了子状态机的关系。变量监控机制用于控制模型状态中的行为事件,SCADE状态中拥有具体事件操作,这些操作对应现实系统中的功能,改变着模型中的变量值;变量监控机制使用监控参数来确定这些操作是否执行,从而来间接操纵这些变量的变化。基于这些模型转换规则,将符号表实例转换成NuSMV模型。
转换后得到的所述NuSMV模型包括:子状态机模块、变量监控模块、自定义函数节点模块和顶层状态机模块(主模块)。
子状态机模块中的每一个模块对应于SCADE状态机中的一个子状态机,包括:子状态机所包含的状态、状态转移关系、触发器参数、监控参数赋值以及对子状态机拥有的子状态机的实例化。
每一个变量监控模块都通过监控参数控制着对应的输出变量的赋值操作;SCADE模型中若使用到用户自定义的数据流函数节点,则会在目标NuSMV模型中生成这些模块;顶层状态机模块代表着SCADE状态机中最顶层的状态机,负责模型变量和参数声明、子状态机实例化、变量和参数初始化、函数节点实例化等工作。顶层状态机模块有且只有一个,主导整个生成的目标NuSMV模型。
SCADE状态机包括SCADE子状态机。
SCADE文本模型是一种表示SCADE状态机的形式。
模型检查模块具体用于:
根据LTL公式及CTL公式验证NuSMV模型的时序性质;
若当前所验证的时序性质得到满足,则进行下一个时序性质的验证;
若当前所验证的时序性质未得到满足,则输出反例信息,停止时序性质的验证。
在停止时序性质的验证之后,用户根据所述反例信息修改SCADE系统开发环境,生成新的SCADE文本模型,将所述新的SCADE文本模型输入至系统中验证时序性质。
模型检查模块用于执行SCADE状态机模型的验证过程,即NuSMV模型的时序性质验证。
用户通过SCADE系统开发环境中的状态机模型设计SCADE状态机模型,并将需要验证的系统时序安全性需求先用自然语言描述清楚。将设计好的SCADE 状态机模型导出的SCADE文本模型作为模型转换模块的输入,同时将自然语言描述的需求使用诸如LTL或CTL的时态逻辑表达式规范重新描述;SCADE文本模型通过模型转换模块得到NuSMV目标模型,将该模型和时序性质表达式(使用诸如LTL或CTL的时态逻辑表达式规范重新描述的时序安全性需求)一同输入到模型检查器NuSMV(模型检查模块)中开始执行验证过程;验证结果能够显示在可视化控制台上,若时序性质得到满足,则进行下一个时序性质的验证,若不能得到满足,则输出反例,供用户分析,以用来调试SCADE原模型,循环操作直到所有的时序性质都被满足。通过引入时序规范描述(时序性质表达式),将SCADE开发环境与模型检查器NuSMV联系起来,用以验证SCADE模型的时序相关安全需求和性质。
所述时序规范描述用于描述系统的时序安全性需求。
LTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
CTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
语法语义声明包括:程序语义、声明语义、类型声明(类型声明语义)、常量声明语义、自定义操作符节点声明语义、等式及表达式声明(等式及表达式语义)和SCADE状态机语义等。
为了更好地理解,下面将对本发明的工作流程进行说明。
如图2所示,SCADE软件导出的SCADE文本模型先输入到模型解析模块,在模型解析模块中,输入的SCADE文本模型通过语法设计单元、语法树遍历单元以及语法树生成单元得到语法树实例,作为符号表容器模块的输入。
所述语法树实例包括语法树的结构和语法树信息(通过监听得到的语法树信息)。
符号表容器模块中定义了SCADE的层次化结构符号表以及子状态机结构符号表,用以以一种新的形式来存放语法树中的信息。符号表容器模块通过语法树信息装载单元将语法树实例装载起来,从而转换成一个中间结构,也就是一个符号表实例,作为模型转换模块的输入。
通过模型转换模块中的模型转换规则将该符号表实例最终转换成目标模型,即NuSMV模型。
用户将SCADE文本模型的自然语言需求性质重写成LTL及CTL公式,输入到模型检查模块中。模型检查模块将输入的NuSMV模型和重写成LTL及CTL公式的自然语言需求性质一起,进行模型性质验证。
用户根据得到的反例来调试元SCADE模型,如此反复,直到所有性质都能够被满足。
以对卫星控制系统模型进行时序性质验证为例。该卫星控制系统是一个子控制系统,用来控制卫星的各个不同工作模式的切换,覆盖了卫星与火箭的分离过程以及分离后卫星的工作过程。
如图3所示为该子系统的SCADE状态机模型,它有两个子状态机SM1与SM2,分别用来描述星箭分离过程与星箭分离后卫星的工作模式。因此,SM1拥有两个状态,即未分离状态(BeforeDepart)与分离后状态(AfterDepart);SM2 拥有三个状态,分别代表了速度阻尼模式(Initial)、等待模式(Wait)以及飞轮控制模式(WheelControl)。每一个子状态机的状态都会为系统输出一个工作模式信号,用来判断控制系统处于哪个工作模式下。卫星一开始会接收到一个星箭分离信号,根据星箭分离信号进入分离后状态,激活速度阻尼模式。速度阻尼模式下会监听一个时间信号,该时间信号描述的是环境监测到的分离后持续的时间,时间信号超过一段规定值后会使卫星进入等待模式。进入等待模式会激活一个节拍计数器,该计数器用来记录切换到该工作模式后持续的时间,当满足一定条件后便正式进入卫星飞轮控制模式。飞轮控制模式是大多数卫星长期运行和进行业务工作的模式,该模式也拥有一个节拍计数器,待到相应时间后继续回到等待模式,从而节省卫星能源。
需要导出该系统对应的SCADE文本模型,并用自然语言描述所要验证的时序安全性需求。
以验证如下性质为例:星箭分离后,卫星控制系统进入等待模式,随后再经过5个时间单元进入飞轮控制模式开始工作,再经过10个时间单元回到等待模式。
用对应的时态逻辑表达式可以将其描述成如下形式:
G((SM_SM1.state=AfterDepart&SM_SM1.Sub_SM2.state=Initial&X SM_SM1.Sub_SM2.state=Wait)->(G[1,6]SM_SM1.Sub_SM2.state=Wait& G[7,17]SM_SM1.Sub_SM2.state=WheelControl))
将该SCADE文本模型通过模型转换模块得到NuSMV目标模型,将得到的 NuSMV目标模型和上述时序性质表达式一同输入到模型检查器NuSMV中执行验证过程,可以验证该模型的时序性质,从而根据反馈结果来修改模型。
根据本申请的实施方式,还提出一种基于模型转换的状态机模型时序性质验证方法,如图4所示,包括:
S101,模型解析步骤,解析高安全性的应用程序开发环境SCADE文本模型,得到语法树实例;
S102,符号表容器步骤,装载语法树实例,得到符号表实例;
S103,模型转换步骤,根据模型转换规则将符号表实例转换为符号模型验证器NuSMV模型;
S104,模型检查步骤,根据线性时序逻辑LTL公式及计算树逻辑CTL公式验证NuSMV模型的时序性质。
所述模型解析步骤的实现过程包括:
根据SCADE文本模型的语法语义声明,使用另一个语言识别工具ANTLR格式,将SCADE语法语义声明写成对应的ANTLR文件,所述ANTLR文件描述SCADE 语言的语法语义声明;
根据ANTLR文件中的声明,使用对应的Java监听器,对SCADE文本模型进行监听,得到语法树信息;
根据语法树信息生成语法树实例。
符号表容器步骤的实现过程包括:
定义层次化结构符号表和子状态机结构符号表;
根据层次化结构符号表和子状态机结构符号表,对语法树实例进行装载,得到符号表实例。
模型检查步骤的实现过程包括:
根据LTL公式及CTL公式验证NuSMV模型的时序性质;
若当前所验证的时序性质得到满足,则进行下一个时序性质的验证;
若当前所验证的时序性质未得到满足,则输出反例信息,停止时序性质的验证。
停止时序性质的验证之后,还包括:
模型调试步骤,根据所述反例信息修改SCADE系统开发环境,生成新的 SCADE文本模型,验证时序性质。
LTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
CTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
语法语义声明包括:程序语义、声明语义、类型声明、常量声明语义、自定义操作符节点声明语义、等式及表达式声明和SCADE状态机语义。
转换规则具体如下。
从SCADE状态机(符号表实例)转换到NuSMV输入模型的转换规则基于STP 方法,为了使其能够适用于SCADE状态机,对SCADE的层次化结构及状态机特点重新定义了转换规则,并改进了它的监控变量机制,从而创建SCADE状态机到NuSMV输入模型的转换框架。
如图5所示,是一个控制节点(Node)中的SCADE状态机,该状态机具有层次化的结构。状态机SM1有两个状态A与B,而状态机SM2拥有两个状态C 和D,并且SM2是状态B的子状态机。当状态转移条件g1满足时,状态A会转移到状态B;因此图中的g1,g2,...代表了状态之间的转移条件。在SCADE的状态里有具体的运算操作,并且在每个周期下,每个状态机有且只有一个状态是处于激活的。
SCADE层次化状态机拥有StateChart的特点,因此与STP方法类似,我们为转换规则引入两个布尔类型的触发器参数active和default。这两个触发器参数可以帮助目标模型构建出SCADE状态机中的层次结构,从而正确地用NuSMV 模型语言描述出来。
如图6所示,是仿真下状态机的情况,线条加粗代表着状态目前处于被激活状态,图中目前处于被激活状态的为状态B。SCADE状态机中的状态转移发生在同一层上,若目标状态为B的状态转移条件满足,则状态机会激活该转移, SM1的状态B也被激活,与此同时状态机SM2中的状态C也激活。即在SCADE 层次化状态机中,当父状态激活时,其子状态机才会被激活。而直接将这样的结构转向NuSMV输入模型时就会出现问题:NuSMV程序中的所有模块(MODULE) 都会在一开始时进行初始化,并在之后一直处于激活状态。显然不能直接以这样的方式进行转换,当对应的MODULE不应该在某些周期中被激活时,目标NuSMV 模型必须以某种方式明确指出,以防止在NuSMV模型对变量造成不正确的操作,这也是为什么需要引入active触发器参数,通过它来处理SCADE状态机与NuSMV 模型启动时的冲突,标记出对应的MODULE是否能被认为是激活的。
在转换框架中,每一个子状态机最终都会转换成NuSMV的一个MODULE。假设状态机Ssub是状态S的子状态机,active代表状态S所在的状态机是否是激活的,令SM_active代表子状态机Ssub是否激活,如表1的规则1所示,它的值由赋值符号右侧的表达式确定,即当状态S的父状态激活,且目前状态处于 S时,那么Ssub状态机也被激活。
表1
规则1:子状态机Ssub的触发器参数active |
SM_active:=(state=S)&active; |
每一个状态机都有它自己的初始状态,触发器参数active能告诉我们某个子状态机模块是否被触发。而一个状态可能会发生两种不同的转移,分别为,
(1)默认转移(defaulttransition):当状态机被触发的时候,它的初始状态会首先被激活,我们称这为默认转移。
(2)常规转移(regulartransition):该状态机在其所在层状态之间发生的转移,我们称它们为常规转移。
在SCADE中,假设某个子状态机被激活并执行了常规转移,若干周期后,该子状态机的父状态因迁移条件变化发生状态迁移,这就意味着父状态会从激活状态变为非激活状态。而当该子状态机的父状态下一次被激活时,子状态机需要发生默认转移,即子状态机的初始状态要被激活。而当我们将SCADE状态机转换到NuSMV输入模型时,仅有active触发器参数依旧无法保证子状态机的 MODULE会进行默认转移,这就是为什么需要引入另一个触发器参数default。通过设置参数default为真(True),目标模型就能确保每次进入子状态机时会发生默认转移,激活初始状态。
令S为当前状态,P1,...,Pn是状态S的前继(predecessors)。当状态 P1,...,Pn中有一个到状态S的转移条件满足时,触发器参数default需设置为真(True)。与此同时,只有当状态S的所在的状态机处于激活状态时才有意义。如表2的规则2所示,赋值语句必须与触发器active合取(&)。假设Def_S代表了S状态下的子状态机Ssub的触发器default参数,那么首先我们初始化该参数为False,代表着Ssub状态机还未初始化;然后运用以上的转换规则来定义 Def_S:
表2
除此之外,还有一个特殊情况,也就是最顶层的状态机。SCADE状态机模型中的所有状态机都是最顶层的状态机的子状态机,例如图5中SM1则是最顶层状态机SM的子状态机。这个状态机对应于NuSMV目标模型中的主模块 (MODULEmain)。最顶层的状态机实际上可以不需要触发器参数default,因为它总是激活的。因此我们选择在第一个时间单元将default设置为True,然后在以后的时间单元设置为False,这样就能保证最顶层的状态机的默认转移仅在最开始发生,并且只持续一个周期。根据表3的规则3,我们可以在最终NuSMV 程序中的主模块中定义它的参数default:
表3
通过触发器参数active与defalt的转换规则就能规范出NuSMV目标模型中的层次化状态机结构。假设S是一个子状态机SMi的一个状态,SMj是状态S 的子状态机,并且该子状态机SMj有状态s1,...,sn。NuSMV目标模型中,子状态机SMi与SMj的层次化结构如图7所示,在SMi中参数active代表着SMi是否处于激活状态;由于SMj是状态S的子状态机,SMj_active代表着子状态机 SMj是否激活。该结构结合了规则1和规则2。
在SCADE层次化状态机存在状态之间的转移关系,在图5,子状态机SM1 中有两个状态A和B,当转移条件g1满足时,状态A到状态B的转移就会发生。以此类推,当g3满足时,子状态机SM2中从状态C到状态D的转移就会发生。每个子状态机在NuSMV的目标模型中都以模块(MODULE)的形式出现,SCADE 的子状态机里的状态名都会在对应模块中的枚举变量state中声明,并且拥有两个触发器参数active与default。参数active表示该模块是否真正激活, default代表了是否发生默认的初始转移。因此,只有当触发器参数active为True时,该模块中的状态名变量state才是可见的。
根据SCADE状态机的特点,我们知道状态转移仅发生在同一层次的状态机中。如图8所示,子状态机中S1,...,Sn是状态S的目标状态,它们分别通过转移条件guard(S,S1),...,guard(S,Sn)进行状态转移。通过NuSMV的next关键词,定义常规状态转移的转换规则4,如表4所示。
表4
从中我们也能看出,当某个周期发生状态转移时,状态名会发生变化;若所有对应于特定状态的转移条件都未满足,那么下一个状态依旧是自身。这与 SCADE状态转移的情形是一致的,当SCADE状态机未发生转移时,所在状态的操作会再一次执行。这些都建立在所在状态机处于激活的条件下,因此需要将触发器参数active与它们做合取。
而当子状态机要发生默认转移时使用以下的状态转移规则5激活初始状态,如表5所示。
表5
规则5:默认转移情况下的状态转移 |
next(state):=next(active)&next(default):S0; |
反应式系统根据环境的输入作出响应,输出到特定设备并更新原环境的传感值,而SCADE模型决定了系统如何响应。因此在SCADE设计的控制系统中必然拥有对输出变量产生影响的操作与行为。在图5中,可以发现状态A中对输入变量x进行了数值运算操作,并将其输出到了输出变量o中。这也应证了SCADE 状态中的行为会更新和改变声明变量的值。在NuSMV目标模型中,SCADE里的环境输入会定义在NuSMV的模型的主模块(MODULE main)中,并将这些输入声明为全局变量,在每一个子状态机模块中根据环境输入作出响应和操作,更新全局变量的值。
NuSMV中,每个模块能够读取到主模块中全局变量的值,然而NuSMV并不支持这些子状态机模块同时更新一个全局变量。STP方法中的监控式机制 (monitor-likemechanism)可以使模型能够读写受监控的变量。监控式机制意味着对于StateChart中的事件或条件变量Var,总是拥有一个对应的模块叫做Set_Var,这个模块能够通过监控参数来操纵变量Var的值。
但问题是,STP方法中的事件与条件变量都抽象成了布尔类型的变量,而 SCADE中的变量数据类型会更复杂。并且在SCADE中,状态转移条件与状态中的事件行为都是十分具体的数据流操作。例如在SCADE状态机里,一个状态S 会使用到一些运算操作符来对特定的变量做出响应。
为了解决STP方法对于SCADE状态机的不足,本文提出了面向SCADE模型的变量监控的机制,从而为子状态机与全局变量建立一个通讯机制。SCADE变量监控机制首先将STP方法中的两类变量监控参数setm和resetm精化为 set(var,s)和reset(var,s),其次设计SCADE变量监控模块,最后提出了两类变量监控参数在各个子状态机里的赋值规则。
由于在SCADE中,事件行为与转移条件都是含有输入、输出变量的表达式,而输入变量又由环境决定,因此仅需对输出变量进行监控。这些监控参数都会作为全局变量声明在NuSMV目标模型的主模块中。
定义,在SCADE状态机中,令一个状态s中存在一个操作行为,该操作行为更新输出变量var的值,则有:
变量监控参数set(var,s)是一个布尔类型的参数,表示当所处状态为s时,该状态中影响变量var的行为操作是否需要被执行;
变量监控参数reset(var,s)是一个布尔类型的参数,表示当目标状态为s的状态转移发生时,目标状态s中影响变量var的行为操作是否需要被执行。
我们还需要定义变量监控模块的转换规则。设某个输出变量Var,对该变量的监控模块被命名成Set_Var。这类模块负责根据监控参数的值来改变变量 Var的值,当对应的监控参数为True时,则能执行对变量Var的赋值操作。令 v1,...,vi,...,vn为SCADE状态机中的所有变量,状态s1,...,sm中都存在对输出变量vi的操作,表6中的规则6就是关于变量vi的监控模块的转换规则。其中set_vi_s1,...,reset_vi_sm代表了相关的监控参数set(var,s)和reset(var,s)。具体在特定状态sk中,对变量vi的赋值操作的表达式由set_action(sk)和reset_action(sk)表示。这些赋值操作是在状态中的数据流操作,我们可以直接将它们转换成对应的表达式。转换规则也支持这类赋值操作调用其它用户定义的函数节点,因此如果需要的话,还得声明调用的函数名 function1,...,functionk。
表6
通过以上规则,以及之前引入的触发器参数active和default,我们已经能够在NuSMV的模型上建立起SCADE层次化状态机的结构了。但是只有当变量监控参数处于正确的值,整个层次化状态机才能够正确地运转。这些监控参数就似状态行为的开关。当其中一个开关打开,那么这个开关控制的变量就会得到更新。因此我们需要动态地控制这些开关,也就是在每一个子状态机对应的模块中控制这些监控参数。
监控参数set(var,s)的赋值规则,如图9(a)所示,令当前起始状态为s, T1,...,Tm是状态s的后继状态,guard(s,Ti)代表从状态s到T1的转移条件,其中i∈{1,...,m}。在SCADE状态机中,若状态s的所有转移条件都没满足,那么下一个状态依旧是状态s,并在下个周期执行状态中的操作。因此,如表7 规则7所示,状态s所在的状态机一直处于激活,那么若它的所有转移条件都没满足时,设置set(var,s)的值为True,否则为False。其中set_var_s等同于 set(var,s)。
表7
监控参数reset(var,s)的赋值规则,如图9(b)所示,状态s是状态P1,...,Pn的目标状态,从状态Pj到状态s的转移条件记作guard(Pj,s),其中j∈{1,...,n}。当guard(Pj,s)中的其中一个转移条件满足时,系统会到达状态s,那么监控参数reset(var,s)就会被设置。表8规则8则是reset(var,s)的赋值规则,需要注意的是,若目标状态s是某个子状态机的初始状态,那么也得将该监控参数设置为 True。其中reset_var_s等同于reset(var,s)。
表8
经过精化后的SCADE变量监控机制能够通过监控参数来间接操纵输出变量的取值。如图10所示,是SCADE参数监控机制的示意图,该机制能够建立子状态机模块和输出变量监控模块之间的通信。之前也提到,系统的环境变量对应了输入变量,而输入变量会影响状态中其他变量的值,以及转移条件中表达式的值,以此使得各个状态机进行状态迁移。然后每个子状态机SMi就会读取变量,进而改变监控参数的取值。而监控参数则能够决定该不该执行特定状态下对某个输出变量的操作,如果监控参数为True,则变量监控模块则能够更新对应输出变量的值。这就是该机制如何通过监控参数来改变各个变量的取值的。如此循环,构建成SCADE的变量监控机制。
NuSMV目标模型中的主模块(MODULE main)就是用来描述SCADE最顶层的状态机的,这个状态机只有一个状态,并且总是激活的。主模块主要处理一些变量声明,包括输入变量、输出变量、状态变量、监控变量等;除此之外还需处理一些实例化,包括子状态机模块的实例化、变量监控模块的实例化、用户自定义节点函数模块的实例化,以及对监控变量的初始化。
本申请的系统中,通过解析高安全性的应用程序开发环境SCADE文本模型,将SCADE文本模型转换为NuSMV模型,根据LTL公式及CTL公式验证NuSMV模型的时序性质,从而实现验证SCADE文本模型的时序性质,突破了SCADE模型性质验证的这个限制,进一步提高软件系统的安全性与可靠性。通过为SCADE 形式化验证引入能够描述时序相关安全需求的时序规范,从而能够验证模型的时序性质。通过提供了将SCADE状态机模型自动转换到NuSMV模型的转换机制,并描述了层次化状态机的结构,能够支持验证层次化状态机的需求性质。本申请的方法可用来调试和修改SCADE状态机模型的设计缺陷,尤其是在系统不满足时序性质方面上,能够进一步降低系统开发成本、提高系统可靠性。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (7)
1.一种基于模型转换的状态机模型时序性质验证系统,其特征在于,包括:
模型解析模块,用于解析高安全性的应用程序开发环境SCADE文本模型,得到语法树实例;
符号表容器模块,用于装载语法树实例,得到符号表实例;
模型转换模块,用于根据模型转换规则将符号表实例转换为符号模型验证器NuSMV模型;
模型检查模块,用于根据线性时序逻辑LTL公式及计算树逻辑CTL公式验证NuSMV模型的时序性质。
2.如权利要求1所述的系统,其特征在于,所述模型解析模块包括语法设计单元、语法树遍历单元语和语法树生成单元;
所述语法设计单元,用于根据SCADE文本模型的语法语义声明,使用另一个语言识别工具ANTLR格式,将SCADE语法语义声明写成对应的ANTLR文件,所述ANTLR文件描述SCADE语言的语法语义声明;
所述语法树遍历单元,用于根据ANTLR文件中的声明,使用对应的Java监听器,对SCADE文本模型进行监听,得到语法树信息;
所述语法树生成单元,用于根据语法树信息生成语法树实例。
3.如权利要求1所述的系统,其特征在于,所述符号表容器模块包括层次化结构符号表定义单元、子状态机结构符号表定义单元和语法树信息装载单元;
所述层次化结构符号表定义单元,用于定义层次化结构符号表;
所述子状态机结构符号表定义单元,用于定义子状态机结构符号表;
所述语法树信息装载单元,用于根据层次化结构符号表和子状态机结构符号表,对语法树实例进行装载,得到符号表实例。
4.如权利要求1所述的系统,其特征在于,所述模型检查模块具体用于:
根据LTL公式及CTL公式验证NuSMV模型的时序性质;
若当前所验证的时序性质得到满足,则进行下一个时序性质的验证;
若当前所验证的时序性质未得到满足,则输出反例信息,停止时序性质的验证。
5.如权利要求1所述的系统,其特征在于,所述LTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
6.如权利要求1所述的系统,其特征在于,所述CTL公式根据SCADE文本模型的自然语言描述的时序安全需求确定。
7.如权利要求3所述的系统,其特征在于,所述语法语义声明包括:程序语义、声明语义、类型声明、常量声明语义、自定义操作符节点声明语义、等式及表达式声明和SCADE状态机语义。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910605386.1A CN110532166B (zh) | 2019-07-05 | 2019-07-05 | 一种基于模型转换的状态机模型时序性质验证系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910605386.1A CN110532166B (zh) | 2019-07-05 | 2019-07-05 | 一种基于模型转换的状态机模型时序性质验证系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532166A true CN110532166A (zh) | 2019-12-03 |
CN110532166B CN110532166B (zh) | 2021-05-04 |
Family
ID=68659870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910605386.1A Active CN110532166B (zh) | 2019-07-05 | 2019-07-05 | 一种基于模型转换的状态机模型时序性质验证系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532166B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356294A (zh) * | 2021-12-21 | 2022-04-15 | 华东师范大学 | 一种基于fqltl语言的实例生成方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080086705A1 (en) * | 2006-10-10 | 2008-04-10 | Honeywell International Inc. | Automatic translation of simulink models into the input language of a model checker |
CN102591713A (zh) * | 2011-12-31 | 2012-07-18 | 浙江大学 | 基于有限状态机的软件功能模块的调度系统 |
CN104298921A (zh) * | 2013-07-15 | 2015-01-21 | 深圳市腾讯计算机系统有限公司 | 动画源文件安全漏洞检查方法及装置 |
CN104915514A (zh) * | 2015-06-25 | 2015-09-16 | 华东师范大学 | 一种基于问题框架方法的时间需求建模与验证方法 |
CN106598566A (zh) * | 2016-11-03 | 2017-04-26 | 南京航空航天大学 | 一种面向航电系统的基于需求的形式化建模与验证方法 |
-
2019
- 2019-07-05 CN CN201910605386.1A patent/CN110532166B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080086705A1 (en) * | 2006-10-10 | 2008-04-10 | Honeywell International Inc. | Automatic translation of simulink models into the input language of a model checker |
CN102591713A (zh) * | 2011-12-31 | 2012-07-18 | 浙江大学 | 基于有限状态机的软件功能模块的调度系统 |
CN104298921A (zh) * | 2013-07-15 | 2015-01-21 | 深圳市腾讯计算机系统有限公司 | 动画源文件安全漏洞检查方法及装置 |
CN104915514A (zh) * | 2015-06-25 | 2015-09-16 | 华东师范大学 | 一种基于问题框架方法的时间需求建模与验证方法 |
CN106598566A (zh) * | 2016-11-03 | 2017-04-26 | 南京航空航天大学 | 一种面向航电系统的基于需求的形式化建模与验证方法 |
Non-Patent Citations (2)
Title |
---|
仵志鹏等: "面向AltaRica模型的嵌入式系统安全性验证方法", 《计算机科学与探索》 * |
张刘毅: "基于抽象语法树和改进粒子群算法的代码同源性分析", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356294A (zh) * | 2021-12-21 | 2022-04-15 | 华东师范大学 | 一种基于fqltl语言的实例生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110532166B (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532167A (zh) | 一种基于模型转换的状态机模型时序性质验证方法 | |
Liu et al. | Pat 3: An extensible architecture for building multi-domain model checkers | |
Hanninen et al. | The Rubus component model for resource constrained real-time systems | |
CN1703703B (zh) | 用于检验用来命令装备特别是站场装备的铁路逻辑软件引擎的设备和方法 | |
Thompson et al. | Specification-based prototyping for embedded systems | |
US7729894B1 (en) | Test postcondition items for automated analysis and test generation | |
Carlson et al. | SaveCCM: An analysable component model for real-time systems | |
Zhan et al. | Unified graphical co-modelling of cyber-physical systems using AADL and Simulink/Stateflow | |
Van Mierlo et al. | Domain-specific modelling for human–computer interaction | |
CN110532166A (zh) | 一种基于模型转换的状态机模型时序性质验证系统 | |
Schlingloff | Cyber-physical systems engineering | |
Moradi et al. | Monitoring cyber-physical systems using a tiny twin to prevent cyber-attacks | |
Liebrenz et al. | Service-oriented decomposition and verification of hybrid system models using feature models and contracts | |
Kim et al. | Execution of natural language requirements using State Machines synthesised from Behavior Trees | |
Ge et al. | Formal development process of safety-critical embedded human machine interface systems | |
Porter et al. | Towards model-based integration of tools and techniques for embedded control system design, verification, and implementation | |
Tolvanen et al. | Metamodeling for medical devices: Code generation, model-debugging and run-time synchronization | |
Khalgui et al. | Reconfigurable Embedded Control Systems: Applications for Flexibility and Agility: Applications for Flexibility and Agility | |
Frey et al. | “Safety automata”—A new specification language for the development of PLC safety applications | |
Lu et al. | A UML profile to model safety-critical embedded real-time control systems | |
Balasubramanian et al. | Rapid property specification and checking for model-based formalisms | |
Brodsky et al. | CoJava: a unified language for simulation and optimization | |
Lecomte et al. | The CLEARSY safety platform: 5 years of research, development and deployment | |
Le Parc et al. | Grafcet revisited with a synchronous data-flow language | |
Ahmad et al. | An AADL-DEVS Framework for Cyber-Physical Systems Modeling and Simulation Supported with an Integrated OSATE and DEVS-Suite Tools |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210805 Address after: Room 801, no.6, Lane 600, Yunling West Road, Putuo District, Shanghai 200062 Patentee after: SHANGHAI FORMAL TECH INFORMATION TECHNOLOGY Co.,Ltd. Address before: 200062 No. 3663, Putuo District, Shanghai, Zhongshan North Road Patentee before: EAST CHINA NORMAL University Patentee before: SHANGHAI FORMAL TECH INFORMATION TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |