论文部分内容阅读
软件开发过程中,诸如代码、需求文档、测试集合等软件制品之间的追踪线索对于软件理解、影响分析、软件维护等活动都具有重要意义。然而,人工的建立软件制品之间的追踪线索需要耗费大量时间和精力。因此,自动化生成软件制品之间的追踪关系成为领域内的研究热点。当前建立需求到代码之间追踪线索的主流方法是信息检索方法,该方法通过计算需求和代码之间的文本相似度并按照该值自大到小排序形成候选追踪线索列表。然而,需求和代码之间存在的所谓词汇表失配问题使得该方法精度有限,难以支撑日常实践。针对该问题,众多研究工作提出了一系列增强策略。其中,基于代码依赖分析以及基于用户反馈的增强策略是当前的研究热点。然而,引入代码依赖分析的增强策略严重依赖于初始候选追踪线索排序表的精度,当初始列表结果精度不高时,该方法容易对之前列表造成污染。引入用户反馈的增强策略则需要用户遍历大部分列表才能取得明显效果,难以应用到日常实践中。基于对以上相关工作的分析,为了生成需求到代码的高精度追踪线索列表,我们形成如下重要研究思路:(1)通过代码依赖紧密度分析发掘功能关系紧密的代码元素,并将其放到同一个代码域(code region)中。(2)引入用户反馈来防止直接使用代码依赖可能带来的列表污染问题,根据用户对当前代码元素与需求相关性的验证结果调整域内代码元素和域外代码元素对应候选线索的相似度值。(3)针对域内和域外代码元素对应候选追踪线索设置不同的优化策略,从而改善整个候选列表的排序。综上所述,本文工作概括如下:1.结合代码依赖紧密度分析和用户反馈的软件追踪线索生成方法。我们提出了一种结合了代码依赖紧密度分析和用户反馈的软件追踪线索生成方法。一方面通过设置代码依赖紧密度阈值划分代码域,使得功能紧密的代码元素位于同一个代码域中;另一方面,对于给定需求,将各代码域中有代表性的代码元素交由用户判断与该需求相关性,根据用户反馈结果调整相关代码元素对应候选线索的相似度值。2.实验数据组织及方法验证。我们用一个被领域内广泛用于软件追踪线索生成方法验证的高质量数据集和三个被广泛应用于日常实践的开源系统可追踪数据集验证了我们方法的有效性和实用性。并且,我们通过对开源软件在issue-tracking工具上的软件行为信息进行分析整理,组织了其需求到代码的追踪关系。此外,我们通过运行开源系统自带的用于验证系统功能的测试用例得到了我们方法所需的代码依赖。3.基于代码依赖和用户反馈的软件追踪线索生成工具的设计与实现。为了将我们的方法应用于日常实践,我们设计并实现软件追踪线索生成工具,并集成了我们结合代码依赖紧密度分析和用户反馈的软件追踪线索生成方法。实验表明,我们的方法只需少量的用户反馈信息即可在精度上显著优于基线方法。并且,通过软件追踪线索生成工具,我们很容易将本文的方法应用到日常实践中。