掌桥专利:专业的专利平台
掌桥专利
首页

一种基于演化式需求建模的模拟仿真方法

文献发布时间:2023-06-19 16:04:54



技术领域

本发明属于需求建模领域,涉及一种基于演化式需求建模的模拟仿真方法。

背景技术

演化式需求建模的模拟仿真是一种以形式化理论为理论依据,帮助工程人员建立形式化需求模型并对其进行分析和验证的技术。形式化方法基于严格的数学方法,经过多年的研究与发展,其包含了软件和硬件系统的建模、设计、开发、验证以及演化等技术,为系统的正确性、可靠性和安全性提供了有力的保障。形式化需求模型是用数学语法和语义刻画而成的无二义性的模型,它是一种对系统软件的诸多方面的抽象表达形式。建立形式化需求模型的目的是为后续动态仿真提供模型基础。

使用传统软件工程开发方法开发软件,其开发流程以需求分析为起点,在这个过程中会得到以自然语言书写的需求文档作为系统开发的基础,继而完成后续的系统设计和编码、测试、验收等工作。在这个过程中,产生的错误被越早的发现和解决,其所付出的成本也就越低。而对于嵌入式控制软件这类对正确性、可靠性和安全性有着严格的要求的软件,由于其具有周期性运行、计算任务复杂、逻辑状态组合数量繁多、模式切换条件十分复杂等特征,其软件硏制的成本是比较高的,并且,确保软件质量的代价也十分高昂。所以,对于这类软件的开发,如何在早期就确保需求的完备性、正确性是十分重要的。但由于自然语言本身具有的模糊性、二义性等特征,用它来书写的需求文档难免会存在各种各样的问题,比如不同工程人员也许会对同一条需求产生不同的理解,进而出现需求理解的不一致性,为开发软件埋下了安全隐患。

需求确认有多种方法,比如需求审查、需求测试以及需求动画等。这些都属于比较经典的需求确认方法,而需求审查是其中使用得最为广泛的。需求审查又叫“人工走查”,这种方法是让若干需求分析师对需求文档进行走查审核,需求分析师们会逐条阅读文档中的每一个需求条目,然后一起确定这些需求条目的描述是否有效、准确且充分。这种方法的好处是易推广,易实施,但是其缺点也十分明显,一是该方法对需求分析师的要求比较高,通常经验能力越强的分析师,发现的问题也就越多。二是由于人力所限,一些难以发现的错误没有被检查出来也是有可能的。因此,使用需求审查这种方法来保证嵌入式控制软件的需求文档的有效性、正确性和完备性是不够的。

发明内容

为了解决现有技术存在的不足,本发明的目的是提供了一种基于演化式需求建模的模拟仿真方法,将自然语言书写的非形式化需求文档先根据需求模板转换为半形式化需求文档,再将半形式化需求文档经过需求模型提取模块处理后输出形式化需求文档,然后对形式化需求文档进行建模得到形式化需求模型,接着会对需求模型进行动态的仿真测试,通过这一整套方法来保证需求的完备性和正确性为后续开发软件的设计、实现和质量保证提供了有力的帮助。本发明所述的方法无需开发人员了解过多形式化相关知识背景,只需要根据给定了演化式需求的撰写方式,在对需求撰写完成之后,即可对需求工程师所撰写的需求进行模拟仿真,并且在执行过程中会记录相关变量的值的变化。

本发明提供了一种基于演化式需求建模的模拟仿真方法,包括如下步骤:

步骤一、以原始需求为基础,将非形式化需求文档基于模板演化式迭代,形成半形式化需求文档,之后经过需求模型提取模块处理,并以形式化需求文档的方式进行输出;

步骤二、将步骤一中输出的形式化需求文档进行编译转化获得需求模型;

步骤三、基于获得的需求模型进行动态模拟仿真。

步骤一中,非形式化原始需求文档通过模板演化,并输入需求模型提取模块中,进行从非形式化需求文档演化为半形式化需求文档,再经预处理成形式化需求文档的过程,具体包括如下步骤:

步骤1.1、将所述非形式化需求文档通过模板演化由需求工程师将原始的需求文档转化为半形式化需求文档,其中所述“模板演化”是指需求工程师基于原始需求根据图4所描述的需求模板进行迭代式修改;

步骤1.2、将半形式化需求文档通过需求模型提取模块预处理提取其形式化需求描述部分转化为形式化需求文档;

步骤1.3、将转化后的形式化需求文档进行输出。

步骤1.1中,提出需求模板,让需求工程师在原始自然语言描述的非形式化需求文档基础上基于需求模板进行模板演化,形成半形式化需求文档。其中需求模板包含上、中、下三层的描述,其中上层描述对应着各个模式间的切换,帮助需求工程师理解需求模型的总体概貌。中间层描述展示的是某个具体模式内的任务流,即任务调用流程,该层的目的是帮助工程人员查看需求在该状态下的控制规律是否符合预期的设定。下层描述则展示具体的计算任务,该层包括繁杂的数学公式和离散化的数据的处理。

