一种基于信息检索和源代码结构的需求跟踪方法

文档序号:36641519发布日期:2024-01-06 23:26阅读:25来源:国知局
一种基于信息检索和源代码结构的需求跟踪方法

本发明涉及需求工程,具体涉及一种基于信息检索和源代码结构的需求跟踪方法。


背景技术:

1、软件系统由存储信息的各种工件组成,如需求文档、规范文档、交互图、用户文档、源代码、用例、测试用例、bug报告等。从需求工程阶段,到项目部署阶段,需求的更新和扩展指导着软件系统开发的整个过程。但是到了软件开发过程的后期阶段,由于应用程序的大小增加、参与该过程的人数增加、系统的快速演化、原始需求文档的变化等各种因素,软件工程师们往往难以对需求进行可靠的跟踪,这就很可能会导致最终的软件产品出现错误,因为很难去对所有需求实现的正确性和完整性进行合理的验证。

2、建立需求的可追溯性是帮助开发人员和利益相关者们在软件开发的过程中了解需求的实现程度的主要方法。需求可追溯性定义为“在正向和反向上对需求的生命周期进行描述和跟踪的能力”。通过建立需求到源码的可追溯性链接,开发人员和利益相关者们可以了解到每段源码的来源,跟踪他们对其做出的每一个变化,了解每条需求的实现情况,从而确保最终能够正确地交付系统。

3、研究需求的可追溯性既可以是从高等级需求到低等级需求的可追溯性,也可以是从需求文档到设计文档的可追溯性,也可以是从需求文档到源码、测试用例等工件的可追溯性,他们的主要区别体现在对文本中关键信息的提取方式。其中从需求到源码的可追溯性生成技术是目前被研究最多的问题,针对该问题,目前基于信息检索(ir)的方法已经成为需求可追溯生成技术领域最流行的技术。ir是按照一定的方式对源信息进行加工、整理、组织和存储,然后从目标信息集合中准确查找出对应目标的技术。

4、图1是基于ir的源码到需求的信息检索过程图。

5、如图1所示,对于从需求到源码的可追溯性生成技术而言,通常需要对需求和源代码进行预处理,提取出其中的关键词,然后以源代码作为查询条件,从需求集合中找到相似度最高的需求作为查询结果。

6、但是传统的基于ir的方法准确性较低,这是因为传统的ir方法如vsm(向量空间模型)往往只基于词语自身的匹配来计算相似度,而忽略了词语的语义以及词语相互间的上下文关系。比如kafka在计算机领域指的是一种高性能的分布式消息队列中间件,而在文学领域则指的是奥地利的小说家,这是一词多义的问题;比如requirement和need都有需求的意思,这是同义词的问题;而vsm是vector space model的缩写,这是缩略词的问题。这些问题都会导致传统的ir方法出现匹配错误或者缺失。针对以上诸多问题,本发明提出了对应的改进。


技术实现思路

1、本发明是为了解决上述问题而进行的,目的在于提供一种基于信息检索和源代码结构的需求跟踪方法。

2、本发明提供了一种基于信息检索和源代码结构的需求跟踪方法,具有这样的特征,包括以下步骤:步骤1,引入数据集,数据集包括需求文档和源代码;步骤2,构造一个数据处理引擎,对数据集进行解析,分别对需求文档和源代码进行不同方式的预处理,输出需求文档到源代码之间的追踪链接相似度,得到结果集;步骤3,基于解析完成的数据集,用户对结果集进行标记,展示结果的准确率、召回率以及f2分数;步骤4,用户对结果进行查询。

3、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤1中,需求文档是正向设计的起点,是在项目中以自然语言编写而成的多条英文需求文档,是功能性需求或非功能性需求,源代码是计算机语言指令的集合,用面向对象语言编写而成,源代码的对象主要是源代码中的每个类。

