一种线性时态逻辑规范的通用并行挖掘方法与流程

文档序号:12718819阅读:124来源:国知局
一种线性时态逻辑规范的通用并行挖掘方法与流程

本发明涉及一种计算机技术领域,尤其是模型检测领域中的线性时态逻辑的规范挖掘技术,具体涉及一种线性时态逻辑规范的通用并行挖掘方法。



背景技术:

与其他工程产品不同的是,软件产品在其整个生命周期中会不断地变化演进。而在对软件进行维护、更新的过程中,为保持系统原有功能的正确性,维护人员通常需要付出极大的努力。据统计,软件的维护成本占据了软件开发成本的90%。因此,研究如何降低软件维护成本具有十分现实的意义。

而软件维护成本之中的绝大部分,都源于对遗留源代码理解吸收所产生的成本。有研究表明,为理解原有代码付出的代价超过了总维护代价的50%。通常,开发人员会选择阅读软件规范文档来辅助软件程序的理解。然而,在许多企业中,开发人员迫于市场应用的时效性,疏忽了规范文档的编写与维护,以至于很大部分的软件规范文档并没有随着软件程序的演化得到及时的更新。这样,经过若干次演化周期,最新版本的软件程序早就与原始的规范文档大相径庭。因此,如何及时地更新软件规范,成为了一个值得探索的问题。

另外,为了保证软件系统的正确性,人们提出了模型检测技术。例如申请号为201510395404.X,发明名称为安全交换协议模型检测方法的中国发明专利,公开了一种安全交换协议模型检测方法,该方法的步骤包括:1)构建安全交换协议模型;2)构建安全属性模型;3)构建攻击者模型;4)状态约简以及模型检测。

模型检测技术主要通过对软件系统进行抽象建模,并采用一系列的形式化性质来验证模型是否符合特定性质,以研究系统是否具有某种性质,或违反某种约束。线性时态逻辑通常用于形式化定义模型所该具备的性质和约束。然而,构造形式化性质的困难一直阻碍了模型检测技术的广泛应用。

因此,有必要寻找一种方法,能够自动地从软件系统中获取软件系统具备的性质或约束。正如人们观察自然现象来了解自然规律,可以采用某种自动化的方法,根据软件系统的运行日志,运行轨迹来学习、挖掘软件系统所具备的性质。



技术实现要素:

为解决以上问题,本发明公开了一种线性时态逻辑规范的通用并行挖掘方法,主要用于从软件系统的日志文件中挖掘日志中各种事件之间所具备的线性时序关系,用于获取日志中事件之间的规律,以推测出软件程序中可能具备的线性时态性质,从而辅助对程序的理解分析,也可用于通信协议分析。

具体的,本发明公开了一种线性时态逻辑规范的通用并行挖掘方法,包括如下步骤:

预处理步骤,对日志文件进行分割,分离出日志文件中的独立轨迹,获取日志文件中所有事件的集合以及每个事件在独立轨迹中出现的位置;

规范实例生成步骤,根据输入的规范模板集合,将其中的变量与日志事件集合中的事件依次进行绑定,以获取规范实例候选集合;

规范实例验证步骤,依次对规范实例候选集合中的规范实例进行验证,计算其在日志中的支持度、置信度情况;

结果筛选步骤,根据输入的挖掘要求,从规范实例候选集合中去除支持度、置信度不符合要求的规范实例。

优选的,如上所述的线性时态逻辑规范的通用并行挖掘方法,所述预处理步骤包括如下子步骤:

轨迹分离步骤,通过文本处理,将日志中的数据读取到内存中,按照分隔符进行分离,获取一个元素为单条轨迹所组成的集合;

事件集合获取步骤,分别扫描每条轨迹,以上述分隔符对轨迹进行分割处理,获取原子事件集合;

事件位置信息获取步骤,扫描每条轨迹,记录事件在轨迹中出现的位置信息。