步骤1.1中,迭代式修改主要是指需求工程师基于原始的需求文档向图4所示的需求模板转化过程,在这过程中可以逐步发现需求中描述存在缺陷或者不充分等情况,在转化完成后如果不能由工具转化成类似于图5所展示的内容说明需求模板内容还有待完善,需要基于工具给与的提示进一步修改完善。

步骤1.2中,需要将半形式化需求文档中的形式化部分提取出来,其中的操作主要是将可能存在歧义的自然语言描述部分去除,取出其中采用符号语言描述的内容。

步骤二中,将形式化需求文档编译转化为需求模型包括如下步骤:

步骤2.1、将形式化需求文档使用Antrl语法分析器来对形式化需求进行解析,判断是否有语法错误;若有语法错误,则提示语法错误信息,返回形式化需求文档进行修改;若无语法错误,则构建生成抽象语法树(AST);

步骤2.2、对抽象语法树进行解析并遍历;若遍历结束,则构建生成后续用于动态模拟仿真的需求模型;若遍历未结束,则重复步骤2.2,直到遍历完全。

模拟仿真是使用在第二步构建好的需求模型对真实系统在实际物理世界中发生的一个本质过程的模拟,实质逻辑是对构建好的需求模型进行解释执行。需求仿真技术是对需求模型进行动态仿真测试,即在配置好相关参数后对需求模型进行模拟执行。在执行过程中会记录相关变量的值的变化,然后与实际运行中的值进行对比分析来确保开发软件的行为与预期一致。

步骤三中,对需求模型进行仿真测试时,输入包括三部分:1)模式的集合:该集合中包含所有的模式,每个模式有其模式名、任务流以及迁移目标和迁移条件等;2)数据字典:控制软件整个运行过程中的变量以及初始变量都存在这个数据字典中,随着模拟仿真一个周期接着一个周期的运行,数据字典中相应变量的值也是随着时间推移周期性变化的;3)任务流:即形式化需求文档中的任务模块,是模式中任务流部分的一个个任务的具体实现。当仿真的过程中处于某个模式时,需要执行相应的任务流,此时就需要调用任务模块中的与之相关的一些任务及其具体的计算任务。

所述“数据字典”是指存储运行过程中涉及到的变量在各个周期的数据集合。

动态模拟仿真的整个运行过程可以概括如下:模拟仿真启动进入初始模式,然后执行相关任务,接着进行模式迁移判定,从而进入到下一个模式继续运行或者保持不变继续在本模式下循环运行。这整个过程其实是一个后台死循环过程,也可以称为闭环运行。模式每次执行计算任务都会对数据字典中的变量进行数值更新,比如说数据字典中某个值的逐渐增大,模式的切换(所处的模式本身也是一个数据字典的值)等。所以,对于需求模型而言,仿真执行环境就是一个个变量及其控制这些变量改变的计算任务。变量是保存在数据字典中的,其在模型模拟执行过程中会周期性更新,当前周期计算任务的输出会作为下一周期计算任务的输入。计算任务则是存在于需求模型中的任务模块,供需求模型在各个模式下调用。需求模型的闭环运行,执行计算任务,更新数据字典,执行模式迁移条件判断,当发现满足模式迁移条件时,则发生模式迁移,切换到目标模式,否则在本模式下重复执行上述动作。

本发明的有益效果包括:本发明的一种演化式需求建模的模拟仿真技术主要针对现有需求,提出了一种演化式需求建模以及模拟仿真技术,目的在于将自然语言书写的需求文档先转换为形式化需求文档,然后对形式化需求文档进行建模得到形式化需求模型,接着会对需求模型进行动态的仿真测试,而本发明中的模拟仿真与其他模拟仿真的最大不同的是基于需求进行的模拟仿真,可以在需求阶段辅助需求工程师在需求阶段尽早的发现并解决潜在的问题。通过这一整套方法来替代传统测试人员进行人工计算得到的结果,用于分析和研究通过此需求所设计的系统,进一步提升其准确性和效率。

附图说明

图1是本发明演化式需求建模仿真流程图。

图2为本发明需求模型建立流程图。

图3是本发明基于演化式需求建模的模拟仿真方法的流程图。

图4是本发明的半形式化需求模板。

图5是本发明的半形式化需求模板内容具体关系图,此图主要是针对用户描述的需求模板内容采用图形的方式形象化的展示出来(是多个图4所示的需求模板描述内容的结合)。

具体实施方式

结合以下具体实施例和附图,对发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。

本发明提出了一种基于演化式需求建模的模拟仿真方法,包括如下步骤:

步骤一、将原始需求为基础,将非形式化需求文档基于模板演化式迭代,形成半形式化需求文档,之后经过需求模型提取模块处理,并以形式化需求文档的方式进行输出;

步骤1.1、将所述非形式化需求文档通过模板演化由需求工程师将原始的需求文档转化为半形式化需求文档;

步骤1.2、将半形式化需求文档通过模型提取模块预处理提取其形式化需求描述部分转化为形式化需求文档;