4、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤2具体包括以下步骤:步骤2-1,对数据集进行预处理,生成对应的术语-文档矩阵,步骤2-2,利用fnn深度学习网络进行共指消解,包括术语对排名模型的训练和簇集对排名模型的训练;步骤2-3,更新术语-文档矩阵,获取源代码类结构图;步骤2-4,对源代码类结构图进行图嵌入,获取源代码类的向量表示;步骤2-5,利用向量改进需求和源代码类之间相似度的计算,获取跟踪链接相似度,其中,步骤2-1中,对需求文档的处理方式包括:分词、删除冗余以及形态学分析,对源代码的代码部分的处理方式包括:提取标识符、分割标识符、删除冗余以及形态学分析,对源代码的注释部分的处理方式与对需求文档的处理方式相同,步骤2-5中,计算需求文档到源代码之间的追踪链接相似度时,采取设定阈值的方式,将超过阈值的链接设定为有效链接。

5、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤2-2具体包括以下步骤:步骤2-2-1,针对文档i的每个术语t,将t在文档i中的每一次出现称为m,然后将m和文档i中的每一个其他术语a作为一个术语对,输入到术语对排名模型中进行训练,其中a是术语t的候选共指;步骤2-2-2,术语对排名模型基于fnn实现,包括输入层、隐藏层以及输出层,术语对排名模型经过输入层的处理,得到m和a的术语对的向量表示;步骤2-2-3,向量经过三层隐藏层,三层隐藏层为三个线性整流单元神经元,每个神经元都与前一层相连接;步骤2-2-4,经过隐藏层处理后,最后经过输出层,输出层由一个和隐藏层第三层全连接的神经元构成;步骤2-2-5,对于文档di和文档dj,得到术语t的两对术语-共指对c1={ai-mi}和c2={aj-mj};步骤2-2-6,将c1和c2输入到簇集对排序模型进行判断,簇集对排序模型包括输入层、池化层以及决定层;步骤2-2-7,池化层通过保存任务的相关信息,同时去除不相关的细节来实现更紧凑的表示,以及更好的鲁棒性;步骤2-2-8,决定层进行计算。

6、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤2-2-2中,输入层有一层,输入的特征包括:t的词嵌入、pos标记、位置、与候选词的距离以及与候选词的字符串匹配程度,步骤2-2-3中,术语对排名模型中隐藏层的计算公式如(1)所示:

7、hi(a,m)=max(0,wihi(a,m)+bi)  (1)

8、式中hi(a,m)表示第i层隐藏层的输出,w1是一个m1×i的矩阵,w2是一个m2×m1的矩阵,w3是一个m3×m2的矩阵,其中m1=1000,m2=m3=500,步骤2-2-4中,通过公式(2)计算m和a之间的匹配度:

9、s0(a,m)=w0h3(a,m)+b0   (2)

10、式中,w0是一个1×m3的矩阵,步骤2-2-5中,其中mi和mj分别是t在di和dj中的出现,ai和aj分别是t在di和dj中的候选共指,步骤2-2-6中,输入层将c1和c2的信息融合为公式(3)所示的集合:

11、rc(ci,cj)=[h3(ai,mi),h3(ai,mj),h3(aj,mi),h3(aj,mj)]  (3)

12、步骤2-2-7中,如公式(4)所示,池化操作连接了平均池化和最大池化的结果:

13、

14、式中,d=m3=500,通过池化层,就产生了簇集对(c1,c2)的向量表示。步骤2-2-8中,决定层的计算过程为:

15、sc(ci,cj)=wcrc(ci,cj)+bc  (5)

16、要判断c1和c2中的ai和aj指代的是否是同一个对象,还需要计算(6)中的结果:

17、sna(mj)=wnah3(na,mj)+bna  (6)

18、式中,sna表示mj和没有共指的匹配度。然后训练一个策略网络π,π(ci,cj)表示ci和cj是否是同一个共指的概率,计算方式如(7)所示:

19、π(ci,cj)∝exp(sc(ci,cj))  (7)

20、如果π(ci,cj)≥π(na,mj),就判定ai和aj指代的是同一个对象,否则,就判定ai和aj指代的不是同一个对象,在这种情况下就需要对术语-文档矩阵进行更新。

