CN104598375B - 一种用于软件开发的缺陷预测方法 - Google Patents
一种用于软件开发的缺陷预测方法 Download PDFInfo
- Publication number
- CN104598375B CN104598375B CN201410710095.6A CN201410710095A CN104598375B CN 104598375 B CN104598375 B CN 104598375B CN 201410710095 A CN201410710095 A CN 201410710095A CN 104598375 B CN104598375 B CN 104598375B
- Authority
- CN
- China
- Prior art keywords
- developer
- source code
- file
- network
- social networks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种用于软件开发的缺陷预测方法,构建源代码依赖网络和开发者社交网络,分别记录源代码文件间的依赖关系,以及开发者间的交流协作关系。比较源代码依赖网络和开发者社交网络,将两者的不一致作为缺乏交流的指示。本发明可以检测出每个源代码文件关联的开发者交流链接缺乏的数量,作为衡量文件网络不一致性的指标,还可以给出文件缺乏的开发者链接,并同时给出每一条链接缺乏的原因,即哪两个源文件之间存在依赖,而其开发者间没有交流协作。开发者可以根据方法的指导,组织弥补相应的交流,有针对性地发现和修复缺陷。
Description
技术领域
本发明属于计算机技术领域,涉及IT技术中的软件工程领域,用于改善软件开发团队内部交流沟通网络的环节缺失,为一种用于软件开发的缺陷预测方法。
背景技术
软件开发是一项极为依赖开发者人工工作的智力活动,其中开发者之间的交流和协作对软件质量有着极大影响。很多严重的软件质量问题根源上都是由于缺乏充分的交流和沟通导致的,从而造成软件成本的昂贵。
缺陷预测是近些年学术界众多研究人员关注的领域,目的是提前预测项目代码中哪些模块或文件最有可能出现缺陷,从而提前分配资源对最有威胁的部分采用静态审查及动态测试等质量保障手段发现潜在的缺陷。目前主要的技术是采用各种机器学习算法,通过采用源代码和修改日志等数据中计算得到的各种度量值组合成输入参数,建立回归模型进行预测,计算出各个模块或文件的缺陷可能性指标。
然而这样的技术在工业中却难以得到有效应用。原因是研究中隐含设定了“完美开发者”的不合理假设,认为把未来会发生缺陷的文件呈现给开发者,开发者就能立即发现其中的缺陷。事实上,当开发者看到缺陷预测给出的文件列表时,常常会感到困惑,不知道从何入手,因此会直接忽视预测结果。因为当前基于机器学习算法和统计分析模型的缺陷预测技术无法给出有效的指导,不能告诉开发者代码具体有怎样的问题和解决建议。
在现有的缺陷预测领域,目前的技术只考虑表征,而不考虑引发缺陷的根源,因此预测得到的结果难以给开发者有效帮助。
发明内容
本发明要解决的问题是:在软件开发过程中需要能够自动发现必要却缺乏的开发者间的交流,即发现软件开发流程中的缺失环节,同时给出受到交流缺乏的影响而可能存在缺陷的相应源代码文件。
本发明的技术方案为:一种用于软件开发的缺陷预测方法,包括以下步骤:
1)构建源代码依赖网络和开发者社交网络,源代码依赖网络根据源代码的依赖关系建立,用于记录源代码文件之间的依赖关系,开发者社交网络根据软件开发者的是否参与过同一个开发任务来建立,用于记录开发者间的交流协作关系;
2)基于“源代码存在依赖关系,则相应开发者间需要有社交关系”的原则,寻找源代码依赖网络和开发者社交网络间的不一致,所述不一致即缺乏的开发者关系;
3)将每个源代码文件所关联的缺乏的开发者关系作为源代码文件不一致性的度量值,用于源代码文件的缺陷预测,缺乏的开发者关系越多,源代码文件存在潜在缺陷以及未来需要修复的可能性越高。
进一步的,还包括步骤4):
4)在步骤3)进行缺陷预测的同时,根据缺乏的开发者关系提取对应的源代码,所提取的源代码即为可能存在缺陷的部分。
步骤1)中,源代码依赖网络包含多种代码关系,开发者社交网络包括多种开发者关系:
源代码依赖网络包括:
代码语法依赖:静态分析各个源代码文件间的数据依赖和控制依赖关系,建立文件间的语法依赖网络;
代码逻辑依赖:分析过程数据,找出同时被提交,即一起被修改的文件,开源项目的版本控制工具中记录了每一次修改所提交的文件,通过分析每一次修改所提交的文件得到文件间的逻辑依赖网络;
代码任务依赖:找出为了完成同一个任务而同时修改的文件,建立这些文件间的任务依赖关系;
开发者社交网络包括:
开发者任务依赖:两个开发者同时参与了一个任务,则存在任务依赖关系;
开发者提交重叠:两个开发者提交过同一个文件,则建立该关系。
上述步骤2)具体包括如下步骤:
21)根据源代码网络中的依赖关系,以及源代码文件和开发者的提交关系,认定存在依赖关系的源代码文件的开发者间应具有必要的社交关系;
22)检查步骤21)判定的开发者间的必要社交关系是否在开发者社交网络中存在;
23)步骤22)检查中不存在的社交关系被认定为缺乏的开发者社交关系链接,即缺乏的开发者关系。
现有技术中,在研究和工业中都忽视了开发者间缺乏交流会引发缺陷这一点问题,而且因为交流缺乏这一问题难以采用自动化的方式被高效地发现,因此也没有人基于这一点来进行缺陷预测。
根据本发明的技术方案,预测了软件的缺陷风险,给出源代码依赖网络和开发者社交网络不一致性的同时,还可以给出文件缺乏的开发者链接,并同时可以由源代码依赖网络和开发者社交网络的内容明确每一条链接缺乏的原因,即哪两个源文件之间存在依赖,而其开发者间没有交流协作。开发者可以根据方法的指导,组织弥补相应的交流,有针对性地发现和修复缺陷。
附图说明
图1为本发明一个示例,显示了本发明的实施方式,左半边给出了一个源代码网络的一部分,包含4个文件及其依赖关系,文件中阴影区域表示该文件的开发者;右半边给出了这些开发者在开发者网络间的社交关系。
图2为根据图1给出的关系计算File 0的网络不一致性度量值的过程。
具体实施方式
本发明是一种为改善软件开发团队内部交流沟通提供自动化推荐的方法,从而辅助软件团队更好地完成软件开发,大大减少因为成员间不充分的交流造成的软件质量问题。本发明可以实现为自动化工具,部署在软件项目,尤其是开源项目或者地理分散的团队的开发平台中,帮助技术负责人了解软件团队的交流情况,并及时修复因交流不充足导致的软件缺陷。
本发明的核心技术是比较源代码依赖网络和开发者社交网络,将两者的不一致作为缺乏交流的指示。
首先构建源代码依赖网络和开发者社交网络。目前有各种方式构建这两种网络,本发明中将这些方法组合起来,最终得到一个合成的源代码依赖网络和一个合成的开发者社交网络,分别记录了源代码文件间的依赖关系,以及开发者间的交流协作关系。
接下来寻找代码网络和开发者网络间的不一致。我们认为,如果两个源文件间存在依赖,那么其各自的开发者之间在很大程度上应该有交流和协作,否则就是出现了不一致,交流链缺乏。按照这一设定,本发明可以找到很可能缺乏而又必要的开发者链接。
最终本发明可以检测出每个文件关联的开发者交流链接缺乏的数量,作为衡量文件网络不一致性的指标。
下面给出以真实的开源项目作为实验主体验证本发明效果所进行的实验步骤,供实践者在进行具体实施时加以参考,也可根据具体项目环境和特点灵活调整。
1)构建网络
两大类网络的构建方式目前有很多,实验中我们在构建它们时分别采用了三种方法。
源代码依赖网络:
●代码语法依赖:静态分析各个源代码文件间的数据依赖和控制依赖关系。实验中使用了Understand工具完成这一工作,建立文件间的语法依赖网络。
●代码逻辑依赖:分析过程数据,找出同时被提交,即一起被修改的文件。开源项目的版本控制工具如SVN、Github等系统中记录了每一次修改所提交的文件,可以分析这些数据得到文件间的逻辑依赖网络。
●代码任务依赖:找出为了完成同一个任务(如修复一个缺陷或者实现一项需求)而同时修改的文件,建立关系。实验中的开源项目版本控制工具提交的消息中会附有某一次提交是为了完成哪个任务而进行的,与缺陷跟踪系统结合起来可以分析得到这些提交所包含的文件间存在任务依赖关系。
开发者社交网络:
●开发者任务依赖:两个开发者同时参与了一个任务,则存在任务依赖关系。类似于代码任务依赖关系的提取,实验中找出不同的提交用于完成同一项任务,但其开发者不同,则建立任务依赖关系。
●开发者提交重叠:两个开发者提交过同一个文件,则建立该关系。从版本控制工具记录的过程日志上可以找到。
●开发者评论交流:两个开发者对同一个任务发表过评论,则建立该关系。从缺陷跟踪系统中可以获取该信息。
以上方式是研究中已经经过反复检验过的方法,本发明在实施例中将三种代码网络构建方法构建得到的网络合成一个,将三种开发者社交网络也合成一个,来展开后面的分析。或者说,无论哪一种代码依赖关系,本发明首次提出,如果与代码相对应的开发者没有任何一种社交关系,本发明方法就认为他们缺乏交流。()本发明实施中也可尝试采用其他的关系网络构建方法。
在网络构建中常常会遇到一个困难,版本控制工具中提交代码的开发者,和缺陷跟踪系统(报告、跟踪、管理缺陷的系统,在软件开发团队中广泛使用)中修复和评论Bug的开发者难以映射,这可能需要一些数据预处理的工作(使用例如启发式规则等方法将版本控制工具和缺陷跟踪系统中的开发者映射起来),或者需要依靠成熟的项目管理平台以及使用方式(将版本控制系统和缺陷跟踪系统集成起来,无缝对接)。
本发明实施例中构建网络采用的数据是以版本为单位的,即每一个版本的开发周期内产生的数据用于构建一套网络。实施时也可按照具体情况进行调整。
2)计算度量值
建立起源代码依赖网络和开发者社交网络后,接下来比较二者,寻找不一致。对于每个文件,计算其网络不一致性,即缺乏的开发者交流数量的方法如下:
1.找出所有文件f的开发者,根据版本控制系统中的记录可知道开发者提交过哪些文件,放入集合D(f);
2.在源代码依赖网络中找出与文件f相关联的文件,放入集合F(f);
3.找出F(f)中每个源代码文件的所有开发者,放入集合D(F(f));
4.把D(f)和D(F(f))两个集合中的开发者两两相连,每一对关联都作为必要的开发者链接放入NDL集合;
5.对于NDL集合中的每一条链接,在开发者社交网络中查找其是否存在,存在则放入存在的开发者链接集合EDL;
6.不存在则放入缺失的开发者链接集合MDL,MDL为NDL与EDL的差集;
7.MDL的模即缺失的开发者链接数,也是文件f的网络不一致性度量值。
图1和附图2举例说明了计算度量值的方法。
得到了每个文件的度量值后,团队可以选出网络不一致性度量大于0的文件作为可疑文件进行审查,或者先从不一致性最高的文件开始审查。对于每个文件,方法不仅可以提供一个整数值,还可以给出每一条缺乏的开发者链接,是哪两个开发者之间出现了交流缺乏情况;更重要的是给出其原因,即因为哪两个文件存在依赖,而导致这两个开发者被认定为需要进行交流协作的开发者。有了这些信息,团队负责人可以召集相关开发者进行讨论,看是否确实存在问题,并加以弥补和修复。
以上实施方案可以集成到项目开发团队使用的管理平台中,如开源项目常用的Github、Trac等,按时为团队负责人自动化地展示分析结果。
Claims (3)
1.一种用于软件开发的缺陷预测方法,其特征是包括以下步骤:
1)构建源代码依赖网络和开发者社交网络,源代码依赖网络根据源代码的依赖关系建立,用于记录源代码文件之间的依赖关系,开发者社交网络根据软件开发者的是否参与过同一个开发任务来建立,用于记录开发者间的交流协作关系;
其中,源代码依赖网络包含多种代码关系,开发者社交网络包括多种开发者关系:
源代码依赖网络包括:
代码语法依赖:静态分析各个源代码文件间的数据依赖和控制依赖关系,建立文件间的语法依赖网络;
代码逻辑依赖:分析过程数据,找出同时被提交,即一起被修改的文件,开源项目的版本控制工具中记录了每一次修改所提交的文件,通过分析每一次修改所提交的文件得到文件间的逻辑依赖网络;
代码任务依赖:找出为了完成同一个任务而同时修改的文件,建立这些文件间的任务依赖关系;
开发者社交网络包括:
开发者任务依赖:两个开发者同时参与了一个任务,则存在任务依赖关系;
开发者提交重叠:两个开发者提交过同一个文件,则建立该关系;
2)基于“源代码存在依赖关系,则相应开发者间需要有社交关系”的原则,寻找源代码依赖网络和开发者社交网络间的不一致,所述不一致即缺乏的开发者关系;
3)将每个源代码文件所关联的缺乏的开发者关系作为源代码文件不一致性的度量值,用于源代码文件的缺陷预测,缺乏的开发者关系越多,源代码文件存在潜在缺陷以及未来需要修复的可能性越高。
2.根据权利要求1所述的一种用于软件开发的缺陷预测方法,其特征是还包括步骤4):
4)在步骤3)进行缺陷预测的同时,根据缺乏的开发者关系提取对应的源代码,所提取的源代码即为可能存在缺陷的部分。
3.根据权利要求1或2所述的一种用于软件开发的缺陷预测方法,其特征是所述步骤2)具体包括如下步骤:
21)根据源代码网络中的依赖关系,以及源代码文件和开发者的提交关系,认定存在依赖关系的源代码文件的开发者间应具有必要的社交关系;
22)检查步骤21)判定的开发者间的必要社交关系是否在开发者社交网络中存在;
23)步骤22)检查中不存在的社交关系被认定为缺乏的开发者社交关系链接,即缺乏的开发者关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410710095.6A CN104598375B (zh) | 2014-11-28 | 2014-11-28 | 一种用于软件开发的缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410710095.6A CN104598375B (zh) | 2014-11-28 | 2014-11-28 | 一种用于软件开发的缺陷预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104598375A CN104598375A (zh) | 2015-05-06 |
CN104598375B true CN104598375B (zh) | 2017-09-12 |
Family
ID=53124186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410710095.6A Active CN104598375B (zh) | 2014-11-28 | 2014-11-28 | 一种用于软件开发的缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104598375B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502909B (zh) * | 2016-11-07 | 2019-04-23 | 南京大学 | 一种智能手机应用开发中的代码缺陷预测方法 |
CN110457561A (zh) * | 2019-08-08 | 2019-11-15 | 北京航空航天大学 | 一种开源社区项目关系网络的构建方法及系统 |
CN110825615A (zh) * | 2019-09-23 | 2020-02-21 | 中国科学院信息工程研究所 | 基于网络嵌入的软件缺陷预测方法及系统 |
CN112328475B (zh) * | 2020-10-28 | 2021-11-30 | 南京航空航天大学 | 一种面向多可疑代码文件的缺陷定位方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866316A (zh) * | 2010-06-23 | 2010-10-20 | 南京大学 | 一种基于相对冗余测试集约简的软件缺陷定位方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661425B (zh) * | 2008-08-26 | 2012-03-21 | 国际商业机器公司 | 测试覆盖分析方法和装置 |
-
2014
- 2014-11-28 CN CN201410710095.6A patent/CN104598375B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866316A (zh) * | 2010-06-23 | 2010-10-20 | 南京大学 | 一种基于相对冗余测试集约简的软件缺陷定位方法 |
Non-Patent Citations (1)
Title |
---|
Studying the Impact of Social Structures;Bettenburg 等;《Proceedings of the 2010IEEE 18th International Conference on Program Comprehension,Braga,Portugal》;20101231;第124页第I节-第132页第VII节 * |
Also Published As
Publication number | Publication date |
---|---|
CN104598375A (zh) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Deissenboeck et al. | Software quality models: Purposes, usage scenarios and requirements | |
Li et al. | A systematic mapping study on technical debt and its management | |
US10310968B2 (en) | Developing software project plans based on developer sensitivity ratings detected from monitoring developer error patterns | |
Kim | A change analysis process to characterize software maintenance projects | |
CN106325883A (zh) | 一种行业业务领域信息系统的开发方法及系统 | |
CN104598375B (zh) | 一种用于软件开发的缺陷预测方法 | |
CN106406881A (zh) | 用于分析形式化的需求以及定位错误的可缩放方法 | |
CN107783758A (zh) | 一种智能合约工程方法 | |
Levin et al. | The co-evolution of test maintenance and code maintenance through the lens of fine-grained semantic changes | |
Zhu et al. | Metanetwork framework for integrated performance assessment under uncertainty in construction projects | |
Refonaa et al. | Probabilistic methods and neural networks in structural engineering | |
Lu et al. | Nonconformity resolving recommendations for product line configuration | |
CN115860118A (zh) | 一种智慧管网知识模型的安全构建方法及系统 | |
CN111274136B (zh) | 一种机载软件测试管理系统和测试过程管理方法 | |
Malakuti et al. | The need for holistic technical debt management across the value stream: Lessons learnt and open challenges | |
Adu-Amankwa et al. | Digital Twins and Blockchain technologies for building lifecycle management | |
Olszewska | Simulink-specific design quality metrics | |
Azzouzi et al. | A survey on systems engineering methodologies for large multi-energy cyber-physical systems | |
CN109255389A (zh) | 一种装备评价方法、装置、设备及可读存储介质 | |
CN102591779B (zh) | 基于工作流的通用软件测试过程模型的建立方法 | |
Rapos et al. | SimPact: Impact analysis for simulink models | |
CN106201888A (zh) | 智能视频叠加处理器自动测试方法及装置 | |
Aysolmaz et al. | An effort prediction model based on BPM measures for process automation | |
CN111966665B (zh) | 数据迁移测试方法及装置 | |
Bai et al. | Hybrid modeling and simulation for trustworthy software process management: a stakeholder‐oriented approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 210000 Huizhi Building, 28 Ningshuang Road, Yuhuatai District, Nanjing City, Jiangsu Province, 7th Floor Co-patentee after: Nanjing University Patentee after: Jiangsu Testing and Certification Co., Ltd. Address before: 210000 Huizhi Building, 28 Ningshuang Road, Yuhuatai District, Nanjing City, Jiangsu Province, 7th Floor Co-patentee before: Nanjing University Patentee before: JIANGSU SUCE SOFTWARE DETECTION TECHNOLOGY CO., LTD. |