CN108228455B - 一种软件控制危险分析方法 - Google Patents
一种软件控制危险分析方法 Download PDFInfo
- Publication number
- CN108228455B CN108228455B CN201711481426.3A CN201711481426A CN108228455B CN 108228455 B CN108228455 B CN 108228455B CN 201711481426 A CN201711481426 A CN 201711481426A CN 108228455 B CN108228455 B CN 108228455B
- Authority
- CN
- China
- Prior art keywords
- state machine
- variable
- machine model
- value
- smv
- 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.)
- Active
Links
Images
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
本发明提供一种软件控制危险分析方法,包括:基于目标有限状态软件系统状态机模型转换而成的C语言程序状态机模型,生成中间语言状态机模型,所述中间语言状态机模型通过中间变量的初始值、转移条件、转移前取值和转移后取值表征;基于所述中间语言状态机模型,获取中间语言状态机转移和所述中间变量的取值集合;基于所述中间变量的变量类型、取值集合、初始值和所述中间语言状态机转移,获取SMV程序状态机模型;基于所述SMV程序状态机模型,在NuSMV模型检测工具中执行状态机模型检测程序,输出检测结果。本发明能够实现目标有限状态软件系统状态机模型的准确且有效检测,从而使得对软件安全性分析的过程和结果更为简洁、直观。
Description
技术领域
本发明涉及软件安全技术领域,更具体地,涉及一种软件控制危险分析方法。
背景技术
Stateflow是一个基于有限状态机和流程图,构建组合和时序逻辑决策模型并进行仿真的环境。它可以结合图形表示(包括状态转移图、流程图)和表格表示(状态转换表和真值表),针对系统对事件、基于时间的条件以及外部输入信号的反应方式进行建模。Stateflow的仿真原理是有限状态机(Finite State Machine)理论,有限状态机是指系统含有可数的状态,在相应的状态事件发生时,系统会从当前状态转移到与之对应的状态。
在有限状态机中实现状态的转移需要一定的条件,同时相互转换的状态需要建立相应的状态转移事件,从而构成状态转移图。在 Simulink的仿真窗口中,允许用户建立有限个状态以及状态转移的条件与事件,从而绘制出有限状态机系统,实现对系统的仿真。实现状态转移的条件或事件,既可以取自Stateflow仿真框图,也可以来自 Simulink仿真模型。Stateflow可以直接嵌入到Simulink仿真模型中,并且在仿真的初始化阶段,Simulink会把Stateflow绘制的逻辑框图通过编译程序转换成C语言。
Stateflow可以用来建立系统的有限状态机模型,采用自然语言以及可读和易于理解的形式,能使得复杂的逻辑问题变得清晰与简单,但是Stateflow不能建立系统的约束,无法对系统模型进行验证,从而无法预测系统的安全性。
NuSMV是一个开放的架构验证工具的模型检查工具,可以验证设计的可靠性,也可以作为验证设计可靠性检测工具的核心,还可以作为验证平台验证技术。通过编写SMV程序文件描述有限状态系统状态转移模型,SMV程序文件经NuSMV解析编译后,得出系统模型检测的结果。
NuSMV可以对建立的SMV程序进行模型检测,直观的给出系统状态的危险发生的路径。对于简单的有限状态机系统,可以直接通过编写SMV程序来进行模型检测,但是对于复杂的有限状态系统, SMV 程序较为复杂,编写难度较大,同时SMV程序的可读性也比较差。
发明内容
为了克服上述问题或者至少部分地解决上述问题,并将其应用于具有有限个状态的软件系统的安全性分析中,本发明提供一种软件控制危险分析方法,用以更便利的对有限状态软件系统进行安全性检测,从而使得对软件系统安全性分析的过程和结果更为简洁、直观。
本发明提供一种软件控制危险分析方法,包括:S1,基于目标有限状态软件系统状态机模型转换而成的C语言程序状态机模型,确定中间变量,生成中间语言状态机模型,其中,所述中间语言状态机模型通过所述中间变量的初始值、转移条件、转移前取值和转移后取值进行表征;S2,基于所述中间变量的初始值、转移条件、转移前取值和转移后取值,处理所述中间语言状态机模型,获取中间语言状态机转移和所述中间变量的取值集合;S3,基于所述中间变量的变量类型、所述中间变量的取值集合、所述中间变量的初始值和所述中间语言状态机转移,获取SMV程序状态机模型;S4,基于所述SMV程序状态机模型,在NuSMV模型检测工具中执行SMV程序状态机模型检测程序,输出对所述目标有限状态软件系统状态机模型的检测结果。
其中,所述S1的步骤进一步包括:S11,基于语句的语法、语义,分析所述C语言程序状态机模型中的赋值语句、IF-ELSE语句和 SWITCH-CASE语句,确定所述中间变量,以及所述中间变量的变量类型、初始值、转移条件、转移前取值和转移后取值;S12,基于所述中间变量的初始值、转移条件、转移前取值和转移后取值,将所述C 语言程序状态机模型的状态机语义转化为所述中间语言状态机模型。
其中,所述S2的步骤进一步包括:遍历所有所述转移前取值和转移后取值,去除死节点,构造所述中间变量的取值集合;基于所述转移条件,构造中间语言状态机转移。
其中,所述S3的步骤进一步包括:S31,基于所述中间变量的变量类型和所述中间变量的取值集合,定义SMV程序状态机模型变量; S32,基于所述中间变量的初始值,确定所述SMV程序状态机模型变量的初始值,定义SMV程序状态机模型起始条件;S33,基于所述中间语言状态机转移,定义SMV程序状态机转移;S34,基于所述SMV 程序状态机模型变量、所述SMV程序状态机模型起始条件和所述SMV 程序状态机转移,确定所述SMV程序状态机模型;相应的,所述S4 的步骤进一步包括:在所述NuSMV模型检测工具中调取所述SMV程序状态机模型,执行预装的模型检测程序,输出对所述目标有限状态软件系统状态机模型的检测结果。
其中,步骤S11中所述中间变量的初始值的确定步骤进一步包括:若在所述赋值语句中有对所述中间变量的赋值,则以对所述中间变量的初次赋值作为所述中间变量的初始值;若在所述赋值语句中没有对所述中间变量的赋值,则取随机值作为所述中间变量的初始值。
进一步的,在所述S1的步骤之前,所述方法还包括:基于对应有限状态软件系统的属性信息,利用Stateflow工具,建立所述目标有限状态软件系统状态机模型。
其中,所述基于对应有限状态软件系统的属性信息,利用Stateflow 工具,建立所述目标有限状态软件系统状态机模型的步骤进一步包括:基于所述有限状态软件系统的所有状态属性,在Stateflow中创建对应状态,并基于系统状态的信息,确定状态标签;基于所述有限状态软件系统的所有状态之间的迁移属性,在Stateflow中创建迁移,并基于系统的迁移信息,确定迁移标签;基于所述有限状态软件系统的所有数据与事件属性,在Stateflow中创建数据与事件,并根据系统的数据与事件信息,添加数据与事件。
其中,所述目标有限状态软件系统状态机模型为利用Stateflow绘制的逻辑框图;相应的,步骤S1中具体利用Simulink工具把所述逻辑框图编译转换成所述C语言程序状态机模型。
其中,所述中间变量的变量类型进一步为整型、枚举型和布尔型中任一。
其中,若所述中间变量的变量类型为整型,则步骤S31中所述定义SMV程序状态机模型变量的步骤进一步包括:根据对应整型变量的整型类型,定义所述SMV程序状态机模型变量的变量类型,并根据所述整型变量的连续取值范围,定义对应SMV程序状态机模型变量的取值集合;若所述中间变量的变量类型为枚举型或布尔型,则步骤S31 中所述定义SMV程序状态机模型变量的步骤进一步包括:根据对应枚举型或布尔型变量的枚举型或布尔型类型,相应定义所述SMV程序状态机模型变量的变量类型,并根据所述枚举型或布尔型变量的离散取值序列,相应定义对应SMV程序状态机模型变量的取值集合。
本发明提供的一种软件控制危险分析方法,通过对C语言程序状态机模型的分析、处理和转换,最终将目标有限状态软件系统状态机模型转换为SMV程序状态机模型,并在NuSMV工具中调用该SMV 程序状态机模型文件,实现目标有限状态软件系统状态机模型的准确且有效检测,从而使得对软件安全性分析的过程和结果更为简洁、直观。
附图说明
图1为本发明实施例一种软件控制危险分析方法的流程图;
图2为本发明实施例一种建立目标有限状态软件系统状态机模型的流程图;
图3为本发明实施例一种生成中间语言状态机模型的流程图;
图4为本发明实施例一种获取SMV程序状态机模型的流程图;
图5为本发明实施例另一种软件控制危险分析方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例的一个实施例,本实施例提供一种软件控制危险分析方法,参考图1,为本发明实施例一种软件控制危险分析方法的流程图,包括:
S1,基于目标有限状态软件系统状态机模型转换而成的C语言程序状态机模型,确定中间变量,生成中间语言状态机模型,其中,所述中间语言状态机模型通过所述中间变量的初始值、转移条件、转移前取值和转移后取值进行表征;
S2,基于所述中间变量的初始值、转移条件、转移前取值和转移后取值,处理所述中间语言状态机模型,获取中间语言状态机转移和所述中间变量的取值集合;
S3,基于所述中间变量的变量类型、所述中间变量的取值集合、所述中间变量的初始值和所述中间语言状态机转移,获取SMV程序状态机模型;
S4,基于所述SMV程序状态机模型,在NuSMV模型检测工具中执行SMV程序状态机模型检测程序,输出对所述目标有限状态软件系统状态机模型的检测结果。
步骤S1可以理解为,通过一定的方法,可以将目标有限状态软件系统状态机模型编译转化成对应的C语言程序文件,即C语言程序状态机模型。C语言程序状态机模型是指基于C语言程序实现的软件系统状态机模型或用C语言程序描述的软件系统状态机模型,以C语言程序文件的形式保存的状态机模型。
该程序模型可以以C语言程序文件的形式输出。本步骤分析的对象即为该有限状态软件系统状态机模型对应的C语言程序。可通过调取对应的C语言文件,读取其中的程序语句,在语义和语法上逐句分析该C语言程序中的语句。分析过程中记录各语句中的变量,即中间变量,记录各中间变量的初始值、状态机中出现的所有状态转移,状态转移前各中间变量取值、状态转以后各中间变量取值,以及各状态转移发生的条件。
然后通过这些中间变量以及中间变量的初始值、转移条件、转移前取值和转移后取值,描述目标有限状态软件系统中的各个状态机,形成中间语言状态机模型。
在一个实施例中,在所述S1的步骤之前,所述方法还包括:基于对应有限状态软件系统的属性信息,利用Stateflow工具,建立所述目标有限状态软件系统状态机模型。
可以理解为,对于待分析的目标有限状态软件系统,先对应建立该软件系统的状态机模型,通过对对应状态机模型的分析,模拟对目标有限状态软件系统的安全性分析。具体首先分析待分析的目标有限状态系统,确定该软件系统的基本信息,包括对各状态机各种属性的信息,如状态属性、迁移属性、数据与事件属性等。然后根据所确定的属性信息,利用Stateflow工具对该有限软件系统进行建模,获取目标有限状态软件系统状态机模型。
其中可选的,所述目标有限状态软件系统状态机模型为利用 Stateflow绘制的逻辑框图;相应的,步骤S1中具体利用Simulink工具把所述逻辑框图编译转换成所述C语言程序状态机模型。
可以理解为,在利用Stateflow工具对目标有限状态软件系统进行建模时,根据获取的目标有限状态软件系统的所有属性信息,在 Stateflow环境中绘制软件中的所有状态,以及各状态之间的转移关系、转移条件等,形成逻辑变换图,该逻辑变换图包含了软件系统中的所有状态机。
由于步骤S1中的分析对象是C语言程序状态机模型,需要将建立的逻辑变换图形式的状态模型转换成C语言程序表示的模型。具体利用MATLAB仿真环境中的可视化仿真工具Simulink实现状态机逻辑框图模型到C语言程序状态机模型的编译转换。输出C语言程序状态机模型的表示文件。
其中可选的,所述基于对应有限状态软件系统的属性信息,利用 Stateflow工具,建立所述目标有限状态软件系统状态机模型的进一步处理步骤参考图2,为本发明实施例一种建立目标有限状态软件系统状态机模型的流程图,包括:
S01,基于所述有限状态软件系统的所有状态属性,在Stateflow 中创建对应状态,并基于系统状态的信息,确定状态标签;
S02,基于所述有限状态软件系统的所有状态之间的迁移属性,在 Stateflow中创建迁移,并基于系统的迁移信息,确定迁移标签;
S03,基于所述有限状态软件系统的所有数据与事件属性,在 Stateflow中创建数据与事件,并根据系统的数据与事件信息,添加数据与事件。
可以理解为,通过对目标有限状态软件系统的分析,获取软件的所有属性,包括状态属性、状态之间的迁移属性、数据与事件属性,并分别执行以下处理步骤:
分析有限状态软件系统的所有状态属性,在Stateflow中创建状态,根据软件的状态信息,完成状态标签;
分析有限状态软件系统所有状态之间的迁移属性,在Stateflow中创建状态迁移,根据软件的状态迁移信息,完成迁移标签;
分析有限状态软件系统的所有数据与事件属性,在Stateflow中创建数据与事件,根据软件的数据与事件信息,完成数据与事件的添加。
在一个实施例中,在完成Stateflow模型建立之后,通过Simulink 把Stateflow建立的软件系统状态机模型编译转换成C语言程序状态机模型,并以C语言程序文件形式保存。
其中可选的,所述S1的进一步处理步骤参考图3,为本发明实施例一种生成中间语言状态机模型的流程图,包括:
S11,基于语句的语法、语义,分析所述C语言程序状态机模型中的赋值语句、IF-ELSE语句和SWITCH-CASE语句,确定所述中间变量,以及所述中间变量的变量类型、初始值、转移条件、转移前取值和转移后取值。
可以理解为,该步分析的是C语言程序状态机模型中描述状态机的部分,包括:赋值语句、IF-ELSE语句与SWITCH-CASE语句。其中,赋值语句承载了初始化与描述状态机中语句值的变化,包括枚举型、整型和布尔型三类变量的赋值。赋值语句常常嵌套在IF-ELSE语句或SWITCH-CASE语句当中,描述状态机值的变化。
IF-ELSE语句描述了简单状态机的转换过程,例如以下的转移逻辑:
IF{
状态机的转移语句/变量的赋值语句/IF嵌套语句;
}
ELSE{
状态机的转移语句/变量的赋值语句/IF嵌套语句;
}
即状态变化只沿两个方向转移,在特定条件下,状态机需要进入两个特定状态中的何种状态,变量如何变化。当满足一定条件时,沿一个方向变化,当不满足时沿另外一个方向变化。IF和ELSE语句可以嵌套。
SWITCH-CASE语句描述了复杂状态机转换过程,例如以下的转移逻辑:
SWITCH
CASE1:状态机的转移语句/变量的赋值语句/IF嵌套语句
CASE2:状态机的转移语句/变量的赋值语句/IF嵌套语句
……
CASEn:状态机的转移语句/变量的赋值语句/IF嵌套语句
Default其它状况。
其中,SWITCH表示变量,CASE1至CASEn分别表示第1至第n 个条件,当第1至第n个条件中任一个被满足时,状态按该条件对应的方向变化。
通过对状态机C语言程序状态机模型的语法、语义分析,记录所有的变量,以及变量的变量类型、初始值、转移条件、转移前取值和转移后取值,再将这些语句含义中所表达的状态机语义转化为状态机中间语言。其中,状态机中间语言的描述对象是变量,例如表1中的变量描述。
表1,状态机中间语言变量
其中可选的,所述中间变量的变量类型进一步为整型、枚举型和布尔型中任一。
可以理解为,根据对目标有限状态软件系统状态机模型的分析,获取所有中间变量及其对应的变量类型,本实施例变量类型种类仅包含整型、枚举型和布尔型。对于任一个中间变量,其对应的变量类型为整型、枚举型和布尔型中的任意一种。
其中可选的,步骤S11中所述中间变量的初始值的确定步骤进一步包括:若在所述赋值语句中有对所述中间变量的赋值,则以对所述中间变量的初次赋值作为所述中间变量的初始值;若在所述赋值语句中未对所述中间变量的赋值,则取随机值作为所述中间变量的初始值。
可以理解为,根据上述实施例,需要确定中间变量的初始值,以确定中间语言状态机模型的起始条件。对于不同的中间变量,初始值的确定有两个途径。即:若在进行C语言程序状态机模型分析时,在赋值语句中包含对中间变量的赋值,则以对该变量的初次赋值作为该变量的初始值;若在赋值语句中仅包含对中间变量的定义,而不包含对该中间变量的赋值,则随机取一个值作为该变量的初始值。
S12,基于所述中间变量的初始值、转移条件、转移前取值和转移后取值,将所述C语言程序状态机模型的状态机语义转化为所述中间语言状态机模型。
可以理解为,在根据上述步骤获取状态机系统的中间变量和中间变量基于状态机变化的数据信息后,这些数据信息的整体用来表征中间语言状态机模型。即用中间变量的初始值、转移条件、转移前取值和转移后取值的整体,表征中间语言状态机模型。
步骤S2可以理解为,在根据上述步骤根据C语言程序状态机模型生成中间语言状态机模型之后,对中间语言状态机模型进行处理。由于中间语言状态机模型记录了所有状态机的初始值、转移条件和转移前后值,故可以直接构造状态机转移。同时,对于各状态转移,同一中间变量可以取不同的值。对任一变量,根据不同状态机的变化确定其所有取值。
其中可选的,所述S2的步骤进一步包括:遍历所有所述转移前取值和转移后取值,去除死节点,构造所述中间变量的取值集合;基于所述转移条件,构造中间语言状态机转移。
可以理解为,在整个有限状态软件系统中,中间变量的取值会随状态变化而改变。对于系统中每一次状态变化,根据状态转移前对应中间变量的取值以及状态转移后该中间变量的取值,记录中间变量所有取到的值。在所有取值中去除无法进入的死节点,去除死节点后所有取值组成的集合即为对应中间变量的取值集合。
根据上述步骤,在进行状态机C语言程序状态机模型分析时,即确定了状态的转移条件,根据该转移条件,构造中间语言状态机转移。
另外,还可以根据变量初始值,确定状态机的起始条件。
步骤S3可以理解为,SMV程序状态机模型是最终进行分析的模型,构造的状态机可按如下步骤输出为SMV程序文件。在根据上述步骤根据C语言程序状态机模型生成中间语言状态机模型之后,按一定的转换方法将中间语言状态机模型转换为SMV程序状态机模型。
其中,SMV程序状态机模型是指基于SMV程序实现的软件系统状态机模型或用SMV程序描述的软件系统状态机模型,以SMV程序文件的形式保存的状态机模型。
其中可选的,所述S3的进一步处理步骤参考图4,为本发明实施例一种获取SMV程序状态机模型的流程图,包括:
S31,基于所述中间变量的变量类型和所述中间变量的取值集合,定义SMV程序状态机模型变量。
可以理解为,本步骤根据中间变量定义NuSMV能够识别的SMV 程序状态机模型变量。具体根据已有中间变量类型(整型、枚举型或布尔型)确定各个SMV程序状态机模型变量的类别,根据遍历后的变量取值集合,输出整型SMV程序状态机模型变量的取值范围和枚举型 SMV程序状态机模型变量的各个取值。
其中可选的,若所述中间变量的变量类型为整型,则步骤S31中所述定义SMV程序状态机模型变量的步骤进一步包括:根据对应整型变量的整型类型,定义所述SMV程序状态机模型变量的变量类型,并根据所述整型变量的连续取值范围,定义对应SMV程序状态机模型变量的取值集合;
若所述中间变量的变量类型为枚举型或布尔型,则步骤S31中所述定义SMV程序状态机模型变量的步骤进一步包括:根据对应枚举型或布尔型变量的枚举型或布尔型类型,相应定义所述SMV程序状态机模型变量的变量类型,并根据所述枚举型或布尔型变量的离散取值序列,相应定义对应SMV程序状态机模型变量的取值集合。
可以理解为,根据上述实施例,任一中间变量的变量类型可以取整型、枚举型和布尔型中的任意一种。则在根据中间变量定义SMV程序状态机模型变量时,根据中间变量的变量类型定义对应SMV程序状态机模型变量的类型,根据中间变量的取值集合确定对应SMV程序状态机模型变量的取值集合。当中间变量为整型时,其取值集合为连续的取值范围;若为枚举型时,取值集合为该中间变量的所有取值组成的离散的取值序列;若为布尔型时,取值集合为包括真和假两个元素的离散取值序列。
S32,基于所述中间变量的初始值,确定所述SMV程序状态机模型变量的初始值,定义SMV程序状态机模型起始条件。
可以理解为,根据上述实施例状态机C语言程序状态机模型分析可确定中间变量的初始值,则本步骤根据各中间变量的初始值,确定对应SMV程序状态机模型变量的初始值,根据相关SMV程序状态机模型变量的初始值定义对应SMV程序状态机模型状态机的起始条件。
其中,根据已有的中间变量的初始取值,输出SMV程序状态机模型变量的初始取值,未定义初始取值的中间变量,对对应SMV程序状态机模型变量取随机值。
S33,基于所述中间语言状态机转移,定义SMV程序状态机转移。
可以理解为,根据上述实施例构建中间语言状态机转移之后,定义SMV程序模型状态机模型中对应的SMV程序状态机模型状态机转移。根据已有的变量状态转移前、转移后取值,逐条输出SMV程序状态机模型变量的转移条件。需要注意的是,优先级高的变量转移取值应在前输出。
S34,基于所述SMV程序状态机模型变量、所述SMV程序状态机模型起始条件和所述SMV程序状态机转移,确定所述SMV程序状态机模型。
可以理解为,在确定了SMV程序状态机模型中状态机各相关信息之后,根据各相关信息描述SMV程序状态机模型,输出SMV程序文件。
相应的,所述S4的步骤进一步包括:在所述NuSMV模型检测工具中调取所述SMV程序状态机模型,执行预装的模型检测程序,输出对所述目标有限状态软件系统状态机模型的检测结果。
可以理解为,在根据上述步骤建立SMV程序状态机模型,并输出对应的SMV文件之后,在利用模型分析工具分析目标有限状态软件系统时,在模型分析工具中通过直接调取对应的SMV文件,导入待分析的状态系统模型。
步骤S4可以理解为,NuSMV中用SMV程序来描述有限状态机的结构和特征规范。SMV程序中有两个很有用的表达式:int表达式和 next表达式。Init表达式用于描述初始状态,next表达式用于描述系统的转移关系。使用NuSMV进行模型检测的过程是先使用SMV程序描述系统和规范,然后运行NuSMV,读取SMV程序文件,NuSMV自动完成模型验证,输出对目标有限状态软件系统状态机模型的检测结果。
为了进一步说明本发明技术方案,参考图5,为本发明实施例另一种软件控制危险分析方法的流程图。借助Stateflow和软件控制危险分析辅助工具代替描述系统模型的SMV程序的编写。首先通过Stateflow 建立系统状态机模型,通过Simulink把Stateflow绘制的逻辑图形通过编译程序转换成C语言程序状态机模型,并以C语言程序文件保存,然后通过软件控制危险分析辅助工具,即根据上述实施例C语音程序状态机模型转化为SMV程序状态机模型流程,将C语言程序文件转换为SMV程序文件,最后通过NuSMV工具对SMV程序文件进行模型检测,得出分析结果。
本发明实施例提供的一种软件控制危险分析方法,通过对C语言程序状态机模型的分析、处理和转换,最终将目标有限状态系统状态机模型转换为SMV程序状态机模型,输出SMV程序文件,并在NuSMV 工具中调用该SMV程序文件,实现目标有限状态系统模型的准确且有效检测,从而使得对系统安全性分析的过程和结果更为简洁、直观。
为了更进一步对本发明的技术方案进行说明,以下以坠机过程为例进行举例说明,但不作为对本发明保护范围的限值。
例如,对于某坠机事件,坠机过程的状态变化如下:
飞机除冰未完整,导致机翼上有积冰;
起飞时积冰破裂,进入引擎击伤叶片,导致引擎喘振;
机长降低引擎速度;
自动推力复原(automatic thrust restoration,ATR)系统启动,右引擎
转为最大加力,导致右引擎喘振加剧最终损坏;
自动预留推力(automatic reserve thrust system,ARTS)系统启动,左
引擎转为最大加力,导致左引擎喘振加剧损坏;
飞机双发失效坠毁。
为了验证飞机坠毁事件,其建模和验证过程如下:
首先,获取坠机过程的基本信息,利用工具Stateflow对其进行状态机建模。建模完成后,通过Simulink把Stateflow绘制的逻辑图形通过编译程序转换成C语言文件,并保存。具体处理过程如下:
分析坠机过程的所有状态属性,在Stateflow中创建状态,根据系统状态的信息,完成状态标签;
分析所有状态之间的迁移属性,在Stateflow中创建迁移,根据系统的迁移信息,完成迁移标签;
分析该过程的所有数据与事件属性,在Stateflow中创建数据与事件,根据系统的数据与事件信息,完成数据与事件的添加;
Simulink把Stateflow绘制的逻辑图形通过编译程序转换成C语言程序状态机模型,并以C语言程序文件的形式保存。
上述的处理步骤完成后,该坠机过程的模型即建立完毕。
其次,利用软件控制危险分析辅助工具,对有限状态软件系统建模生成的C语言程序文件进行编译,将其转化成SMV程序文件。其处理过程如下:
打开软件控制危险分析工具;
导入步骤a生成的C语言程序文件;
把C语言程序文件编译成SMV程序文件。
再次,利用NuSMV,将步骤b生成的SMV程序文件在NuSMV 模型检测工具中执行模型检测,得出分析结果。
通过上述步骤,可以完成对有限状态系统的建模与验证。本实施例对有限状态软件系统利用Stateflow进行建模,通过Simulink把 Stateflow绘制的逻辑图形通过编译程序转换成C语言程序文件,通过软件控制危险分析辅助工具将C语言程序文件编译转化为SMV程序文件;最后将SMV程序文件放到NuSMV模型检测工具中执行模型检测,得出分析结果。
使用这一方法可以将Stateflow与NuSMV结合起来,使得有限状态软件系统的建模和验证工作更易操作,结果更清晰,使得系统安全性分析的过程和结果更为简洁、直观。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种软件控制危险分析方法,其特征在于,包括:
S1,基于目标有限状态软件系统状态机模型转换而成的C语言程序状态机模型,确定中间变量,生成中间语言状态机模型,其中,所述中间语言状态机模型通过所述中间变量的初始值、转移条件、转移前取值和转移后取值进行表征;
S2,基于所述中间变量的初始值、转移条件、转移前取值和转移后取值,处理所述中间语言状态机模型,获取中间语言状态机转移和所述中间变量的取值集合;
S3,基于所述中间变量的变量类型、所述中间变量的取值集合、所述中间变量的初始值和所述中间语言状态机转移,获取SMV程序状态机模型;
S4,基于所述SMV程序状态机模型,在NuSMV模型检测工具中执行SMV程序状态机模型检测程序,输出对所述目标有限状态软件系统状态机模型的检测结果;
其中,所述S1的步骤进一步包括:
S11,基于语句的语法、语义,分析所述C语言程序状态机模型中的赋值语句、IF-ELSE语句和SWITCH-CASE语句,确定所述中间变量,以及所述中间变量的变量类型、初始值、转移条件、转移前取值和转移后取值;
S12,基于所述中间变量的初始值、转移条件、转移前取值和转移后取值,将所述C语言程序状态机模型的状态机语义转化为所述中间语言状态机模型。
2.根据权利要求1所述的方法,其特征在于,所述S2的步骤进一步包括:
遍历所有所述转移前取值和转移后取值,去除死节点,构造所述中间变量的取值集合;
基于所述转移条件,构造中间语言状态机转移。
3.根据权利要求2所述的方法,其特征在于,所述S3的步骤进一步包括:
S31,基于所述中间变量的变量类型和所述中间变量的取值集合,定义SMV程序状态机模型变量;
S32,基于所述中间变量的初始值,确定所述SMV程序状态机模型变量的初始值,定义SMV程序状态机模型起始条件;
S33,基于所述中间语言状态机转移,定义SMV程序状态机转移;
S34,基于所述SMV程序状态机模型变量、所述SMV程序状态机模型起始条件和所述SMV程序状态机转移,确定所述SMV程序状态机模型。
4.根据权利要求1所述的方法,其特征在于,步骤S11中所述中间变量的初始值的确定步骤进一步包括:
若在所述赋值语句中有对所述中间变量的赋值,则以对所述中间变量的初次赋值作为所述中间变量的初始值;
若在所述赋值语句中没有对所述中间变量的赋值,则取随机值作为所述中间变量的初始值。
5.根据权利要求1-4中任一所述的方法,其特征在于,在所述S1的步骤之前,还包括:
基于对应有限状态软件系统的属性信息,利用Stateflow工具,建立所述目标有限状态软件系统状态机模型。
6.根据权利要求5所述的方法,其特征在于,所述基于对应有限状态软件系统的属性信息,利用Stateflow工具,建立所述目标有限状态软件系统状态机模型的步骤进一步包括:
基于所述有限状态软件系统的所有状态属性,在Stateflow中创建对应状态,并基于系统状态的信息,确定状态标签;
基于所述有限状态软件系统的所有状态之间的迁移属性,在Stateflow中创建迁移,并基于系统的迁移信息,确定迁移标签;
基于所述有限状态软件系统的所有数据与事件属性,在Stateflow中创建数据与事件,并根据系统的数据与事件信息,添加数据与事件。
7.根据权利要求5所述的方法,其特征在于,所述目标有限状态软件系统状态机模型为利用Stateflow绘制的逻辑框图;
相应的,步骤S1中具体利用Simulink工具把所述逻辑框图编译转换成所述C语言程序状态机模型。
8.根据权利要求5所述的方法,其特征在于,所述中间变量的变量类型进一步为整型、枚举型和布尔型中任一。
9.根据权利要求3所述的方法,其特征在于,在所述S1的步骤之前,还包括:
基于对应有限状态软件系统的属性信息,利用Stateflow工具,建立所述目标有限状态软件系统状态机模型;
其中,所述中间变量的变量类型进一步为整型、枚举型和布尔型中任一;
其中,若所述中间变量的变量类型为整型,则步骤S31中所述定义SMV程序状态机模型变量的步骤进一步包括:
根据对应整型变量的整型类型,定义所述SMV程序状态机模型变量的变量类型,并根据所述整型变量的连续取值范围,定义对应SMV程序状态机模型变量的取值集合;
若所述中间变量的变量类型为枚举型或布尔型,则步骤S31中所述定义SMV程序状态机模型变量的步骤进一步包括:
根据对应枚举型或布尔型变量的枚举型或布尔型类型,相应定义所述SMV程序状态机模型变量的变量类型,并根据所述枚举型或布尔型变量的离散取值序列,相应定义对应SMV程序状态机模型变量的取值集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711481426.3A CN108228455B (zh) | 2017-12-29 | 2017-12-29 | 一种软件控制危险分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711481426.3A CN108228455B (zh) | 2017-12-29 | 2017-12-29 | 一种软件控制危险分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228455A CN108228455A (zh) | 2018-06-29 |
CN108228455B true CN108228455B (zh) | 2020-06-23 |
Family
ID=62647241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711481426.3A Active CN108228455B (zh) | 2017-12-29 | 2017-12-29 | 一种软件控制危险分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228455B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531963B (zh) * | 2019-08-28 | 2021-05-07 | 上海交通大学 | 一种基于数据的工业软件系统行为模型还原方法 |
CN110673843B (zh) * | 2019-09-16 | 2021-07-16 | 上海交通大学 | 一种基于数据的软件模块行为状态机还原方法 |
CN114137893A (zh) * | 2020-09-03 | 2022-03-04 | 中电智能科技有限公司 | 一种基于状态机的plc逻辑编程系统及编程编译方法 |
CN114443428B (zh) * | 2022-01-19 | 2024-08-30 | 山东新一代信息产业技术研究院有限公司 | 一种基于iros的程序内部运行状态监测方法和装置 |
CN117173431A (zh) * | 2023-07-26 | 2023-12-05 | 清华大学 | 基于状态机的视觉智能检测鲁棒性增强方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044211A (en) * | 1994-03-14 | 2000-03-28 | C.A.E. Plus, Inc. | Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description |
CN105955755A (zh) * | 2016-05-19 | 2016-09-21 | 上海大学 | 一种基于状态图的代码化验证方法 |
CN107193745A (zh) * | 2017-05-26 | 2017-09-22 | 中国人民解放军信息工程大学 | PLC程序到NuSMV输入模型的自动化构建方法 |
-
2017
- 2017-12-29 CN CN201711481426.3A patent/CN108228455B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044211A (en) * | 1994-03-14 | 2000-03-28 | C.A.E. Plus, Inc. | Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description |
CN105955755A (zh) * | 2016-05-19 | 2016-09-21 | 上海大学 | 一种基于状态图的代码化验证方法 |
CN107193745A (zh) * | 2017-05-26 | 2017-09-22 | 中国人民解放军信息工程大学 | PLC程序到NuSMV输入模型的自动化构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108228455A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228455B (zh) | 一种软件控制危险分析方法 | |
Campos et al. | Model checking interactor specifications | |
CN108509336A (zh) | 一种操作系统规范形式化验证与测试方法 | |
EP1672547A1 (en) | Event-driven model generated from an ordered natural language interface | |
US6499132B1 (en) | System and method for analyzing temporal expressions | |
KR19990066809A (ko) | 하드웨어의 소프트웨어 문맥에서 그 하드웨어의 검증 방법 및장치, 및 소프트웨어의 하드웨어 문맥에서 그 소프트웨어의 검증 방법 및 장치r | |
US10970449B2 (en) | Learning framework for software-hardware model generation and verification | |
CN114077782B (zh) | 一种准确识别损失场景的stpa方法和装置 | |
CN109522005A (zh) | 跨平台图形化程序设计方法 | |
Zaki-Ismail et al. | Rcm: Requirement capturing model for automated requirements formalisation | |
US6920583B1 (en) | System and method for compiling temporal expressions | |
Hall et al. | Problem oriented software engineering: A design-theoretic framework for software engineering | |
Abid et al. | A Real-Time Specification Patterns Language | |
JP2023506097A (ja) | プログラマブルロジックコントローラプログラムの解析方法 | |
Nastov et al. | MBSE and V&V: a tool-equipped method for combining various V&V strategies | |
Li et al. | System modeling and fault tree analysis based on AltaRica | |
Schöpp et al. | Requirements-based code model checking | |
CN110297773B (zh) | 一种形式验证中断言综合的可视化方法、存储介质和终端 | |
Pakonen et al. | Evaluation of visual property specification languages based on practical model-checking experience | |
CN112559359A (zh) | 一种基于s2ml的安全攸关系统分析与验证方法 | |
Singh et al. | Stateflow to tabular expressions | |
CN114579084A (zh) | 发动机的控制软件的形式化处理方法和装置 | |
Van Tassel | An operational semantics for a subset of VHDL | |
Wittocx et al. | Debugging for model expansion | |
CN116755662B (zh) | 一种应用开发安全需求的生成方法及系统 |
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 |