21、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤2-3具体包括以下步骤:步骤2-3-1,更新术语-文档矩阵;步骤2-3-2,引入源代码的结构信息后,首先将源代码中的类进一步划分为方法,然后对于具有不止一个方法的源代码类,计算出每个需求和每个类之间的文本相似度和每一个方法与每一条需求之间的文本相似度,将超出阈值的结果视为这个类与对应需求的可追溯性链接,最终找到一部分需求和源代码类之间潜在的可追溯性链接,其中,类的结构图为一种无向有权图,其中每个图结点代表着源代码中的每个类,而结点之间用一条带有权值的无向边相连接,每条边上的权值为两个类之间的关系数量,通过建立无向有权图,获取任意两个源代码类之间的紧密程度,紧密程度与两者之间的权值成正比,与两者之间的距离成反比。

22、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤2-4中,采用图嵌入技术将类结构图转化为对应的向量表示,然后类之间的紧密程度通过计算两个类向量之间的距离来表示,具体过程为:步骤2-4-1,采用line算法进行图嵌入,图嵌入包括无向图、有向图、无加权图或加权图中的任意一种或多种;步骤2-4-2,将图嵌入之后,采用欧拉距离公式来确定两个类的紧密程度,对于两个类ci和cj,在图嵌入空间中的向量表示分别为(x1,x2,...,xn)和(y1,y2,...,yn),ci和cj的紧密程度d(ci,cj)由公式(8)所示:

23、

24、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,骤2-5中,相似度的计算的具体过程为:对于已经超过阈值的链接为设定为有效链接,则将相应的链接和文本相似度记录下来,文本相似度没有达到阈值的链接,则利用已有的可追溯性链接和源代码中类之间的关系来优化相似性的计算,每个类ci和每一对已经确定的可追溯链接(rj,cj)的相似度的计算如公式(9)所示:

25、

26、式中,simtext表示两个文档之间的文本相似度,d表示两个源代码类之间的距离,α是一个系数,表示额外条件在优化后的相似度中所占的比重,其中,α的值为1,确定ci和cj之间的上下文关系和距离关系,然后再根据结果判断是否需要增加链接。

27、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤3中,用户标记的具体过程为:选择对应的源代码类之后,在需求列表中对与之具有跟踪关系的需求进行多项选择,然后进行标记,作为结果集来验证结果的有效性。

28、在本发明提供的基于信息检索和源代码结构的需求跟踪方法中,还可以具有这样的特征:其中,步骤4中,结果查询功能的具体过程为:用户选择某个源代码类,查看与之具有跟踪关系的需求列表和每个需求的相似度结果,或者选择某条需求,查看与之具有跟踪关系的源代码类列表和每个源代码类的相似度结果。

29、发明的作用与效果

30、根据本发明所涉及的基于信息检索和源代码结构的需求跟踪方法,因为具体过程为:步骤1,引入数据集,数据集包括需求文档和源代码;步骤2,构造一个数据处理引擎,对数据集进行解析,分别对需求文档和源代码进行不同方式的预处理,输出需求文档到源代码之间的追踪链接相似度,得到结果集;步骤3,基于解析完成的数据集,用户对结果集进行标记,展示结果的准确率、召回率以及f2分数;步骤4,用户对结果进行查询。

31、因此,本发明提出的一种基于信息检索和源代码结构的需求跟踪方法,可以应用于很多软件工程项目中,对提高系统开发的效率,降低系统开发的风险,提高系统的质量,提高项目进度的可控性等各个方面都有十分显著的作用:

32、(1)引入深度学习方法来消除在计算需求和源代码类之间的跟踪关系时语义不一致的问题。

33、(2)利用源代码类的内部信息优化了获取跟踪链接的方式。

34、(3)引入源代码类之间的结构信息,通过构建类关系图,并利用图嵌入技术将每个节点表示为对应的向量,再利用向量之间的距离来改善需求和源代码类之间相似度的计算,从而找到潜在跟踪链接。

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