一种设计层形式化验证方法及系统

文档序号:33518520发布日期:2023-03-22 06:16阅读:33来源:国知局
一种设计层形式化验证方法及系统

1.本发明属于计算机软件设计及测试技术领域,具体地,涉及一种操作系统设计层的形式化验证方法及系统。


背景技术:

2.随着物联网和智能场景的加速融合,嵌入式操作系统被广泛运用。尤其是在智慧城市、智能驾驶、机器人系统等智能化场景中,其基础设施的安全性和可靠性要求更是严苛,因此需要运用形式化验证的方法来提高操作系统的可靠性和安全性。然而,操作系统中的各模块进行的交互行为都要满足安全属性,其有限的硬件资源和交互的实时性问题也要求更高的可靠性,这就要求在设计上进行安全验证。
3.澳大利亚国家 ict 实验室(nicta)推出了第一个经过完全形式化验证的微内核sel4。虽然sel4从需求层、设计层到实现层被完整形式化验证了是没有bug的,但是其验证框架可扩展性低,验证效率低。对sel4进行形式化验证框架是单体化的,其功能模块具有高度耦合的特性,基于此所描述的规范,不易进行拓展和移植。整个sel4操作系统的代码量为8700行,其人力成本为20人年2016年耶鲁大学基于coq定理证明器完整验证了certikos的功能正确性及相关的安全性质。
4.设计层作为衔接需求层和源码层的中间层级,能更早的发现其中的错误,有助于对需求层和源码层的建模和验证都有促进作用。然而目前,在设计层的形式化验证一般都需要对特定的数据结构和算法进行形式化规范的建模和验证,增加了难度。此外,现有验证方法的形式化规范不易进行扩展,验证效率较低。


技术实现要素:

5.本发明公开了一种操作系统的设计层形式化验证方法及系统,具有通用性,能够扩展到其他系统中进行形式化验证。
6.本发明实施例的第一方面,提供了一种操作系统的设计层形式化验证方法,包括:步骤101、获取所述操作系统的设计层文档;其中,所述设计层文档包括所述操作系统的设计层的数据结构、状态和算法的描述;步骤102、使用isabelle元语言对所述数据结构和所述状态进行形式化描述;步骤103、基于经过形式化描述的所述数据结构和所述状态,使用状态单子对设计层算法中的函数功能进行形式化描述,以得到设计层功能函数模型;步骤104、获取所述操作系统的需求层功能函数模型,对所述设计层功能函数模型与所述需求层功能函数模型进行精化验证。
7.在其他的一个实施例中,所述步骤104中,对所述设计层功能函数模型与所述需求层功能函数模型进行精化验证,包括:对所述设计层功能函数模型与所述需求层功能函数模型的功能一致性进行精化验证;其中,所述需求层功能函数模型使用isabelle元语言对所述操作系统的需求层的函数功能进行形式化描述。
8.在其他的一个实施例中,所述步骤104中,所述精化验证使用霍尔三元组形式化描
述需要证明的功能一致性;其中,所述霍尔三元组的前置条件为设计层功能函数模型的状态与需求层功能函数模型的状态相同的等式,中间动作为函数功能,后置条件是设计层功能函数模型经过该动作操作后的单子状态与需求层功能函数模型经过该动作后的状态相同的等式。
9.在其他的一个实施例中,所述步骤104中,所述对所述设计层功能函数模型与所述需求层功能函数模型进行精化验证,包括:对设计层功能函数模型的功能函数进行展开以进行验证描述;使用wpsimp命令简化设计层功能函数的验证描述,以生成isabelle元语言构造的高阶逻辑表达式;对需求层功能函数模型的同一功能函数进行展开以进行验证描述;调用辅助引理对所述霍尔三元组进行自动验证,以验证调用功能函数前的需求层与设计层的状态是否一致,以及调用功能函数后的设计层与需求层的状态是否一致。
10.在其他的一个实施例中,所述步骤102中,通过record命令对所述数据结构进行形式化描述,通过definition命令对所述状态进行形式化描述;所述步骤103中,通过definition命令构建所述函数功能。
11.在其他的一个实施例中,所述步骤104中,通过 apply ( simp add: 功能函数) 命令对设计层功能函数模型或需求层功能函数模型的功能函数进行展开以进行验证描述。
12.本发明实施例的第二方面,提供了一种操作系统的设计层形式化验证系统,包括:获取模块,配置为获取所述操作系统的设计层文档;其中,所述设计层文档包括所述操作系统的设计层的数据结构、状态和算法的描述;形式化描述模块,配置为:使用isabelle元语言对所述数据结构和所述状态进行形式化描述;以及基于经过形式化描述的所述数据结构和所述状态,使用状态单子对设计层的算法的函数功能进行形式化描述,以得到设计层功能函数模型;精化验证模块,配置为获取所述操作系统的需求层功能函数模型,对所述设计层功能函数模型与所述操作系统的需求层功能函数模型进行精化验证。
13.此外,本发明的实施例还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,与所述存储器数据耦合,用于在执行所述计算机程序时,实现所述的设计层形式化验证方法。
14.此外,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现所述的设计层形式化验证方法。
15.本发明通过在isabelle中构建状态单子形式化建模语言,可以将函数式编程过程化,使用状态单子构建形式化验证模型以定义模型的基本数据类型与结构、明确系统状态,并根据系统各模块的功能需求使用状态单子构建功能规范,实现了形式化描述的通用性。
16.本发明在构建系统执行模型之后,使用状态单子技术提供的霍尔逻辑谓词,能够验证各模块实现规范的功能正确性,通过求精证明来验证设计层与需求层规范的一致性,提高了形式化验证的效率。
附图说明
17.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其他特征、目的和优点将会变得更明显:图1为根据本发明实施例的操作系统的设计层形式化验证方法流程示意图。
18.图2为根据本发明实施例的操作系统设计层形式化验证系统组成示意图。
具体实施方式
19.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
20.术语解释:isabelle/hol:是一个具备工业成熟度的形式化方法和工具环境,其形式证明资源库包含300多个开源项目,合计150多万行形式规约与证明。
21.state monad:状态单子,是函数式编程中的一种对过程式编程语言的建模方式。
22.图1为根据本发明实施例的操作系统的设计层形式化验证方法100流程示意图。如图1所示,该方法包括如下步骤:步骤101、获取操作系统的设计层文档;本发明中,操作系统的设计层文档例如可以是自然语言描述的文本文件。其中,所述设计层文档包括操作系统的设计层的数据结构、状态和算法的描述。
23.步骤102、使用isabelle元语言对设计层的数据结构和状态进行形式化描述;操作系统的设计层是对需求层的算法和数据结构进行设计,因此对设计层进行形式化验证包括对数据结构和算法进行形式化建模,该步骤102首先对设计层的数据结构和状态进行形式化描述。
24.本发明中,使用isabelle元语言,通过record命令对设计层的数据结构进行形式化描述。具体地,以record
ꢀ“
数据命名::类型”方式逐条进行描述。例如:record plugin =name :: stringactorid :: int64_t本发明中,使用isabelle元语言,通过definition命令对状态进行形式化描述。具体地,包括其命名和类型,通过“definition 状态命名::类型”来表示状态命名和类型,并通过where语句来对状态变量进行初始化赋值。例如:definition actor_state_init :: "int" where "actor_state_init ≡ 0"步骤103、基于经过形式化描述的数据结构和状态,使用状态单子语言对设计层的算法进行形式化描述,以得到设计层功能函数模型;本发明中,根据设计层文档,利用状态单子语言(state monad)对设计层的算法的函数功能进行描述,以得到设计层功能函数模型。
25.首先,在isabelle中通过imports命令导入状态单子相关的库。例如,一个示例为:imports"lib/monad_wp/nondetmonad"然后,根据设计层文档,使用状态单子函数构建设计层的算法的函数功能。
26.具体地,通过definition 函数名::
ꢀ“
参数类型,返回值类型 nondet_monad”来表
示一个函数定义。使用condition条件句来判断是否满足执行下面语句块的条件,例如使用condition语句判断plugin的状态是finish或者pause。语句块使用 do ... od来描述,带异常的语句块使用doe ... ode来描述。使用return表示结束返回。
27.步骤104、获取操作系统的需求层功能函数模型,对设计层功能函数模型与需求层功能函数模型进行精化验证。
28.对设计层功能函数模型与需求层功能函数模型进行精化验证,也即对设计层的函数与需求层的函数进行功能一致性证明。本发明中,使用霍尔三元组形式化描述需要证明的功能一致性。其中,所述霍尔三元组的前置条件为设计层功能函数模型的状态与需求层功能函数模型的状态相同的等式,中间动作为函数功能,后置条件是设计层功能函数模型经过该动作操作后的单子状态与需求层功能函数模型经过该动作后的状态相同的等式。
29.在一个实施例中,该步骤104具体包括:步骤1041、对设计层功能函数模型的功能函数进行展开以进行验证描述;具体地,可以通过 apply( simp add: 设计层功能函数) 对设计层功能函数模型的功能函数进行展开以进行验证描述。
30.步骤1042、使用wpsimp命令简化设计层功能函数的验证描述,以生成isabelle元语言构造的高阶逻辑表达式;具体地,用nondetmonadvcg中的wpsimp命令简化设计层功能函数的验证描述,以生成isabelle元语言构造的高阶逻辑表达式。
31.步骤1043、对需求层功能函数模型的同一功能函数进行展开以进行验证描述;具体地,可以通过 apply( simp add: 需求层功能函数) 对需求层功能函数模型的功能函数进行展开以进行验证描述。
32.步骤1044、调用辅助引理对霍尔三元组进行自动验证,以验证调用功能函数前的需求层与设计层的状态是否一致,以及调用功能函数后的设计层与需求层的状态是否一致。
33.具体地,在isabelle中调用已定义的辅助引理,或引用自定义的辅助引理对霍尔三元组进行自动验证。
34.以群体智能操作系统插件模块包含暂停函数,该暂停函数的功能是将当前插件状态修改为暂停状态。以该暂停函数为例,其形式化验证过程包括:(1)对系统的四种运行状态(running、pause、ready、finish),使用isabelle元语言,通过definition进行形式化描述。
35.(2)使用isabelle元语言对插件的数据结构,通过record命令进行形式化描述。该插件包括四种数据:name:string;actorid:int64_t;state:pluginstate;duration:int。
36.(3)根据设计文档中的暂停函数功能描述,用状态单子函数构建形式化描述。具体地,通过definition 函数名::
ꢀ“
参数类型,返回值类型 nondet_monad”来表示一个函数定义。使用condition条件句来判断是否满足执行下面语句块的条件,使用condition语句判断plugin的状态是finish或者pause。语句块使用 do ... od来描述,带异常的语句块使用doe ... ode来描述。使用return表示结束返回。
37.(4)对设计层描述的暂停函数与需求层描述的暂停函数进行求精验证。具体地,通过lemma描述霍尔三元组。使用apply调用验证方法,例如:
apply(simpadd:des_pause_def)applywpsimp本发明的另外一个实施例,还提供了一种操作系统的设计层形式化验证系统200,如图2所示,该设计层形式化验证系统200包括:获取模块201,配置为获取所述操作系统的设计层文档;其中,所述设计层文档包括所述操作系统的设计层的数据结构、状态和算法的描述;形式化描述模块202,配置为:使用isabelle元语言对设计层的数据结构和状态进行形式化描述;以及基于经过形式化描述的所述数据结构和所述状态,使用状态单子对设计层算法的函数功能进行形式化描述,以得到设计层功能函数模型;精化验证模块203,配置为获取所述操作系统的需求层功能函数模型,对所述设计层功能函数模型与所述操作系统的需求层功能函数模型进行精化验证。
38.此外,本发明的实施例还公开了一种电子设备,包括:存储器,用于存储计算机程序;处理器,与所述存储器数据耦合,用于在执行所述计算机程序时实现所述的形式化验证方法。
39.此外,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的形式化验证方法。
40.虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明发明构思的情况下,可以对本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1