一种基于启发式规则的软件需求描述模糊性检测方法与流程

专利2024-12-27  20



1.本发明涉及软件需求工程技术领域,特别涉及一种基于启发式规则的软件需求描述模糊性检测方法。


背景技术:

2.随着软件规模的不断扩大,准确的需求描述在软件开发中的重要性日益凸显。绝大多数的软件需求描述是由自然语言撰写的,由于存在经验不足或者条件暂时不充分等情况,绝大多数自然语言需求描述中都存在模糊性的表达。
3.所谓模糊性的表达,指的是不清楚,具有推测性的表达,撰写人通过使用一些具有模糊含义的词语来表明自己当前的表达是不确定的,比如对于“a row project agent may take on a responsibility of a discipline supervisor.”这样一个需求语句,作者就使用“may”表明了自己的不确定性。
4.如果对于需求描述中的模糊性表达放任不管,可能会导致最终的软件系统行为不符合用户的期望,还可能会导致出现不可测试的需求以及增加开发成本估算难度。因此,需要对于软件需求描述中存在的模糊性做相应的处理。尽管由于缺乏相关领域知识等原因,非从业者很难直接消除需求描述中的模糊性,但仍然可以通过进行模糊性检测,对需求描述中的模糊表达进行准确的识别与标记,从而留给更专业的需求描述编写人员未来去做进一步地明确或删改。
5.与此同时,一个软件系统的不同需求条目之间并非完全独立的,他们之间存在着多种多样的联系,有的需求条目的实现需要其他需求条目作为前提,有的需求条目的输出会作为其他需求条目的输入,像这样的需求条目之间存在的关联关系也为模糊性在需求条目之间的传播提供了可能。
6.已有的需求描述模糊检测工作大多分为两个步骤,首先建立标准集,训练机器学习模型,从而对需求语句中存在的模糊词进行检测,然后基于事先指定好的启发式规则,在自然语言处理工具的协助下,以第一步中检测出来的模糊词为中心,检测其对应的影响到的模糊范围。经调研,现有的软件需求描述模糊检测工作存在以下三方面的问题:
7.1.模糊范围检测的准确率较低。
8.2.只考虑了模糊性在单一需求条目中的检测而忽略了基于需求间关联关系的模糊性传播。
9.3.缺少相应的可视化模糊检测工具。


技术实现要素:

10.本发明针对现有技术的缺陷,提供了一种基于启发式规则的软件需求描述模糊性检测方法,可以较好地解决上述问题,通过引入新的依存关系、改进旧的启发式规则,该方法提高了模糊范围检测的准确率;结合已有的软件需求结构化算法以及软件需求关联关系检测算法,该方法可以对模糊性在需求条目之间的传播进行检测;该方法中还包含了一个
可视化软件需求模糊性检测工具,可以使得软件需求描述撰写人员十分方便地找到软件需求描述中存在的模糊性表达。
11.为了实现以上发明目的,本发明采取的技术方案如下:
12.一种基于启发式规则的软件需求描述模糊性检测方法,包括如下步骤:
13.步骤一、使用多种自然语言处理工具对每条需求条目进行分词、单词特征向量序列提取操作。
14.步骤二、基于第一步提取出的特征以及预先训练好的条件随机场模型检测需求条目中存在的模糊词,得到需求语句语法结构。
15.步骤三、对于存在模糊词的需求条目,根据模糊词的类型选择合适的启发式规则,在自然语言处理工具生成的短语解析树上进行搜索得到每个模糊词对应的模糊子句。
16.步骤四、读取需求描述集合的结构化结果以及关联关系识别结果。
17.步骤五、遍历所有需求间关联关系信息,基于启发式规则对存在模糊的需求条目进行检查,记录并输出模糊性在需求条目之间的传播。
18.进一步地,步骤一提取的单词特征包括:lemma、pos、chunk、dependency,共同参与条件随机场模型的训练,最终实现的模糊词检测算法准确率可以达到80%。
19.进一步地,步骤二通过nlp技术对需求语句进行解析,生成短语解析树和基本依存关系两种数据结构,并将二者结合起来进行相应的存储与转化,得到需求语句语法结构。
20.进一步地,步骤三将步骤二中得到的需求语句语法结构以及模糊词信息,通过模糊词信息中的模糊词索引完成模糊词在单词节点树中的定位,然后判断模糊词类型,确定对应的启发式规则,最后基于启发式规则,在基本依存关系的辅助下完成在单词节点树上的搜索过程,最终得到该模糊词对应的模糊范围。
21.进一步地,步骤五结合需求结构化信息以及需求关联关系信息对于模糊在需求间的传播进行检测,首先制定模糊传播启发式检测规则,进而遍历所有的需求关联关系,对每一条关联关系,取出两端的需求,根据其关联关系类型选择不同的传播规则,结合需求结构化结果以及单一需求模糊检测结果进行判断。
22.进一步地,所述步骤五中需求结构化信息是将需求语句拆分成不同的语义要素,其目的是为了加强对于需求语句的理解;
23.所述步骤五中关联关系信息的定义如下表所示:
[0024][0025]
进一步地,步骤五中制定了以下模糊传播规则:
[0026]
对于存在前提-依赖关系的需求条目r1-r2,即r1的操作(operation)与r2的触发事件(event)语义相等,当r1的operation中检测到模糊性时,该模糊传播到r2中。
[0027]
对于存在交互关系的需求条目r1-r2,即r1的输入(input)与r2的输出(output)存在交集φ,当r2的输出中检测到模糊性,且模糊范围与φ存在交集时,该模糊传播到r1中。
[0028]
基于在步骤三中的得到的模糊范围、在步骤四中读取的需求结构化信息,对于每个需求条目生成一个需求条目类myre实例,所有类实例共同组成需求类集合。
[0029]
建立好需求集合之后,遍历所有的需求关联关系,对每一条关联关系,取出它两端需求对应的需求类实例,根据其关联关系类型套用不同的模糊传播规则进行判断,对于判断结果为可以传播的,相应地改变其spread与sourceid变量值。
[0030]
最后,基于模糊传播分析后的需求集合,按格式输出模糊传播分析结果。
[0031]
本发明还公开了一种可视化软件需求模糊性检测工具,采用前后端分离架构模式,前端包括网页客户端,后端包括服务端和数据库。服务端负责运行算法,完成对于软件需求描述的单一需求模糊检测以及模糊传播检测;网页客户端负责提供一个易操作的用户界面以及对于检测结果进行直观展示;数据库负责对检测结果进行归档保存。
[0032]
前端与后端之间通过http进行通信。前端发出的http请求首先进入后端的网关,网关会首先完成用户身份的检验,如果校验通过,则根据url中的路径将http请求转发至服务端的各个微服务。微服务与数据库进行交互,在完成业务逻辑后返回响应。响应通过网关返回给客户端,客户端再将响应中的数据渲染至页面中。
[0033]
与现有技术相比,本发明的优点在于:
[0034]
(1)本发明方法大大提高了需求条目模糊范围检测的准确率;(2)本发明办法能够检测出模糊性在需求条目之间的传播,检测准确率高,进一步降低了模糊性对后续软件开发的潜在危害;(3)本发明方法还提供了一个操作简便的可视化工具,可以快速定位软件需求描述中的模糊性表达并进行直观展示。
附图说明
[0035]
图1是本发明实施例基于启发式规则的软件需求描述模糊性检测方法的流程图;
[0036]
图2是本发明实施例步骤三中用到的短语解析树的示例图;
[0037]
图3是本发明实施例步骤三中用到的基本依存关系的示例图;
[0038]
图4是本发明实施例步骤四中用到的需求结构化算法的六元组示意图;
[0039]
图5是本发明实施例步骤五中建立的需求类myre的类图;
[0040]
图6是本发明实施例设计的软件需求描述模糊检测可视化工具的系统架构图。
具体实施方式
[0041]
为使本发明的目的、技术方案及优点更加清楚明白,以下根据附图并列举实施例,对本发明做进一步详细说明。
[0042]
如图1所示,一种基于启发式规则的软件需求描述模糊性检测方法,包括如下步骤:
[0043]
步骤p01:将需求语句拆分成单词并对每一个单词提取多种语法特征。软件需求描述的模糊性检测的第一步就是定位需求语句中存在的模糊词,这本质上是一个机器学习领
域的序列标注问题:输入单词序列,输出标志着每一个单词是否具有模糊性的模糊标签序列。需要说明的是,模糊词检测之所以需要采用机器学习而非字典匹配的方法,是由于有许多词语同时含有模糊性含义与非模糊性含义,因而需要结合上下文环境进行判断。
[0044]
为了提高模糊词检测的准确率,本发明通过多次试验最终确定了几种特征组成特征向量作为机器学习模型的输入,表1中给出了选择的所有特征类型以及一个简单的实例(对应需求条目原文“the srs should be updated to reflect these changes.”)。
[0045]
表1
[0046][0047]
下面对这些不同的特征进行分类介绍。
[0048]
词本身的特征:本发明使用nlp技术直接得到每一个单词自身的lemma,part-of-speech(pos)标签,chunk标签。
[0049]
依赖特征:本发明使用nlp技术对需求语句进行解析,找到每一个单词所依赖的中心词(head),记录它与其中心词之间的依赖关系类型,其中心词的lemma以及pos标签,即表1中的dl,h-l,h-pos。
[0050]
步骤p02:使用nlp技术对需求语句进行解析,分析包括短语结构等在内的多种语法关系。这一步是为了之后的模糊范围的搜索奠定基础。与p01所不同的是,p02更注重对于需求语句整体结构的把握,而p01则更多地针对每一个单词进行单独分析。
[0051]
具体来说,本发明通过nlp技术对需求语句进行解析,生成短语解析树和基本依存关系两种数据结构并进行相应的存储与转化。其中短语解析树从句子整体角度出发,可以将单词间语法关系以一种比较清晰的方式展现出来,但也因此一定程度上忽略了单词间语法关系的一些细节;而基本依存关系则以单词对的形式完整地展现了单词间的语法依存关系。比如对于“the system shall have a start button.”这样一个需求语句,本发明使用nlp技术对其进行分析,生成的短语解析树如图2所示,生成的基本依存关系如图3所示。这两种数据结构各有所长,将二者结合起来以实现对于需求语句最全面的分析。
[0052]
步骤p03:将po1中得到的单词特征向量输入到预先训练好的机器学习模型中去,从而识别出需求语句中存在的模糊词。模糊词检测问题本质上来说属于一个序列标注问题,于是本发明选择在序列标注问题方面表现优秀的条件随机场模型作为基础模型。具体来说,本发明搜集了大量的软件需求描述开源数据集并手动对这些需求语句进行了模糊性分析与标注,然后通过步骤p01中的类似处理,将训练集中的所有需求语句拆分形成单词特征向量,进而通过十折交叉验证的方法调整参数训练条件随机场模型。
[0053]
对于一个普通的需求语句,本发明通过步骤p01将其进行拆分形成单词特征向量序列,然后将序列输入到训练好的条件随机场模型进行预测,得到模糊词标签预测结果。最后通过编写的python脚本进行转化,即可基于标签结果得到所有的模糊词信息。
[0054]
步骤p04:基于启发式规则,以p03中得到的模糊词为中心,在po2中得到的需求语句语法结构上进行搜索,就可以确定每个模糊词对应的模糊范围。
[0055]
本发明在已有研究成果的基础上,经过充分的调研,进一步丰富细化了模糊范围检测的启发式规则,对于一些缺失情形进行了补充,对于一些不清晰的规则进行了明确,针对不同种类的模糊词都给出了相应的模糊范围搜索启发式规则,具体模糊词分类见表2。由于篇幅限制,在此不对本发明制定的启发式规则进行具体说明。
[0056]
表2
[0057][0058]
基于制定好的启发式规则、p02中得到的需求语句语法结构以及p03中得到的模糊词信息,本方法首先通过模糊词信息中的模糊词索引完成模糊词在单词节点树中的定位,然后判断模糊词类型,确定对应的启发式规则,最后基于启发式规则,在基本依存关系的辅助下完成在单词节点树上的搜索过程,最终得到该模糊词对应的模糊范围。
[0059]
步骤p05:读取事先准备好的需求结构化信息以及需求关联关系信息并转化为可直接供模糊传播检查使用的数据结构。
[0060]
所谓需求结构化,就是将需求语句拆分成不同的语义要素,其目的是为了加强对于需求语句的理解,并为后续的进一步处理奠定基础,事实上,需求关联关系识别以及模糊传播的检测都要在需求结构化的基础上进行。本发明的最终目的,是检测出需求条目中潜在的基于关联关系的模糊传播,而由于模糊词影响到的范围在需求语句中往往是有限的,因而存在关联关系并非模糊在需求条目之间传播的充分条件,还需要根据关联关系的类型,具体分析模糊词影响到的范围以及需求语句的结构,从而判断模糊是否会发生传播。因此需要读取需求结构化信息以及需求关联关系信息。
[0061]
不同的学者给出了不同的需求条目结构化方法,本发明采用的是如图4所示的六元组结构;同样的,需求之间存在的关联关系也是多种多样,经过广泛的调研,本发明选择对于需求条目之间存在的前提、依赖、交互三种关系进行检查,关联关系的定义如表3所示。
[0062]
表3
[0063][0064]
为了方便后续处理,本发明对于读取的需求结构化信息以及需求关联关系信息进行转化,使用set、map等多种数据结构对其进行保存。
[0065]
步骤p06:基于启发式规则,遍历需求关联关系信息,结合需求结构化信息以及单一需求模糊检测结果进行检查,找出所有由于传播造成的新的模糊。如前文所述,存在关联关系并非模糊在需求条目之间传播的充分条件,还需要根据关联关系的类型,具体分析模糊词影响到的范围以及需求语句的结构,从而判断模糊是否会发生传播。通过仔细研究需求结构化定义、需求关联关系定义以及分析大量的实际需求条目,本发明最终制定了以下模糊传播规则:
[0066]
·
对于存在前提-依赖关系的需求条目r1-r2,即r1的操作(operation)与r2的触发事件(event)语义相等,当r1的operation中检测到模糊性时,该模糊传播到r2中。
[0067]
·
对于存在交互关系的需求条目r1-r2,即r1的输入(input)与r2的输出(output)存在交集φ,当r2的输出中检测到模糊性,且模糊范围与φ存在交集时,该模糊传播到r1中。
[0068]
基于在p04中的得到的模糊范围、在p05中读取的需求结构化信息,本发明对于每个需求条目生成一个需求条目类myre实例,所有类实例共同组成的需求类集合,myre类的定义如图5所示。
[0069]
其中frdl是字典变量,保存着它对应的需求结构化六元组信息;isuncertain是布尔变量,标志着该需求条目自身是否具有模糊性;scope是字符串变量,对应着该需求条目的模糊范围;spread是int变量,标志着该需求条目是否受到模糊传播的影响,spread=0标志着该条目没有受到传播的影响,spread=1标志着该条目由于前提依赖关系的传播而具有了模糊性,spread=2标志着该条目由于交互关系的传播而具有了模糊性;sourceid是int变量,标志着模糊传播的来源端条目id,如果没有受到模糊传播的影响,即self.spread=0,则sourceid=-1。
[0070]
建立好需求集合之后,本发明遍历所有的需求关联关系,对每一条关联关系,取出它两端需求对应的需求类实例,根据其关联关系类型套用不同的模糊传播规则进行判断,对于判断结果为可以传播的,相应地改变其spread与sourceid变量值。
[0071]
最后,本发明基于模糊传播分析后的需求集合,按一定的格式输出模糊传播分析结果。
[0072]
本发明还实现了一个可视化软件需求模糊性检测工具。该工具的系统架构图如图
6所示。系统整体采用前后端分离架构模式,由网页客户端、服务端和数据库组成。服务端负责运行算法,完成对于软件需求描述的单一需求模糊检测以及模糊传播检测;网页客户端负责提供一个易操作的用户界面以及对于检测结果进行直观展示;数据库负责对检测结果进行归档保存。
[0073]
前端与后端之间通过http进行通信。前端发出的http请求首先进入后端的网关,网关会首先完成用户身份的检验,如果校验通过,则根据url中的路径将http请求转发至各个微服务。微服务与数据库进行交互,在完成业务逻辑后返回响应。响应通过网关返回给客户端,客户端再将响应中的数据渲染至页面中。
[0074]
具体到实现,前端选择自由灵活的vue框架,后端选择简单易上手的flask框架,数据库选择mongodb。
[0075]
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

