在Engee中的形式化验证
*形式化验证*是一种数学分析方法,可以完全调查模型相对于指定属性的所有可能行为。
与仅执行单个场景的常规模拟不同,形式化验证允许我们证明模型的某个属性始终得到满足,或者识别反例。
形式化验证很好地补充了Engee中面向模型的方法:相同的模型可用于仿真,代码生成和行为验证。
在工程中的实际实施
在*Engee*环境中,通过Promela语言的形式化模型的生成及其使用自旋系统的自动验证来实现形式化验证。
-
Promela(过程元语言)是一种用于规范需求模型或程序的语言。
-
Spin(简单的Promela解释器)--一个允许:
在文章中阅读有关Promela generation in*Engee*的更多信息 在Engee中生成Promela.
正式模型
在*Engee*中,在Promela上生成代码时会自动创建正式模型。 此模型描述:
-
可用变量(全局和局部);
-
状态和过渡的结构;
-
图表块的激活条件和操作逻辑;
-
计算的顺序和模型元素的相互作用。
形式模型应该是*明确的*:语法和语义不允许有歧义的解释。 得益于此,自旋工具可以精确地在数学上探索模型,并对属性进行严格的验证。
形式化分析
在构造形式化模型之后,执行*形式化分析*,这是一个以数学方式验证模型是否满足指定属性和要求的过程。
*形式分析*是验证与模型执行选项的完整搜索。 在分析过程中,调查所有可能的状态和转换,提供对指定属性的确认或反驳的保证。
形式化分析中的属性是模型的可验证要求。 每个属性被制定为单独的验证案例(例如,以LTL公式的形式)。 确定完整的属性集并验证其实现,可以确保模型的行为等同于规定的要求。:
-
如果属性结果为*true*,那么这可以保证它在模型的所有可能场景中都是真的。;
-
如果发现属性为*false*,则需要进行额外的检查-通常是对反例的分析。