一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

可双向转换的并发性验证方法、系统、设备及存储介质与流程

2021-12-14 23:26:00 来源:中国专利 TAG:


1.本发明涉及c语言源码并发性安全技术领域,尤其涉及一种可双向转换的并发性验证方法、系统、设备及存储介质。


背景技术:

2.形式化验证是指采用形式化方法对计算机软硬件进行安全性验证的过程。形式化方法是指基于严格的数学推导基础,对计算机软硬件系统进行描述、开发和验证的技术。其数学基础是建立在形式语言、语义和推理证明三位一体的形式逻辑系统之上。正是由于形式化的数学严格性使得经过形式化验证的程序安全性得以保证。虽然形式化验证并不能完全保证系统无错,但是其目的是为了最大限度理解和分析系统,将给出的系统规范转化为形式化条件,并尽可能验证系统是否满足这些条件。
3.并发性验证是指使用csp等过程建模语言将需要验证的软件系统进行重新建模,将系统内部的数据、行为和实体进行抽象,并在系统模型代码中加入相应的并发性验证模块代码,最后输入到模型检查引擎中得出并发性验证结果。可验证的并发性属性有死锁检测、可达性验证、无散度判别等。另一方面,采用常见的并发性验证方法存在着下列问题:
4.1.推理低效困难:普通验证过程常采用单一的源码或者字节码进行底层验证,并发性验证需要证明高层的安全属性,如死锁、可达性、无散度判别等,而源码级或字节码级涉及到太多的无意义变量与逻辑,导致现有的自动推理系统失败,不能有效完成验证任务。
5.2.多验证系统无一致性保证:一部分验证方法会经过源码验证后,再去使用另一种抽象行为建模语言进行手动建模,但是因为系统中存在模型间的语义鸿沟,缺少严谨的一致性证明。如果人工编写源码级功能规范,再进行复杂的一致性推理,则会严重影响验证效率。
6.3.从规范生成的代码无法保证实际性能:一种方法从非形式化规范或规则,自动转换为形式化规范或规则,然后基于形式化功能规范自动生成符合规范的高级语言。实践证明这种从规范自动生成的编程语言虽然功能符合预期,但是代码逻辑在时间、空间复杂度的表现很差。


技术实现要素:

7.为了解决上述问题,本发明提出一种可双向转换的并发性验证方法、系统、设备及存储介质,通过一种双分支映射的中间层规范自动转换到两个验证模型,即满足了底层与高层的验证需求,又保证了模型间的行为一致性,提高了验证效率。
8.本发明通过下述技术方案实现:
9.一种可双向转换的并发性验证方法,包括以下步骤:
10.步骤1:基于源码api信息与文档功能需求,整合出一种双分支映射的中间层规范;
11.步骤2:将所述中间层规范分别自动映射为抽象过程模型与源码级验证模型,进行并发属性验证与功能性验证;
12.步骤3:根据所述并发属性验证与功能性验证情况,生成具有跨模型逻辑一致性的安全验证结果。
13.进一步的,步骤1包括以下子步骤:
14.步骤101:分析待验证程序中所有的变量,作为所述中间层规范中的行为载体,通过行为载体描述中间层的状态及行为;再确定待验证程序中的主要状态变迁主要依靠的函数,将其设置为function元素;
15.步骤102:隐藏底层具体繁杂的内存状态,引入等价的抽象状态用于表述底层完整功能逻辑,忽略函数变量具体的取值,只考虑相应的状态变迁及变迁条件,描述出函数具体内部逻辑;
16.步骤103:一次性处理所有的api,通过步骤102转化为所述中间层规范。
17.进一步的,步骤2包括:
18.将所述中间层规范自动向上映射为抽象过程模型并进行高层并发属性验证;
19.将所述中间层规范自动向下映射为源码级验证模型并进行功能性验证。
20.进一步的,将所述中间层规范自动向上映射为抽象过程模型并进行高层并发属性验证包括以下子步骤:
21.步骤201:根据所述中间层规范表现出的状态间逻辑关系进行抽象;
22.步骤202:确定状态间转移条件,形成不同的抽象路径,每条路径包含相应的前置后置状态;
23.步骤203:对所述中间层规范进行分析,确定路径相关性,将并发的路径并列起来,生成相应的高层规范;
24.步骤204:根据高层规范得到高层抽象状态机,并参考系统的状态迁移属性,推理出状态迁移合法性规则,编写高层属性规范;
25.步骤205:依据所述高层抽象状态机中的状态、行为及逻辑信息,形成可用于并发推理的抽象过程模型;并根据所述高层规范与所述高层属性规范,生成并插入并发安全属性语句,最后进行并发属性验证。
26.进一步的,将所述中间层规范自动向下映射为功能性验证属性并进行功能性验证包括以下子步骤:
27.步骤301:根据所述中间层规范给出的函数调用关系,抽取函数实现逻辑以及函数内部变量的数据结构和传递条件;
28.步骤302:根据所述数据结构和传递条件,分析函数应达到的安全标准,将其生成为一个单独的验证函数;
29.步骤303:将生成的所述验证函数插入到源码中,形成最后输出的源码级规范;
30.步骤304:将转换输出的所述源码级规范进行功能性验证。
31.一种可双向转换的并发性验证系统,包括:
32.整合器,用于根据源码api信息与文档功能需求,整合出一种双分支映射的中间层规范;
33.双向转换器,用于将所述中间层规范分别映射为抽象过程模型与源码级验证模型,进行并发属性验证与功能性验证;
34.结果生成器,用于根据所述并发属性验证与功能性验证情况,生成具有跨模型逻
辑一致性的安全验证结果。
35.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现所述的可双向转换的并发性验证方法的步骤。
36.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的可双向转换的并发性验证方法的步骤。
37.本发明的有益效果在于:
38.1.本发明通过整合出一种可双分支映射的中间层规范,对源码规范与需求进行了抽象度居中的形式化表示,不仅完整的描述了底层程序功能,还过滤了繁杂的程序实现细节,使得程序安全验证方向可以同时映射到高层与底层两个方向,解决了源码级验证与高层抽象验证之间存在的语义鸿沟,提供了高层属性端到源码端的一致性验证。
39.2.本发明可以将双分支映射的中间层规范自动向上映射生成相应的抽象过程模型并进行并发属性验证,同时自动向下映射为相应的源码级验证模型并进行功能性验证。双向转换过程自动完成,提高了验证效率。
40.3.在生成可双分支映射的中间层规范时,本发明采用了一次性覆盖所有源码api的方法,可以从中间层规范自动向上映射出过程模型分析系统并发属性,避免了对整个系统进行人工的重复建模,提高了系统灵活性。
附图说明
41.此处说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:
42.图1为本发明实施例1的的可双向转换的并发性验证方法的流程图;
43.图2为本发明实施例1的的可双向转换的并发性验证方法的详细流程图;
44.图3为本发明实施例2的示例融资程序源码。
具体实施方式
45.为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.本发明涉及的相关技术用语的说明如下:
47.api:application programming interface,应用程序接口;
48.csp:communicating sequential process,通信顺序进程。
49.实施例1
50.如图1和2所示,本实施例提供了一种可双向转换的并发性验证方法,包括以下步骤:
51.步骤1:基于源码api信息与文档功能需求,整合出一种双分支映射的中间层规范,具体包括以下子步骤:
52.步骤101:分析待验证程序中所有的变量,作为中间层规范中的行为载体,通过行
为载体描述中间层的状态及行为;再确定待验证程序中的主要状态变迁主要依靠的函数,将其设置为function元素;
53.步骤102:隐藏底层具体繁杂的内存状态,引入等价的抽象状态用于表述底层完整功能逻辑,忽略函数变量具体的取值,只考虑相应的状态变迁及变迁条件,描述出函数具体内部逻辑;
54.步骤103:一次性处理所有的api,通过步骤102转化为中间层规范。
55.步骤2:(1)将中间层规范自动向上映射为抽象过程模型并进行高层并发属性验证,具体包括以下子步骤:
56.步骤201:根据中间层规范表现出的状态间逻辑关系进行抽象;
57.步骤202:确定状态间转移条件,形成不同的抽象路径,每条路径包含相应的前置后置状态;
58.步骤203:对中间层规范进行分析,确定路径相关性,将并发的路径并列起来,生成相应的高层规范;
59.步骤204:根据高层规范得到高层抽象状态机,并参考系统的状态迁移属性,推理出状态迁移合法性规则,编写高层属性规范;
60.步骤205:依据高层抽象状态机中的状态、行为及逻辑信息,形成可用于并发推理的抽象过程模型;并根据高层规范与高层属性规范,生成并插入并发安全属性语句,最后进行并发属性验证。
61.(2)将中间层规范自动向下映射为源码级验证模型并进行功能性验证,具体包括以下子步骤:
62.步骤301:根据中间层规范给出的函数调用关系,抽取函数实现逻辑以及函数内部变量的数据结构和传递条件;
63.步骤302:根据数据结构和传递条件,分析函数应达到的安全标准,将其生成为一个单独的验证函数;
64.步骤303:将生成的验证函数插入到源码中,形成最后输出的源码级规范;
65.步骤304:将转换输出的源码级规范进行功能性验证。
66.步骤3:根据并发属性验证与功能性验证情况,生成具有跨模型逻辑一致性的安全验证结果。
67.需要说明的是,步骤2中的(1)、(2)不受所描述的动作顺序的限制,可以采用相反顺序或者同时进行。
68.综上所述,本实施例的可双向转换的并发性验证方法具有以下特点:
69.抽象度居中的建模语言:从api信息与文档功能需求中构建一种抽象度居中的语言建模,即避免了源码级与字节码级无意义变量与逻辑对推理系统效率的影响,又可以充分的描述低层的程序功能;即能隐藏底层具体繁杂的内存状态,又能引入等价的抽象状态用于表述底层完整的功能逻辑;
70.可双分支映射:中间层表述抽象度居中,能描述底层程序特征又能精确的描述程序的形式逻辑,非常便于实现自动双向转换;既可以自动向下映射为相应的功能性规范,提供给自动化功能性验证模块进行功能性验证,也可以自动向上映射为相应的csp过程模型,提供给自动化并发性验证模块进行并发属性验证。
71.一次性覆盖所有api:在编写中间层规范时采用一次性覆盖所有api的方法,可自动向上生成过程模型,避免了对系统进行重复人工建模,增强了系统灵活性,提高了建模验证效率。
72.一致性:从同一个抽象度适中的中间层规范出发,经过双向映射分别进行源码级验证与高层抽象验证,保证了抽象端与源码端的行为一致性,避免了人工编写源码功能规范并进行复杂一致性证明,降低了验证工作量。
73.实施例2
74.本实施例在实施例1的基础上:
75.本实施例提供了一种可双向转换的并发性验证方法,可以根据给出的api源码和功能需求整合出一个双分支映射的中间层规范,为了能够更容易的让本领域技术人员理解,以下将用一个简单的c语言融资程序为例进行说明。本实施例使用编程语言为c语言,其并不构成对本发明的任何限制。本领域技术人员可以在本发明公开的技术内容启示下,将其应用于基于其他编程语言的安全性验证。本例中以图3所示的一个简单的融资程序为例,结合图1,对源码进行中间层规范整合的流程进行详细阐述,
76.根据实施例1的步骤1,实现过程如下:
77.步骤101a:首先对于图3显示的程序来说,确定声明中goal与raised为函数变量,在中间层规范中体现为实际的行为载体;再确定程序内部状态变迁的主要逻辑依靠invest函数内部行为来实现,则将invest定义为中间层规范中的function元素;
78.步骤102a:函数内部逻辑为当融资金额小于目标时,进行融资操作;考虑到中间层规范即需要隐藏底层具体繁杂的内存状态,又要引入等价的抽象状态用于表述底层完整功能逻辑,raised涉及到两种状态,则将其声名为一个old(raised)带有时间性质的元素类型,当old(raised)<goal时,作为一种状态,触发操作raised==old(raised) invest.value;
79.步骤103a:根据上述操作,将程序中所有api都整合为中间层规范;本实施例中invest整合出的中间层规范为:
[0080][0081]
如图1所示,本实施例的可双向转换的并发性验证方法,可以根据输入的双分支映射中间层规范,自动化映射到抽象层规范与实现层规范。
[0082]
根据实施例1的步骤2,自动向上映射实现及验证过程如下:
[0083]
步骤201a:根据中间层规范中表现出的状态间逻辑关系进行抽象;
[0084]
步骤202a:确定每个状态之间的转移条件,形成不同的抽象路径,每条路径包含相应的前置后置状态。对于本实施例来说,中间层规范中的invest函数抽象出的路径为两条,以第一条路径为例,前置条件为(raised<goal∧value<goal

raised),后置条件为(raised<goal),此路径表示为可迁移路径1,表示函数模型可以从前置条件对应的状态跳转到后置
条件对应的状态。
[0085]
步骤203a:对于完整的中间层规范进行分析,确定每一个路径的相关性,对于可并发产生的路径将其并列起来;经过对所有路径的分析,得到的invest高层规范代码为:
[0086][0087]
步骤204a:根据高层规范得到invest函数高层抽象状态机,参考整个系统的状态迁移属性,推理出状态迁移合法性规则,编写高层属性规范;在本实施例中,参考invest函数路径,考虑到一旦募集成功,融资金额不能低于最低融资目标,则本实施例得到的高层属性规范代码为:
[0088]
property high{
[0089]
always((state==1)==>(goal<=raised));
[0090]
}
[0091]
步骤205a:根据高层规范,生成相应的csp模型代码;根据相应的高层属性规范,并根据系统需求文档给出的并发性要求,编写相应的并发属性判断语句,如:#assert p()deadlock、#assert p()deterministic等;并将判断语句插入到csp抽象过程模型代码中,最后输入到自动化并发验证模块进行系统并发模拟验证,并得出并发性验证结果。
[0092]
根据实施例1的步骤2,自动向下映射实现及验证过程如下:
[0093]
步骤301a:根据中间层规范给出的函数调用关系,抽取具体的函数实现逻辑,以及函数内部变量的数据传递结构和传递条件;
[0094]
步骤302a:根据具体的数据传递结构及条件,自动化分析函数模块应该达到的安全标准,将其生成为一个单独的验证函数。在本实施例中,参考中间层规范中表述当raised旧值小于最低目标融资时,函数会进行融资操作,则自动生成一条判断函数语句:assert(raised==old_raised value);
[0095]
步骤303a:将自动生成的单独验证函数插入到源码中,形成最后输出的源码级规范,本实施例生成代码为:
[0096][0097][0098]
步骤303a:将生成的源码级规范输入到功能性验证工具中,根据规范中单独的验证函数为功能性验证工具调整参数,使其可以完全覆盖函数本身的逻辑分支,并得出功能性验证结果。
[0099]
根据实施例1的步骤3,在这里对于多模型验证结果进行一致性推理:因为中间层规范经过自动向下映射的功能正确性验证可以保证api规范与代码逻辑的一致性,并且在本实施例中,两条验证分支是从同一个关于invest函数的中间层规范映射而来,从结构上保证了源码端与抽象端的行为一致性,则可得到具有一致性保障的安全验证结果。
[0100]
实施例3
[0101]
本实施例在实施例1的基础上:
[0102]
本实施例提供了一种可双向转换的并发性验证系统,包括:
[0103]
整合器,用于根据源码api信息与文档功能需求,整合出一种双分支映射的中间层规范;
[0104]
双向转换器,用于将中间层规范分别映射为抽象过程模型与源码级验证模型,进行并发属性验证与功能性验证;
[0105]
结果生成器,用于根据并发属性验证与功能性验证情况,生成具有跨模型逻辑一致性的安全验证结果。
[0106]
实施例4
[0107]
本实施例在实施例1的基础上:
[0108]
本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的可双向转换的并发性验证方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。
[0109]
实施例5
[0110]
本实施例在实施例1的基础上:
[0111]
本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的可双向转换的并发性验证方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(rom)、随机存取存储器(ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的
内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。
[0112]
需要说明的是,对于前述的方法实施例,为了简便描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献