技术特征:
1.一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于,包括如下步骤:步骤一、使用多种自然语言处理工具对每条需求条目进行分词、单词特征向量序列提取操作;步骤二、基于第一步提取出的特征以及预先训练好的条件随机场模型检测需求条目中存在的模糊词,得到需求语句语法结构;步骤三、对于存在模糊词的需求条目,根据模糊词的类型选择合适的启发式规则,在自然语言处理工具生成的短语解析树上进行搜索得到每个模糊词对应的模糊子句;步骤四、读取需求描述集合的结构化结果以及关联关系识别结果;步骤五、遍历所有需求间关联关系信息,基于启发式规则对存在模糊的需求条目进行检查,记录并输出模糊性在需求条目之间的传播。2.根据权利要求1所述的一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于:步骤一选择包括lemma、pos、chunk、dependency在内的多种单词语法特征共同参与条件随机场模型的训练,,最终实现的模糊词检测算法准确率可以达到80%。3.根据权利要求2所述的一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于:步骤二通过nlp技术对需求语句进行解析,生成短语解析树和基本依存关系两种数据结构,并将二者结合起来进行相应的存储与转化,得到需求语句语法结构。4.根据权利要求3所述的一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于:步骤三将步骤二中得到的需求语句语法结构以及模糊词信息,通过模糊词信息中的模糊词索引完成模糊词在单词节点树中的定位,然后判断模糊词类型,确定对应的启发式规则,最后基于启发式规则,在基本依存关系的辅助下完成在单词节点树上的搜索过程,最终得到该模糊词对应的模糊范围。5.根据权利要求4所述的一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于:步骤五结合需求结构化信息以及需求关联关系信息对于模糊在需求间的传播进行检测,首先制定模糊传播启发式检测规则,进而遍历所有的需求关联关系,对每一条关联关系,取出两端的需求,根据其关联关系类型选择不同的传播规则,结合需求结构化结果以及单一需求模糊检测结果进行判断。6.根据权利要求5所述的一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于:所述步骤五中关联关系信息的定义如下表所示:
所述步骤五中需求结构化信息是将需求语句拆分成不同的语义要素,其目的是为了加强对于需求语句的理解。7.根据权利要求6所述的一种基于启发式规则的软件需求描述模糊性检测方法,其特征在于:步骤五中制定了以下模糊传播规则:对于存在前提-依赖关系的需求条目r1-r2,即r1的操作与r2的触发事件语义相等,当r1的operation中检测到模糊性时,该模糊传播到r2中;对于存在交互关系的需求条目r1-r2,即r1的输入与r2的输出存在交集φ,当r2的输出中检测到模糊性,且模糊范围与φ存在交集时,该模糊传播到r1中;基于在步骤三中的得到的模糊范围、在步骤四中读取的需求结构化信息,对于每个需求条目生成一个需求条目类myre实例,所有类实例共同组成需求类集合;建立好需求集合之后,遍历所有的需求关联关系,对每一条关联关系,取出它两端需求对应的需求类实例,根据其关联关系类型套用不同的模糊传播规则进行判断,对于判断结果为可以传播的,相应地改变其spread与sourceid变量值;最后,基于模糊传播分析后的需求集合,按格式输出模糊传播分析结果。8.一种可视化软件需求模糊性检测工具,其特征在于:采用前后端分离架构模式,前端包括网页客户端,后端包括服务端和数据库;服务端负责运行算法,完成对于软件需求描述的单一需求模糊检测以及模糊传播检测;网页客户端负责提供一个易操作的用户界面以及对于检测结果进行直观展示;数据库负责对检测结果进行归档保存;前端与后端之间通过http进行通信;前端发出的http请求首先进入后端的网关,网关会首先完成用户身份的检验,如果校验通过,则根据url中的路径将http请求转发至服务端的各个微服务;微服务与数据库进行交互,在完成业务逻辑后返回响应;响应通过网关返回给客户端,客户端再将响应中的数据渲染至页面中。

技术总结
本发明公开了一种基于启发式规则的软件需求描述模糊性检测方法,以一个特定软件系统的需求描述集合为输入,综合利用多种NLP技术处理需求条目,提取出关键数据结构,基于启发式规则对需求集合中存在的模糊性进行检测。本发明方法简单、有效,通过引入新的依存关系、改进旧的启发式规则,本发明解决了模糊范围检测准确率低的问题;结合已有的软件需求结构化算法以及软件需求关联关系检测算法,本发明提出了模糊传播检测算法,解决了现有模糊检测忽略模糊在需求间的传播的问题;本发明还包含了一个可视化软件需求模糊性检测工具,可以使得软件需求描述撰写人员十分方便地找到软件需求描述中存在的模糊性表达。描述中存在的模糊性表达。描述中存在的模糊性表达。


技术研发人员:连小利 王正达 张莉 李敏 樊志强
受保护的技术使用者:中国电子科技集团公司第十五研究所
技术研发日:2022.06.28
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-11186.html

最新回复(0)