优选的,如上所述的线性时态逻辑规范的通用并行挖掘方法,所述预处理步骤的实现过程为:顺序地从日志文件中读取字符串,在遇到分隔符时,识别并判断该分隔符为事件分隔符或者是轨迹分隔符,若为轨迹分隔符,则当前轨迹终止并新建一个轨迹存储对象;若为事件分隔符,则记录新的事件位置信息,并将该事件加入到事件集合之中。

优选的,如上所述的线性时态逻辑规范的通用并行挖掘方法,所述规范实例生成步骤包括如下三个子步骤:

规范模板分析步骤,对输入的规范模板进行语法分析,获取规范模板中的变量;

变量绑定步骤,用事件集合中的事件,对规范模板中的变量进行替换,即将规范模板中的变量绑定为特定的事件;

实例生成步骤,规范模板中的变量都绑定事件后,则成为一个具体的规范实例,不同规范模板变量绑定不同的事件,以生成不同的规范实例。

优选的,如上所述的线性时态逻辑规范的通用并行挖掘方法,所述规范实例验证步骤包括如下三个子步骤:

初始化步骤,为每条轨迹生成一个验证器线程实例;

并行验证步骤,并行地执行各个线程实例,按照线性时态逻辑的语义,检查每个规范实例在每个轨迹上是否满足;

统计汇总步骤,将并行计算的结果进行汇总,统计每个规范实例在所有轨迹上的满足情况,得到一个以规范实例和统计数据的键值对为元素的统计数据映射表。

优选的,如上所述的线性时态逻辑规范的通用并行挖掘方法,所述结果集筛选步骤通过对所述统计汇总步骤产生的统计数据映射表进行遍历,以去除统计数据不符合要求的规范实例项。

本发明的优点在于,与现有技术相比,本发明公开的一种线性时态逻辑规范通用并行挖掘方法,具有如下有益效果:该方法根据线性时态逻辑规范模板,构造线性时态逻辑规范实例,再通过多线程技术进行并行验证,能够非常高效地获取正确的线性时态逻辑规范。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

附图1示出了根据本发明实施例的线性时态逻辑规范通用并行挖掘方法流程框图;

附图2示出了根据本发明实施例的线性时态逻辑规范通用并行挖掘方法中的预处理步骤的流程框图;

附图3示出了根据本发明实施例的线性时态逻辑规范通用并行挖掘方法中规范实例生成步骤的流程框图;

附图4示出了根据本发明实施例的线性时态逻辑规范通用并行挖掘方法的规范实例验证步骤的流程框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如图1所示,以上述系统实现的线性时态逻辑规范通用并行挖掘方法包括步骤:

S110、预处理步骤:对日志文件进行分割,分离出日志文件中的独立轨迹(轨迹是事件按照时间顺序排列所组成的序列),获取日志文件中所有事件的集合(EVENT)以及每个事件在独立轨迹中出现的位置(MAP<Event,Position>)。日志文件是用于记录系统操作事件的记录文件或文件集合,操作系统有操作系统日志文件,数据库系统有数据库系统日志文件,等等。

S120、规范实例生成步骤:根据输入的规范模板集合,将其中的变量与日志事件集合中的事件依次进行绑定,以获取规范实例候选集合SIC(Specification Instance Candidates)。

S130、规范实例验证步骤:依次对规范实例候选集合中的规范实例进行验证,计算其在日志中的支持度、置信度情况。

支持度(Support)的公式是:Support(A->B)=P(A∪B)。支持度揭示了A与B同时出现的概率。如果A与B同时出现的概率小,说明A与B的关系不大;如果A与B同时出现的非常频繁,则说明A与B总是相关的。

置信度(Confidence)的公式是:Confidence(A->B)=P(A|B)。置信度揭示了A出现时,B是否也会出现或有多大概率出现。如果置信度为100%,则A和B可以捆绑销售了。如果置信度太低,则说明A的出现与B是否出现关系不大。

示例:某销售手机的商场中,70%的手机销售中包含充电器的销售,而在所有交易中56%的销售同时包含手机和充电器。则在此例中,支持度为56%,置信度为70%。

