一种用于软件开发的缺陷预测方法

文档序号:8282198阅读:974来源:国知局
一种用于软件开发的缺陷预测方法
【技术领域】
[0001]本发明属于计算机技术领域,涉及IT技术中的软件工程领域,用于改善软件开发团队内部交流沟通网络的环节缺失,为一种用于软件开发的缺陷预测方法。
【背景技术】
[0002]软件开发是一项极为依赖开发者人工工作的智力活动,其中开发者之间的交流和协作对软件质量有着极大影响。很多严重的软件质量问题根源上都是由于缺乏充分的交流和沟通导致的,从而造成软件成本的昂贵。
[0003]缺陷预测是近些年学术界众多研宄人员关注的领域,目的是提前预测项目代码中哪些模块或文件最有可能出现缺陷,从而提前分配资源对最有威胁的部分采用静态审查及动态测试等质量保障手段发现潜在的缺陷。目前主要的技术是采用各种机器学习算法,通过采用源代码和修改日志等数据中计算得到的各种度量值组合成输入参数,建立回归模型进行预测,计算出各个模块或文件的缺陷可能性指标。
[0004]然而这样的技术在工业中却难以得到有效应用。原因是研宄中隐含设定了 “完美开发者”的不合理假设,认为把未来会发生缺陷的文件呈现给开发者,开发者就能立即发现其中的缺陷。事实上,当开发者看到缺陷预测给出的文件列表时,常常会感到困惑,不知道从何入手,因此会直接忽视预测结果。因为当前基于机器学习算法和统计分析模型的缺陷预测技术无法给出有效的指导,不能告诉开发者代码具体有怎样的问题和解决建议。
[0005]在现有的缺陷预测领域,目前的技术只考虑表征,而不考虑引发缺陷的根源,因此预测得到的结果难以给开发者有效帮助。

【发明内容】

[0006]本发明要解决的问题是:在软件开发过程中需要能够自动发现必要却缺乏的开发者间的交流,即发现软件开发流程中的缺失环节,同时给出受到交流缺乏的影响而可能存在缺陷的相应源代码文件。
[0007]本发明的技术方案为:一种用于软件开发的缺陷预测方法,包括以下步骤:
[0008]I)构建源代码依赖网络和开发者社交网络,源代码依赖网络根据源代码的依赖关系建立,用于记录源代码文件之间的依赖关系,开发者社交网络根据软件开发者的是否参与过同一个开发任务来建立,用于记录开发者间的交流协作关系;
[0009]2)基于“源代码存在依赖关系,则相应开发者间需要有社交关系”的原则,寻找源代码依赖网络和开发者社交网络间的不一致,所述不一致即缺乏的开发者关系;
[0010]3)将每个源代码文件所关联的缺乏的开发者关系作为源代码文件不一致性的度量值,用于源代码文件的缺陷预测,缺乏的开发者关系越多,源代码文件存在潜在缺陷以及未来需要修复的可能性越高。
[0011]进一步的,还包括步骤4):
[0012]4)在步骤3)进行缺陷预测的同时,根据缺乏的开发者关系提取对应的源代码,所提取的源代码即为可能存在缺陷的部分。
[0013]步骤I)中,源代码依赖网络包含多种代码关系,开发者社交网络包括多种开发者关系:
[0014]源代码依赖网络包括:
[0015]代码语法依赖:静态分析各个源代码文件间的数据依赖和控制依赖关系,建立文件间的语法依赖网络;
[0016]代码逻辑依赖:分析过程数据,找出同时被提交,即一起被修改的文件,开源项目的版本控制工具中记录了每一次修改所提交的文件,通过分析每一次修改所提交的文件得到文件间的逻辑依赖网络;
[0017]代码任务依赖:找出为了完成同一个任务而同时修改的文件,建立这些文件间的任务依赖关系;
[0018]开发者社交网络包括:
[0019]开发者任务依赖:两个开发者同时参与了一个任务,则存在任务依赖关系;
[0020]开发者提交重叠:两个开发者提交过同一个文件,则建立该关系。
[0021]上述步骤2)具体包括如下步骤:
[0022]21)根据源代码网络中的依赖关系,以及源代码文件和开发者的提交关系,认定存在依赖关系的源代码文件的开发者间应具有必要的社交关系;
[0023]22)检查步骤21)判定的开发者间的必要社交关系是否在开发者社交网络中存在;
[0024]23)步骤22)检查中不存在的社交关系被认定为缺乏的开发者社交关系链接,即缺乏的开发者关系。
[0025]现有技术中,在研宄和工业中都忽视了开发者间缺乏交流会引发缺陷这一点问题,而且因为交流缺乏这一问题难以采用自动化的方式被高效地发现,因此也没有人基于这一点来进行缺陷预测。
[0026]根据本发明的技术方案,预测了软件的缺陷风险,给出源代码依赖网络和开发者社交网络不一致性的同时,还可以给出文件缺乏的开发者链接,并同时可以由源代码依赖网络和开发者社交网络的内容明确每一条链接缺乏的原因,即哪两个源文件之间存在依赖,而其开发者间没有交流协作。开发者可以根据方法的指导,组织弥补相应的交流,有针对性地发现和修复缺陷。
【附图说明】
[0027]图1为本发明一个示例,显示了本发明的实施方式,左半边给出了一个源代码网络的一部分,包含4个文件及其依赖关系,文件中阴影区域表示该文件的开发者;右半边给出了这些开发者在开发者网络间的社交关系。
[0028]图2为根据图1给出的关系计算File O的网络不一致性度量值的过程。
【具体实施方式】
[0029]本发明是一种为改善软件开发团队内部交流沟通提供自动化推荐的方法,从而辅助软件团队更好地完成软件开发,大大减少因为成员间不充分的交流造成的软件质量问题。本发明可以实现为自动化工具,部署在软件项目,尤其是开源项目或者地理分散的团队的开发平台中,帮助技术负责人了解软件团队的交流情况,并及时修复因交流不充足导致的软件缺陷。
[0030]本发明的核心技术是比较源代码依赖网络和开发者社交网络,将两者的不一致作为缺乏交流的指示。
[0031]首先构建源代码依赖网络和开发者社交网络。目前有各种方式构建这两种网络,本发明中将这些方法组合起来,最终得到一个合成的源代码依赖网络和一个合成的开发者社交网络,分别记录了源代码文件间的依赖关系,以及开发者间的交流协作关系。
[0032]接下来寻找代码网络和开发者网络间的不一致。我们认为,如果两个源文件间存在依赖,那么其各自的开发者之间在很大程度上应该有交流和协作,否则就是出现了不一致,交流链缺乏。按照这一设定,本发明可以找到很可能缺乏而又必要的开发者链接。
[0033]最终本发明可以检测出每个文件关联的开发者交流链接缺乏的数量,作为衡量文件网络不一致性的指标。
[0034]下面给出以真实的开源项目作为实验主体验证本发明效果所进行的实验步骤,供实践者在进行具体实施时加以参考,也可根据具体项目环境和特点灵活调整。
[0035]I)构建网络
[0036]两大类网络的构建方式目前有很多,实验中我们在构建它们时分别采用了三种方法。
[0037]源代码依赖网络:
[0038]籲代码语法依赖:静态分析各个源代码文件间的数据依赖和控制依赖关系。实验中使用了 Understand工具完成这一工作,建立文件间的语法依赖网络。
[0039]籲代码逻辑依赖:分析过程数据,找出同时被提交,即一起被修改的文件。开源项目的版本控制工具如SVN、Gith
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1