论文部分内容阅读
缺陷分配是将一份缺陷报告快速分配给一位最为合适的开发人员以使缺陷能够快速修复的过程,而缺陷报告的分配工作往往由经验丰富的开发人员来完成。但是,这种人工分配的方式不仅耗费开发人员大量而又宝贵的时间,而且人工分配的准确率也并不太高。因此,如何自动高效地分配缺陷以节省人工分配的人力成本和时间成本成为软件维护领域的一个热点研究问题。典型的做法是将缺陷分配问题转化为文本分类问题。目前,缺陷分配模型所采用的文本分类方法大都是基于词袋模型和一些常用的机器学习算法(如Naive Bayes、C4.5、SVM等)的组合。但这种方法也存在一些缺陷:基于词袋模型或者其变形的文本表示方式,要么忽视了文本的词序信息,要么存在文本表示矩阵过于稀疏的问题,致使很难训练出具有高准确率的分类模型。而常用的机器学习算法如SVM,虽然可以取得不错的准确率,但是其效果往往依赖于大量的人工特征工程,这同样也需要投入大量的时间和精力。有鉴于此,本文提出了一种基于深度学习的缺陷自动分配方法,不再使用词袋模型来表示文本,而是使用目前自然语言处理领域最为流行的词向量模型。这样不仅可以有效捕捉文本的词序信息,而且可以挖掘大量的语法和语义信息,更为重要的是,其文本表示不再是一个巨大的稀疏矩阵。此外,本文不再局限于只使用机器学习算法进行训练,而采用在文本分类领域崭露头角的深度学习技术。深度学习的最大好处在于可以节省大量特征工程,不再需要过多的人工参与,就可以自行寻找文本特征和组合特征,极大地节省了缺陷分配的人力成本和时间成本。本文提出了三种基于卷积神经网络的模型:S_CNN模型、M_CNN模型以及I_CNN模型,并在大型开源软件Eclipse和Mozilla两大数据集上进行了实验验证。结果表明,与机器学习中的SVM模型和基于递归神经网络的方法相比,本文所提方法在平均准确率的指标上均优于上述基准方法,证明了三种模型的可行性。然而,现在的工作还并不成熟,未来会将Transformer、GAN等模型引入到缺陷分配领域中,提出更好的方法使得缺陷自动分配越来越准、越来越快。