步骤1.3、将转化后的形式化需求文档进行输出。

步骤二、将所述形式化需求文档进行编译转化获得需求模型;

步骤2.1、将形式化需求文档使用Antrl语法分析器来对形式化需求进行解析,判断是否有语法错误;若有语法错误,则提示语法错误信息,返回形式化需求文档进行修改;若无语法错误,则构建生成抽象语法树(AST);

步骤2.2、对抽象语法树进行解析并遍历;若遍历结束,则构建生成后续用于动态模拟仿真的需求模型;若遍历未结束,则重复步骤2.2,直到遍历完全。

步骤三、基于获得的需求模型进行动态模拟仿真。

具体包括以下内容:

a)演化式需求撰写

在本发明提出的演化式需求撰写方法中,将需求由简单的自然语言书写的原始需求逐步向精确的、复杂的、用建模语言书写的形式化需求的转变过程。具体而言,演化式需求撰写方法是将自然语言书写的软件的原始需求通过非形式化、半形式化、形式化三个阶段转化为形式化需求,在转化过程中,需求描述不断精确化、复杂化,去除模糊性和二义性,最终转化成形式化需求。在自然语言书写需求的阶段,所有的描述都是用自然语言描述的。因为自然语言能使相关的各行各业的人都参与到软件开发过程中来,因为它非常便于大家的沟通和交流。在半形式化阶段,本发明需要将非形式化阶段得到的一个个状态抽象为一个个模式,在每个模式下,需求都会有特定的任务需要处理,这些任务主要的作用是对一些输入的变量的进行计算,然后将计算出来的结果存入数据字典,所以每个模式下会有相应的任务流。除此以外,其还会根据当前某些变量的值的情况判断是不是要进行状态迁移,故在每个模式下还会有相应的可迁移模式列表,用来列出其可能会迁移到的目前模式及其迁移条件。在形式化阶段,针对半形式化需求因为对于一些细节的控制信号描述还不到位,本发明决定将半形式化阶段的每个模式中的任务流进行一个总结归纳,封装到任务模块,写成一个函数形式,供各个模式调用。并且,半形式化阶段的所有非形式化描述都需要被形式语言所替代,所有的数据类型也必须是建模语言中的可用数据类型。其中本发明对应的半形式化需求模板如图4所示。

b)需求模型转化

针对无二义性的形式化需求,也无法对其直接进行模拟仿真操作。为此,基于得到形式化需求文档,设计了相对应的建模语言,针对形式化建模语言进行建模,经过词法语法分析得到形式化需求模型。其中更为详细的模型转化流程可以见附图2。

c)动态模拟仿真

对需求模型进行仿真测试时,本发明的输入为三个部分:1)模式的集合:该集合中包含所有的模式,每个模式有其模式名、任务流以及迁移目标和迁移条件等,就和本发明之前给出的形式化需求文档中描述的那样;2)数据字典:嵌入式控制软件整个运行过程中的变量以及初始变量都存在这个数据字典中,随着模拟仿真一个周期接着一个周期的运行,数据字典中相应变量的值也是随着时间推移周期性变化的;3)任务模块:即形式化需求文档中的任务模块,是模式中任务流部分的一个个任务的具体实现。模拟仿真执行到某个模式时,需要执行相应的任务流,此时就需要调用任务模块中的与之相关的一些任务及其具体的计算任务。

动态模拟仿真的整个运行过程可以概括如下:模拟仿真启动进入初始模式,然后执行相关任务,接着进行模式迁移判定,从而进入到下一个模式继续运行或者保持不变继续在本模式下循环运行。这整个过程其实是一个后台死循环过程,也可以称为闭环运行。模式每次执行计算任务都会对数据字典中的变量进行数值更新,比如说数据字典中某个值的逐渐增大,模式的切换(所处的模式本身也是一个数据字典的值)等。所以,对于需求模型而言,仿真执行环境就是一个个变量及其控制这些变量改变的计算任务。变量是保存在数据字典中的,其在模型模拟执行过程中会周期性更新,当前周期计算任务的输出会作为下一周期计算任务的输入。计算任务则是存在于需求模型中的任务模块,供需求模型在各个模式下调用。需求模型的闭环运行,执行计算任务,更新数据字典,执行模式迁移条件判断,当发现满足模式迁移条件时,则发生模式迁移,切换到目标模式,否则在本模式下重复执行上述动作。

以发动机的模拟仿真过程为例,在发动机整个运行期间,是需要不断与外部环境变量进行交互的,比如燃油温度传感器提供的温度、排气传感器提供的温度等,这些数值对发动机是否发生模式迁移动作影响很大。类似于这种变量,虽然本发明无法确定其初始值(因为它是需要发动机去实时采集传感器数值的),但是本发明也需要在数据字典中将其定义出来,并将这些值每周期的具体数值在数据字典中进行更新,实现一整套可以模拟真实环境下运行效果的动态模拟仿真。

本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。

技术分类

06120114693427