论文部分内容阅读
软件工程数据是软件工程整个过程中所产生的各种数据,包括软件的源代码、文档、缺陷报告等。在绝大多数情况下,软件工程数据是开发者获取信息的唯一来源。随着计算机软件规模的不断扩大,手工获取开发和维护软件所需的信息越来越困难。数据挖掘技术可从软件工程数据中自动发现所需信息,加快软件开发进程,提高软件质量。本文针对软件工程数据挖掘的若干问题进行研究,主要贡献如下:1.提出了一种Java源代码中Method的自动命名方法。软件源代码中标识符的正确命名对软件维护非常重要,恰当的Method名能够使开发者了解Method的功能,而不恰当的命名则会误导他们。但是,开发者除了个人的经验技术之外,他们在为Method命名时几乎无所凭依。本文提出了一种基于文本分类的方法,为Method选择恰当的动作名。实验表明,本文方法的命名正确率达到70%以上。2.提出了一种程序盗用检测方法。与软件业、特别是开源软件的蓬勃发展相比,用以保护现有软件免遭软件盗用者侵害的检测工具少得可怜。一个不自律的开发者可以通过代码伪装技术盗用他人的源码,而又逃脱法律的制裁。现有的基于程序依赖图的检测工具可以检出若干种专业的代码伪装,但时间效率无法让人满意,并且它们无法识破影响程序依赖图结构的伪装。本文提出了一种新的盗用检测工具TPLAG,它不仅将代码盗用检测的时间复杂度从指数级降到多项式级,而且能成功地识破影响图结构的代码伪装技术。3.提出了一种缺陷分派方法。大型软件的开发组每天都会收到成百上千的缺陷报告,对这些缺陷进行分派是软件开发者们的一项沉重的负担。现有的研究工作将软件缺陷自动分派归结为文本分类问题。本文利用Latent Dirichlet Allocation(LDA)进行文本降维,在此基础上基于文本分类方法进行缺陷分派,提高了分派的准确率。4.提出了一种缺陷报告质量评估方法。软件维护工作的质量与缺陷报告本身的质量高度相关,不包含有用信息、质量低下的缺陷报告很可能被开发者直接忽略,相应的缺陷也就无法得到修复。本文提出了一种基于主题模型的方法对缺陷报告的内容进行分析,并量化缺陷报告的信息量,即缺陷报告质量。5.提出了一种缺陷报告库上主题发现与跟踪的方法。本文试图从缺陷报告库中提取两方面的内容:缺陷的主题和某一主题缺陷爆发的时段,这些内容能够为软件项目的管理者提供高层次的信息,以了解软件维护的整体情况。我们采用LDA模型提取缺陷报告内容中的主题,并开发了一种事件检测算法以检测缺陷集中爆发的时段。