CN106156633A - 面向软件修改的风险分析方法 - Google Patents
面向软件修改的风险分析方法 Download PDFInfo
- Publication number
- CN106156633A CN106156633A CN201610486066.5A CN201610486066A CN106156633A CN 106156633 A CN106156633 A CN 106156633A CN 201610486066 A CN201610486066 A CN 201610486066A CN 106156633 A CN106156633 A CN 106156633A
- Authority
- CN
- China
- Prior art keywords
- developer
- risk
- bug
- submission
- information
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及面向软件修改的风险分析方法。本发明使用TF‑IDF算法提取出关键词并反馈给开发人员,修改提交信息和修复的bug信息角度对修改提交进行分析,为开发人员的修改提交提供了风险结果以及相应的风险解释,对修改提交进行了风险分析,结合了该开发人员的历史提交信息和bug中的评论信息,供开发人员的修改提交进行参考,并给出了缺陷产生的原因,形成风险特征说明,并给出相应的风险解释。本发明克服了过去并没有考虑到开发人员的开发历史以及相关bug评论中内容的缺陷。本发明给出了缺陷产生的原因,有效地提高软件维护质量,降低软件维护带来的风险。
Description
技术领域
本发明属于软件维护领域,特别涉及面向软件修改的风险分析方法。
背景技术
由于软件工程的复杂性,软件开发与维护过程中常常会出现软件漏洞,这些漏洞导致大量的人力、物力的损失,因此软件质量问题就成为软件工程研究领域重要的分区之一。如今有很多研究着眼于软件质量的预测,许多软件分析和预测工作提出了关于软件度量、软件模型的方法,用来准确地分析和预测软件质量。但当前的分析和预测技术的采纳率非常低,针对软件质量的分析和预测仍是一个难题,因为缺乏相应的可以被实际操作的工具。另外,开发者在提交修改时,由于多方面的因素,可能会导致提交诱导出更多bug,从而造成开发人员的不断维护,增加了软件维护的成本。
为了提高软件维护质量,降低软件维护带来的风险,目前软件维护研究领域出现了很多相关技术,这些技术主要都集中于研究如何更准确地分析和预测提交修改的风险,一般是通过相关的软件度量和软件模型对软件项目进行分析和预测,也有一些相关的工具给出了宏观的缺陷分布情况。但是,这些技术并没有考虑到开发人员的开发历史以及相关bug评论中内容,使得针对提交信息的分析并不完善,同时并没有提供直观的风险预测结果和缺陷产生的原因,开发人员并不能清晰地了解到当前修改提交出现风险的原因,还需要自行根据统计数据予以确定,缺少对整个软件提交的具体分析和解释,使软件维护的过程更加困难。
发明内容
本发明的目的就在于克服上述缺陷,研制面向软件修改的风险分析方法。
本发明的技术方案是:
面向软件修改的风险分析方法,其主要技术特征在于如下步骤:
(1)使用TF-IDF算法提取出关键词并反馈给开发人员,用余弦函数对预处理后的提交信息与历史提交信息库和bug库进行相似度计算,识别与当前提交相似度较高的历史提交和bug,并根据提交信息和相关bug库,提取出bug编号、bug 相关状态、bug的严重性、与其他bug的联系等相关信息,形成一个修改提交,相关信息的对应列表,作为后续步骤的参考,以及bug可能出现reopen的风险性的一个考察;
(2)在当前提交信息的开发人员的历史提交信息库中,通过统计,得出该开发者对于同一软件漏洞的多次修改的次数,以及修改的漏洞出现reopen的次数,与该项目所有开发者的对于同一软件漏洞的多次修改的次数,以及修改的漏洞出现reopen的次数平均值进行比较,记比较后的偏移量为p;若统计次数高于平均值且p>10%,开发者能力评估为低;统计次数高于平均值且p<10%,开发者能力评估为中;统计次数低于平均值,开发者能力评估为高;若开发者能力评估较低,则表明针对同一软件漏洞出现多次非计划性的修改提交和reopen记录,则表明该开发者可能经验不足,当前的提交信息具有较高的风险;
(3)根据提交信息中的代码,查看提交信息中的代码变更,统计删除,增加的代码行数,查看修改涉及到的代码中的文件、类、方法的具体信息,形成代码更改的集合,规定一次修改提交文件、类、方法修改的次数的阈值分别为8,5,5,根据集合中的内容,统计一次修改提交文件、类、方法修改的次数,将修改的文件、类、方法的个数与阈值进行比较,若高于阈值,则说明该修改提交可能具有风险,且数值越高,风险性越大;统计它们在历史修改库中被开发人员重复修改的次数;如果被重复修改的次数过多,则说明该段代码的稳定性不高,而开发人员对此段代码的修改提交也具有较高风险;
(4)利用主题模型提取历史相关bug中的评论,对评论中出现的bug报告评论中关键词进行分析,提取出一些主题特征;
(5)将上述结果反馈给开发人员,根据bug可能出现reopen的风险,代码的不稳定性考察结果,开发者能力评估结果,bug报告的主题特征,形成风险特征说明,并给出相应的风险解释。
附图说明
图1——本发明流程示意图。
图2——本发明相关修改提交信息示意图。
具体实施方式
本发明的技术思路是:
本发明从开发人员的工作能力,修改提交信息和修复的bug信息角度对修改提交进行分析,为开发人员的修改提交提供了风险结果以及相应的风险解释。此方法不仅更准确地对修改提交进行了风险分析,而且结合了该开发人员的历史提交信息和bug中的评论信息,供开发人员的修改提交进行参考,并给出了缺陷产生的原因,有效地提高软件维护质量,降低软件维护带来的风险。
如图1所示:
本发明步骤如下:
步骤(1).使用TF-IDF算法提取出关键词并反馈给开发人员,用余弦函数对预处理后的提交信息与历史提交信息库和bug库进行相似度计算,识别与当前提交相似度较高的历史提交和bug,,并根据提交信息和相关bug库,提取出bug编号、bug相关状态、bug的严重性、与其他bug的联系等相关信息。形成一个<修改提交,相关信息>对应列表,作为后续步骤的参考,以及bug可能出现reopen的风险性的一个考察。当前bug信息的对应列表就作为风险性的一个考察指标,开发人员通过了解相关的bug信息,知道提交修改中的不足,降低对软件漏洞的重复修复。例如:
其中<bug_id>、<keywords>、<who>、<bug_status>被用来作参考。
| 提取出的相关信息 | |
| <bug_id> | 679494 |
| <keywords> | patch,review |
| <who> | birunthan |
| <bug_status> | RESOLVED FIXED |
其中<bug_importance>、<bug_priority>、<component>、<dependson>、<blocks>、<reported_time>、<modified_time>被用为作为bug可能出现reopen的风险性考察
上述TF-IDF算法:
词频(TF)=某个单词在修改提交中出现的总次数/修改提交的总词数。逆文档频率(IDF)=log(修改提交总数/包含该单词的修改提交数+1)。TF-IDF权值w=TF*IDF权值高低说明关键词是否反映了修改提交的主题。
步骤(2).在当前提交信息的开发人员的历史提交信息库中,通过统计,得出该开发者对于同一软件漏洞的多次修改的次数,以及修改的漏洞出现reopen的次数,与该项目所有开发者的对于同一软件漏洞的多次修改的次数,以及修改的漏洞出现reopen的次数平均值进行比较,记比较后的偏移量为p。若统计次数高于平均值且p>10%,开发者能力评估为低;统计次数高于平均值且p<10%,开发者能力评估为中;统计次数低于平均值,开发者能力评估为高。若开发者能力评估较低,则表明针对同一软件漏洞出现多次非计划性的修改提交和reopen记录,则表明该开发者可能经验不足,当前的提交信息具有较高的风险。通过对开发者能力的评估,得出当前提交信息具有风险性的可能,作为降低软件维护风险的一个指标。
例如:
对于同一软件漏洞的多次修改的次数的平均值为2.46,该开发者修改次数为2,能力评估为高。
修改的漏洞出现reopen的次数平均值为3.19,该开发者的次数为4,P≈0.2025=20.25%>10%,开发者此项能力评估为低。
步骤(3).根据提交信息中的代码,提取代码变更。统计删除,增加的代码行数,查看修改涉及到的代码中的文件、类、方法的具体信息,形成代码更改的集合。规定一次修改提交文件、类、方法修改的次数的阈值分别为 8,5,10,根据集合中的内容,统计一次修改提交文件、类、方法修改的次数,将修改的文件、类、方法的个数与阈值进行比较,若高于阈值,则说明该修改提交可能具有风险,且数值越高,风险性越大。
统计它们在历史修改库中被开发人员重复修改的次数。如果被重复修改的次数过多,则说明该段代码的稳定性不高,而开发人员对此段代码的修改提交也具有较高风险。根据提取的代码变更集合,使开发者明确修改的代码的稳定性,供开发人员参考,避免重复修改。
例如:修改提交号为4e9065b的统计信息如下:
修改的方法个数高于阈值,修改的文件个数和修改的类个数低于阈值。
修改的代码段在历史修改库中被重复修改3次。
步骤(4).利用主题模型提取bug中的评论,对评论中出现的bug报告评论中关键词进行分析,提取出一些主题特征。开发人员通过主题特征,了解当前bug的修复状况,了解当前软件提交所带来的风险。
例如:<bug_id>为701591的bug评论和相关的bug评论中,根据主题模型提取出的主题为failing。说明当前的bug修复并没有完成。
https://bugzilla.mozilla.org/show_bug.cgi?id=701591
步骤(5).将上述结果反馈给开发人员,根据bug可能出现reopen的风险,代码的不稳定性考察结果,开发者能力评估结果,bug报告的主题特征,形成风险特征说明,并给出相应的风险解释。方便测试人员更有针对的进行回归测试,从而提高软件维护质量,降低软件维护带来的风险。
Claims (1)
1.面向软件修改的风险分析方法,其特征在于如下步骤:
(1)使用TF-IDF算法提取出关键词并反馈给开发人员,用余弦函数对预处理后的提交信息与历史提交信息库和bug库进行相似度计算,识别与当前提交相似度较高的历史提交和bug,并根据提交信息和相关bug库,提取出bug编号、bug相关状态、bug的严重性、与其他bug的联系等相关信息,形成一个修改提交,相关信息的对应列表,作为后续步骤的参考,以及bug可能出现reopen的风险性的一个考察;
(2)在当前提交信息的开发人员的历史提交信息库中,通过统计,得出该开发者对于同一软件漏洞的多次修改的次数,以及修改的漏洞出现reopen的次数,与该项目所有开发者的对于同一软件漏洞的多次修改的次数,以及修改的漏洞出现reopen的次数平均值进行比较,记比较后的偏移量为p;若统计次数高于平均值且p>10%,开发者能力评估为低;统计次数高于平均值且p<10%,开发者能力评估为中;统计次数低于平均值,开发者能力评估为高;若开发者能力评估较低,则表明针对同一软件漏洞出现多次非计划性的修改提交和reopen记录,则表明该开发者可能经验不足,当前的提交信息具有较高的风险;
(3)根据提交信息中的代码,查看提交信息中的代码变更,统计删除,增加的代码行数,查看修改涉及到的代码中的文件、类、方法的具体信息,形成代码更改的集合,规定一次修改提交文件、类、方法修改的次数的阈值分别为8,5,5,根据集合中的内容,统计一次修改提交文件、类、方法修改的次数,将修改的文件、类、方法的个数与阈值进行比较,若高于阈值,则说明该修改提交可能具有风险,且数值越高,风险性越大;统计它们在历史修改库中被开发人员重复修改的次数;如果被重复修改的次数过多,则说明该段代码的稳定性不高,而开发人员对此段代码的修改提交也具有较高风险;
(4)利用主题模型提取历史相关bug中的评论,对评论中出现的bug报告评论中关键词进行分析,提取出一些主题特征;
(5)将上述结果反馈给开发人员,根据bug可能出现reopen的风险,代码的不稳定性考察结果,开发者能力评估结果,bug报告的主题特征,形成风险特征说明,并给出相应的风险解释。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610486066.5A CN106156633B (zh) | 2016-06-23 | 2016-06-23 | 面向软件修改的风险分析方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610486066.5A CN106156633B (zh) | 2016-06-23 | 2016-06-23 | 面向软件修改的风险分析方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN106156633A true CN106156633A (zh) | 2016-11-23 |
| CN106156633B CN106156633B (zh) | 2018-11-23 |
Family
ID=57349506
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201610486066.5A Active CN106156633B (zh) | 2016-06-23 | 2016-06-23 | 面向软件修改的风险分析方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN106156633B (zh) |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107066389A (zh) * | 2017-04-19 | 2017-08-18 | 西安交通大学 | 基于集成学习的软件缺陷重新打开的预测方法 |
| CN107844992A (zh) * | 2017-10-31 | 2018-03-27 | 广东欧珀移动通信有限公司 | 评论信息处理方法、装置、终端设备及存储介质 |
| CN108228232A (zh) * | 2018-01-12 | 2018-06-29 | 扬州大学 | 一种针对程序中循环问题的自动修复方法 |
| CN109144564A (zh) * | 2018-09-08 | 2019-01-04 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
| CN109918127A (zh) * | 2019-03-07 | 2019-06-21 | 扬州大学 | 一种基于代码修改模式差异的缺陷纠错方法 |
| CN110826071A (zh) * | 2019-09-24 | 2020-02-21 | 平安科技(深圳)有限公司 | 软件漏洞风险预测方法、装置、设备及存储介质 |
| CN111562937A (zh) * | 2020-04-17 | 2020-08-21 | 北京简单一点科技有限公司 | 一种代码方法级缺陷预警方法 |
| CN112416799A (zh) * | 2020-12-03 | 2021-02-26 | 中国人寿保险股份有限公司 | 一种代码质量预警方法、装置、电子设备及存储介质 |
| CN113138923A (zh) * | 2021-04-23 | 2021-07-20 | 上海中通吉网络技术有限公司 | 通过分析修改代码确定测试范围的方法及装置 |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110175726B (zh) * | 2019-06-18 | 2021-03-26 | 中国人民解放军国防科技大学 | 一种基于迁移性分析的跨项目缺陷预测方法 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003044275A (ja) * | 2001-07-26 | 2003-02-14 | Toshiba Corp | 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム |
| CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
| CN103870382A (zh) * | 2012-12-10 | 2014-06-18 | 百度在线网络技术(北京)有限公司 | 一种代码风险的检测方法及装置 |
| US20150154397A1 (en) * | 2013-12-04 | 2015-06-04 | International Business Machines Corporation | Predicting the actions and evaluating the risk of a software install program |
| CN105446734A (zh) * | 2015-10-14 | 2016-03-30 | 扬州大学 | 一种基于软件开发历史开发人员网络关系构建方法 |
-
2016
- 2016-06-23 CN CN201610486066.5A patent/CN106156633B/zh active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003044275A (ja) * | 2001-07-26 | 2003-02-14 | Toshiba Corp | 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム |
| CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
| CN103870382A (zh) * | 2012-12-10 | 2014-06-18 | 百度在线网络技术(北京)有限公司 | 一种代码风险的检测方法及装置 |
| US20150154397A1 (en) * | 2013-12-04 | 2015-06-04 | International Business Machines Corporation | Predicting the actions and evaluating the risk of a software install program |
| CN105446734A (zh) * | 2015-10-14 | 2016-03-30 | 扬州大学 | 一种基于软件开发历史开发人员网络关系构建方法 |
Non-Patent Citations (1)
| Title |
|---|
| 张洁: "软件测试工具分析及其应用探讨", 《计算机时代》 * |
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107066389A (zh) * | 2017-04-19 | 2017-08-18 | 西安交通大学 | 基于集成学习的软件缺陷重新打开的预测方法 |
| CN107844992A (zh) * | 2017-10-31 | 2018-03-27 | 广东欧珀移动通信有限公司 | 评论信息处理方法、装置、终端设备及存储介质 |
| CN108228232A (zh) * | 2018-01-12 | 2018-06-29 | 扬州大学 | 一种针对程序中循环问题的自动修复方法 |
| CN108228232B (zh) * | 2018-01-12 | 2021-04-30 | 扬州大学 | 一种针对程序中循环问题的自动修复方法 |
| CN109144564A (zh) * | 2018-09-08 | 2019-01-04 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
| CN109144564B (zh) * | 2018-09-08 | 2022-03-25 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
| CN109918127B (zh) * | 2019-03-07 | 2022-02-11 | 扬州大学 | 一种基于代码修改模式差异的缺陷纠错方法 |
| CN109918127A (zh) * | 2019-03-07 | 2019-06-21 | 扬州大学 | 一种基于代码修改模式差异的缺陷纠错方法 |
| CN110826071A (zh) * | 2019-09-24 | 2020-02-21 | 平安科技(深圳)有限公司 | 软件漏洞风险预测方法、装置、设备及存储介质 |
| CN110826071B (zh) * | 2019-09-24 | 2023-09-26 | 平安科技(深圳)有限公司 | 软件漏洞风险预测方法、装置、设备及存储介质 |
| CN111562937A (zh) * | 2020-04-17 | 2020-08-21 | 北京简单一点科技有限公司 | 一种代码方法级缺陷预警方法 |
| CN112416799A (zh) * | 2020-12-03 | 2021-02-26 | 中国人寿保险股份有限公司 | 一种代码质量预警方法、装置、电子设备及存储介质 |
| CN113138923A (zh) * | 2021-04-23 | 2021-07-20 | 上海中通吉网络技术有限公司 | 通过分析修改代码确定测试范围的方法及装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN106156633B (zh) | 2018-11-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN106156633B (zh) | 面向软件修改的风险分析方法 | |
| CN114444986B (zh) | 产品分析方法及系统及装置及介质 | |
| US11429614B2 (en) | Systems and methods for data quality monitoring | |
| Liu et al. | Statistical debugging: A hypothesis testing-based approach | |
| CN111752833B (zh) | 一种软件质量体系准出方法、装置、服务器及存储介质 | |
| CN117951128A (zh) | 一种基于人工智能的数据质量稽查方法 | |
| CN107862327A (zh) | 一种基于多特征的安全缺陷识别系统和方法 | |
| CN107301120B (zh) | 用于处理非结构化日志的方法及装置 | |
| CN107967218B (zh) | 基于用户历史数据的工业软件现场测试中边界值测试方法 | |
| CN111813585A (zh) | 慢盘的预测和处理 | |
| CN108804558A (zh) | 一种基于语义模型的缺陷报告自动分类方法 | |
| CN104021180B (zh) | 一种组合式软件缺陷报告分类方法 | |
| Islam et al. | A comparative study of software bugs in micro-clones and regular code clones | |
| CN118733475A (zh) | 一种线上互动式实时软件开发交流反馈系统 | |
| CN105786682A (zh) | 一种规避软件性能故障的实施系统及方法 | |
| Yadav et al. | R+ r: Security vulnerability dataset quality is critical | |
| CN105824847B (zh) | 一种信息整合的质量评估方法 | |
| CN119807003B (zh) | 一种基于微调大模型的代码检测方法以及装置 | |
| Chandorkar et al. | An exploratory study on the usage of gherkin features in open-source projects | |
| CN120631886A (zh) | 一种基于元数据与大语言模型的数据质量监测方法及装置 | |
| CN118409976B (zh) | 一种基于机器学习的软件质量评估方法及系统 | |
| Herraiz et al. | Impact of installation counts on perceived quality: A case study on debian | |
| CN111813442A (zh) | 一种基于机器学习的软件味道检测方法 | |
| CN115113920B (zh) | 演化耦合关系抽取方法、系统、计算机设备及存储介质 | |
| Wang et al. | A benchmark dataset for evaluating process similarity search methods |
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 | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20250305 Address after: No. 217, West Development Road, High tech Industrial Development Zone, Yangzhou City, Jiangsu Province, 225002 Patentee after: YANGZHOU DINGDANG TECHNOLOGY Co.,Ltd. Country or region after: China Address before: 225009 No. 88, South University Road, Jiangsu, Yangzhou Patentee before: YANGZHOU University Country or region before: China |
|
| TR01 | Transfer of patent right |