论文部分内容阅读
软件质量管理是信息系统领域一个重要的研究内容。当软件的质量存在问题时,将会带来很严重地影响。由于软件生产具备知识密集和人力密集的特点,这将不可避免的会产生软件缺陷。当软件缺陷报告在缺陷跟踪系统中被指派给开发人员进行缺陷修复之后,缺陷修复人员就需要根据提交的缺陷报告来进行软件缺陷定位并做出相应的代码变更以修复该软件缺陷。在缺陷修复的整个过程之中,软件缺陷定位占用了开发人员大量的时间。本文提出了两种基于信息检索的方法级别软件缺陷定位方法以提高软件修复人员的工作效率,分别称之为 MethodLocator 及 FineLocator。MethodLocator首先对缺陷报告和源代码方法体通过利用词向量(word2vec)和TF-IDF结合的方法进行向量表示,然后根据源代码文件中方法体之间的相似度,对方法体进行扩充,最后对扩充后的方法体和缺陷报告计算其余弦距离并排序,来定位为修复软件缺陷所需做出变更的方法。在四个开源软件项目ArgoUML,Ant,Maven和Kylin上的实验结果表明,MethodLocator方法优于现有的缺陷定位方法,它能够在方法级别上有效地将软件缺陷定位到源代码。在FineLocator中,与MethodLocator相似,首先对缺陷报告和源代码方法体通过利用词向量(word2vec)和TF-IDF结合的方法进行向量表示。然后本文在FineLocator的框架下提出三个查询扩展分数分别为语义相似度得分,时间接近度得分和调用依赖性得分,以解决由源代码中的方法体短长度而引起的表示稀疏性问题。之后,通过查询扩展的方法对源代码方法体进行扩充。最后,当一个新的缺陷报告传入时,FineLocator将利用缺陷报告和通过查询扩展后的方法体之间的余弦相似度对源代码方法体进行排序,来定位为修复软件缺陷所需做出变更的方法。在五个开源软件项目ArgoUML,Ant,Maven,Kylin和AspectJ上的实验结果证明了 FineLocator的有效性。本文得到的管理启示:利用信息检索方法有助于软件质量管理,帮助软件维护人员进行缺陷定位,减少软件维护成本,提高软件开发质量。为软件项目管理人员采用信息检索方法进行软件质量改进,提供一种有效手段。