支持度:P(A∪B),即A和B这两个项集在事务集D中同时出现的概率。

置信度:P(B|A),即在出现项集A的事务集D中,项集B也同时出现的概率。

S140、结果集筛选步骤:根据输入的挖掘要求,从规范实例候选集合中去除支持度、置信度不符合要求的规范实例。

通常在挖掘中会设定一个最小支持度阈值和最小置信度阈值,同时满足这两个支持度的规则称为强规则。置信度表示规则的强度,支持度表示在规则中出现的频度。给定一个事务集D,挖掘关联规则问题就是产生支持度和可信度分别大于用户给定的最小支持度和最小可信度的关联规则,也就是产生强规则的问题。

如图2所示,所述预处理步骤S110包括如下三个子步骤:

S111、轨迹分离步骤:一个日志文件由许多条轨迹所组成,通过一定的文本处理,将日志中的数据读取到内存中,按照特定的分隔符进行分离,获取一个元素为单条轨迹所组成的集合;所述分隔符包括事件分隔符或者轨迹分隔符,如果是对日志的数据进行分离,往往使用事件分隔符。

S112、事件集合获取步骤:分别扫描每条轨迹,以特定分隔符对轨迹进行分割处理,获取原子事件集合;所述分隔符包括事件分隔符或者轨迹分隔符,如果是对轨迹进行分割,往往使用轨迹分隔符。封闭地加工生成终结数据的程序模块称为原子事件。日志将流程中的每个任务作为一个原子事件来处理。

S113、事件位置信息获取步骤:扫描每条轨迹,记录事件在轨迹中出现的位置信息。

其中,所述预处理步骤S110的上述三个子步骤可以同时进行,即顺序地从日志文件中读取字符串,在遇到分隔符时,识别并判断该分隔符为事件分隔符或者是轨迹分隔符,若为轨迹分隔符,则当前轨迹终止并新建一个轨迹存储对象;若为事件分隔符,则记录新的事件位置信息,并将该事件加入到事件集合之中。这样,就可以通过对日志的一次扫描完成输入数据的预处理,极大地提高运行效率。

如图3所示,所述规范实例生成步骤S120包括如下三个子步骤:

S121、规范模板分析步骤:对输入的规范模板进行语法分析,获取规范模板中的变量。

S122、变量绑定步骤:用事件集合中的事件,对模板中的变量进行替换,即将模板中的变量绑定为特定的事件。

S123、实例生成步骤:规范模板中的变量都绑定事件后,则成为一个具体的规范实例。不同规范模板变量绑定不同的事件,即可以生成不同的规范实例。若一个规范模板中变量的个数为N,日志文件中事件集合的大小为M,经过排列组合,将生成M的N次方种规范实例。

如图4所示,所述规范实例验证步骤S130包括如下三个子步骤:

S131、初始化步骤:由于规范实例在每条轨迹上的验证过程相互独立,因此为每条轨迹生成一个验证器线程实例。

S132、并行验证步骤:并行地执行各个线程,按照线性时态逻辑的语义,检查每个规范实例在每个轨迹上是否满足。

S133、统计汇总步骤:将并行计算的结果进行汇总,统计每个规范实例在所有轨迹上的满足情况,得到一个以(规范实例,统计数据)键值对(Key-Value Pair)为元素的映射表M。

键值对可以根据一个键值获得对应的一个值。例如,一般的面向对象编辑中,经常会使用Form.Enable=True或False,就是用一系列API函数对一个值的封装。

最后,所述结果集筛选步骤S140中,通过对规范实例验证步骤S130产生的统计数据映射表M进行遍历,逐个考察每个规范实例的统计数据是否符合要求,去除统计数据不符合要求的规范实例项。这样,剩余的规范实例都是满足挖掘条件的规范实例。

通过本发明的方法,可以从软件系统运行日志中获取事件的线性时态逻辑关系。可以用于辅助软件系统的分析理解,以及通信协议的分析。

需要说明的是:

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一根或多根,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一根或多根设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1