CN107329770A - 针对软件安全性bug修复的个性化推荐方法 - Google Patents
针对软件安全性bug修复的个性化推荐方法 Download PDFInfo
- Publication number
- CN107329770A CN107329770A CN201710554336.6A CN201710554336A CN107329770A CN 107329770 A CN107329770 A CN 107329770A CN 201710554336 A CN201710554336 A CN 201710554336A CN 107329770 A CN107329770 A CN 107329770A
- Authority
- CN
- China
- Prior art keywords
- bug
- developer
- security
- software
- recommendation
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及针对软件安全性BUG修复的个性化推荐方法。本发明预处理及提取特征向量关键词,构建新的安全性Bug库,对相关开发者对security bug的评论和讨论进行提取和分析,找出同类bug有关的开发者,利用bug标签与开发人员的标签进行匹配筛选,分析筛选出来的bug,给出关键的推荐解释,使用机器学习中的分类算法从创建的安全性bug库中提取出已修复的bug的一些修改模式,供推荐出来的开发人员进行选择。本发明克服了修复不及时、质量低等缺陷。本发明从历史信息(如开发人员历史评论信息和历史修复质量)和开发经验角度推荐出合适的开发人员和修复模式并给出推荐解释。
Description
技术领域
本发明属于软件维护领域,特别涉及针对软件安全性BUG修复的个性化推荐方法。
背景技术
由于软件项目的复杂性和开发人员的多样性,导致每个软件都不是完美的,或多或少都会出现一些bug。而出现的这些bug往往需要被及时地修复,尤其是项目中出现的安全性bug。根据相关研究,这些安全性bug常常会被黑客用来恶意攻击软件***、窃取重要资料和篡改用户数据等,从而给工业界带来巨大的经济损失,以及严重破坏了相关企业的安全声誉。安全性bug对各个组织都是严重的威胁,可能会造成严重的货币或声誉损害。所以尽早尽快的修复安全性bug对开发团队至关重要。因此,为了确保软件信息安全,***中的安全性bug更应该受到软件开发人员和维护人员的关注。如何及时有效地修复这些安全性bug成为了工业界和学术界共同关注的问题。目前软件项目中安全性bug修复的重要指数往往都高于其他类型的bug。
在本发明作出之前,为了更快更好地解决软件bug,目前已有很多相关推荐技术被提出来。这些技术主要根据软件开发人员的历史数据,推荐合适的开发人员完成一个特定的软件bug。但是这些方法并没有考虑到开发人员的一些历史评论信息。评论中蕴含有很大的信息量,例如,当我们从bugreporter中没办法快速提取关键信息时,我们却可以从历史评论信息中快速的找到其他开发人员对这个bug的一些看法,从而快速的给出解决方案,同时从评论中我们还可以主观的得到一个开发人员对bug的修复质量是否为优、是否满足大部分问题提交者。于是我们将已修复bug的历史评论信息也作为推荐的因素之一进行开发者的推荐。同时,针对不同的安全性bug,使用适合的修复模式,会大大的提升软件维护的效率。然而,实践中安全性bug的修复往往需要特定的方式,但开发人员在修复过程很难高效发现这些模式。此外,目前已有的软件开发人员推荐方法大多适合应用在解决非安全性软件bug。但由于安全性软件bug本身固有的修复及时性强、质量要求高等特征,现有的推荐技术往往不适合针对安全性bug推荐软件开发者。
发明内容
本发明的目的就在于克服上述缺陷,研制针对软件安全性BUG修复的个性化推荐方法。
本发明的技术方案是:
针对软件安全性BUG修复的个性化推荐方法,其主要技术特征在于如下步骤:
步骤1).预处理及提取特征向量关键词:从一些开源软件项目中选取更多的具有
代表性的更大规模的具有完整演化历史的软件项目(如Eclipse,Mozilla,Bugzilla等)作为研究对象,使用向量空间模型对security bug的属性内容(bug描述、commit文件)进行预处理,根据现有的TF-IDF技术计算bug描述中出现次数最多的词作为特征向量关键词;
步骤2).构建新的安全性Bug库:使用已经处理好的带有特征向量关键字作为关键字,建立带有关键字的个性化的安全性bug库;
步骤3).通过对例如Bugzilla中相关开发者对security bug的评论和讨论进行提取和分析,找出同类bug有关的开发者,并对开发者的信息以及语料库进行提取,之后对开发人员所涉及的领域进行标签化定义及管理,构建一个带有关键字标签的类似于开发者网络或社区以便后续推荐;
步骤4).利用bug标签与开发人员的标签进行匹配筛选,同时找出一些与修改请求相似的Commit历史信息,分析出相关软件开发者的历史经验和修复质量并划分等级,挑选推荐出适合实现修改请求的开发人员;
步骤5).分析步骤(4)筛选出来的bug,结合相关软件开发者的历史经验和修复质量这几个重要因素给定权值进行计算,对初始化推荐出的开发人员进行排名,同时给出关键的推荐解释;
步骤6).使用机器学习中的分类算法从步骤(2)中所创建的安全性bug库中提取出已修复的bug的一些修改模式,进行分析并构建一个相关安全性bug修改模式库,将其与修改请求进行相似度匹配,反馈分析并推荐出最适合的修改模式可供推荐出来的开发人员进行选择。
本发明的优点和效果在于从历史信息(如开发人员历史评论信息和历史修复质量)和开发经验角度推荐出合适的开发人员和修复模式并给出推荐解释。此方法不仅更准确地推荐出了合适的开发人员,而且结合了该开发人员的开发历史任务推荐除了有效的修复模式供开发人员快速高效的修复bug,实现了个性化推荐功能,更有效提高了开发人员维护软件的效率与准确率。主要有如下一些优点:
(1)目前的软件推荐开发人员方法没有考虑到已修复的bug的一些历史评论信息。这些信息不仅能使我们快速的匹配到历史相关bug和开发人员还能帮助我们快速识别修复模式。我们的方法结合了历史评论信息的语料库和历史修复信息,针对安全性bug推荐合适的开发人员,对安全性bug进行及时、高效的修复,实现了个性化推荐。
(2)根据不同属性的bug,给开发者推荐相适应的修复模式,高效的进行软件bug的修复。
附图说明
图1——本发明流程示意图。
图2——本发明关键词向量的生成过程示意图。
图3——本发明软件项目安全性bug库的构建流程示意图。
图4——本发明软件项目安全性bug开发人员库的构建流程示意图。
具体实施方式
本发明的技术思路是:
主要针对软件安全性bug,结合开发人员的评论信息语料库和历史修复信息,同时也考虑了软件开发者的历史开发经验和bug修复质量等因素,推荐出适合修复软件安全性bug的开发者网络、推荐开发者使用相关的修改模式以及bug相关辅助信息,从而及时并且高质量的修复软件安全性bug。在推荐开发人员之前,重新创建软件安全性bug规则库,对已知的已经修复好的安全性bug和开发人员进行标签化管理的预处理,利用已创建好的安全性bug库,针对新出现的bug进行开发人员以及修复模式的推荐。我们使用标签快速筛选出与新的安全性bug相关联的开发人员,之后对初次筛选出来的开发人员进行排名,根据开发人员的历史commit信息、经验、评论信息等对推荐出来的开发人员进行排序,最后生成个性化的开发人员以及修复模式推荐列表并给出推荐解释。
下面具体说明本发明。
如图1所示:
首先“提取特征向量关键词”,根据提取的关键词分别“构建安全性bug库”和“构建安全性bug开发人员库”,二者结合进行“标签匹配筛选”得出“初始推荐结果”,通过“排序”结合“修复模式推荐”以及“推荐解释”给出最后的“最终推荐结果”。
具体步骤如下:
步骤1).提取特征向量关键词。在推荐软件开发者之前,使用向量空间模型对security bug的属性内容(bug描述、commit文件)进行预处理。Bug内容属性可以通过向量空间模型进行表示。该模型会将bug表示为一个关键词向量。若bug描述为一些实体如BugID,可以直接将这些实体作为关键词。但如果内容是文本形式,则需要引入一些理解自然语言的技术抽取关键词,这个技术我们考虑使用信息检索领域著名的TF-IDF技术进行提取。对已修复的bug进行预处理可以提高对bug和开发人员的管理,使用特征向量关键词则加快匹配的速度和提高了推荐的精准率。图2为文本生成关键词向量的过程,即“文本-分词-实体检测-关键词排名-关键词向量”。对于一个bug d,它的内容表示成一个关键词向量如下:
di={(e1,w1),(e2,w2),…}
其中,ei就是关键词,wi是关键词对应的权重。如果描述信息是文本形式,我们可以利用TF-IDF公式计算词的权重:
步骤2).构建安全性bug库。利用提取出来的关键词向量作为标签对安全性bug属性进行标签化管理及分类,构建相关的新的安全性bug属性库。图3为安全性bug库的构建流程,即从一些开源软件项目中选取更多的具有代表性的更大规模的具有完整演化历史的软件项目(如Eclipse,Mozilla,Bugzilla等)中已经修复的安全性bug作为研究对象,对每个安全性bug的描述信息、评论内容以及相关的修改模式进行分析,提取出关键词作为每个安全性bug的特征描述标签,构建成一个新的安全性bug属性库。
例如:Bugzilla项目中bug1291016“Heap-buffer-overflow innsCaseTransformTextRunFactory::TransformString”进行预处理后可以提取出的标签可以为“buffer overflow”、“check data”、“arises”、“csectype-bounds”、“Web”等。
步骤3).构建安全性bug开发人员库。对开发人员进行历史评论信息的语料库进行挖掘与分析,提取出开发人员历史活动相关的关键词,对关键词进行标签化定义及管理,创建开发人员信息库。开发人员信息库分为两个部分,一个是开发人员行为数据库,用于存放开发人员的一些历史行为信息;另外一个是开发人员属性数据库,用于存放开发人员的一些基本属性例如开发人员的能力等级和专攻的领域等。图4为软件项目安全性bug开发人员库的构架过程,即对开发人员历史行为信息(历史评论信息和历史修复信息)以及开发者属性信息进行预处理得到开发人员向量特征关键词,并使用带有特征关键词的开发者构建新的安全性bug开发人员库。
例如:我们针对Bugzilla项目中bug1291016中的评论人员信息进行分析可得到,开发人员Jonathan Kew历史行为信息标签有“confirm bugs”、“Web”等;根据作者的信息挖掘出的属性标签有“Irish”、“Web”、“Java”、“Firefox”等。讲这些信息作为开发人员Jonathan Kew的标签,使用带有标签的开发人员创建新的开发人员库。
步骤4).标签匹配筛选并显示初始推荐结果。利用标签的匹配能更快速更高效的在开发人员和bug之间构建联系,使用bug标签筛选出我们需要找到的开发人员。利用bug标签与开发人员的标签进行匹配筛选,同时找出一些与修改请求相似的Commit历史信息,分析出相关软件开发者的历史经验和修复质量,挑选出符合标签匹配成功或与历史修改请求相关的相似commit信息的bug,推荐出可以实现修改请求的开发人员。相同标签的bug我们可以认为是存在相似性的,根据标签匹配的数量计算出bug之间的相似度。Bug之间的相似度可以使用倒排表进行计算,建立bug-开发人员倒排表(即每个开发人员建立一个包含他历史完成修复的bug的列表),然后对于每个开发者,将他bug列表中的已修复bug两两在共现矩阵中加1。这一步把将要修复的bug相关的开发人员进行聚类筛选出来,形成了初级的推荐名单。
例如:Bugzilla项目中bug1291016的bug评论信息中我们可以筛选出参与了该bug讨论的开发人员,如“Jonathan Kew”、“Milan Sreckovic”、“Cameron McCormack”“LizHenry”等人;我们还从步骤(3)中创建的开发者人员库中筛选出兼有“Buffer overflow”、“Firefox”、“csectype-bounds”和“confirm bugs”的开发人员“AI Billings”、“WesKocher”和“Daniel Veditz”等人组成初级推荐名单。
步骤5).对初始推荐出的开发人员进行排名,同时给出关键的推荐解释。为了让开发人员认同我们的推荐结果,我们给出推荐解释使我们的推荐结果更透明,了解我们的推荐方法自然就增加了开发人员对本发明的信任度。我们使用多方面的因素所占的不同比重最后计算下来的最终结果来决定排序的先后。我们考虑到了待修复的bug与推荐出的初始开发人员已修复bug之间的相似相关性、开发人员的历史修复质量、开发人员经验和资历、开发人员评论数和活跃度等等。(我们还将挖掘出历史bug的评论信息来对开发人员的经验以及修复质量做一个评价。)其中Bug之间的相似度可以使用倒排表进行计算,建立bug-开发人员倒排表(即每个开发人员建立一个包含他历史完成修复的bug的列表),然后对于每个开发者,将他bug列表中的已修复bug两两在共现矩阵中加1。根据推荐结果我们可以给出的推荐解释有:①可能认识的人:步骤3中构建了开发者信息网络,我们从评论信息以及历史活动信息中还可以看出开发人员的社交网络信息,如果我们推荐出开发人员有过历史交流的开发人员,可以提高开发人员的信任度。②修复质量好:根据评论信息我们还可以挖掘出开发人员对bug的修复质量的优良情况。通过对开发人员信息的挖掘我们可以在Bugzilla中发现每个开发人员都有Statuses changed记录,通过计算Bugs filed、Comments made、Assigned to的数量以及Commented来评判开发人员的修复质量好坏。例如:针对开发人员Jonathan Kew(Bugs filed-804、Comments made-17222、Assigned to-1286)和Matt Wobensmith(Bugs filed-155、Comments made-1952、Assigned to-10)来说,我们判定Jonathan Kew的修复质量高于Matt Wobensmith③最适开发人员:根据步骤5中多种因素综合计算后排名第一的开发人员。例如:Bugzilla项目中bug1291016,我们综合标签匹配度、开发人员修复质量、开发人员已修复的bug与该bug的相似度等因素,推荐出Jonathan Kew为最适开发人员。
步骤6).显示最终推荐结果并推荐修复模式。使用机器学习中的分类算法从步骤(2)中所创建的安全性bug库中提取出已修复的bug的一些修改模式进行分析并构建一个相关安全性bug修改模式库,将其与修改请求进行相似度匹配,反馈分析并推荐出最适合的修改模式可供开发人员进行选择。根据不同属性的bug,给开发者推荐相适应的修复模式,高效的进行软件bug的修复。例如,针对Memory safety中的buffer overflow类型的bug我们推荐出的修复模式有:添加边界检查、更改缓冲区大小、替换API等。
Claims (1)
1.针对软件安全性BUG修复的个性化推荐方法,其特征在于如下步骤:
步骤1).提取特征向量关键词:在推荐软件开发者之前,使用向量空间模型对securitybug的属性内容进行预处理,根据TF-IDF技术计算bug描述中出现次数最多的词作为特征向量关键词;
步骤2).利用提取出来的关键词向量作为标签对安全性bug属性进行标签化管理及分类,构建带有关键字的个性化的安全性bug属性库;
步骤3).对开发人员历史评论信息的语料库和历史修复信息进行数据挖掘与分析,提取出开发人员历史活动相关的关键词,对关键词进行标签化定义及管理,创建开发人员信息库;
步骤4).利用bug标签与开发人员的标签进行匹配筛选,同时找出一些与修改请求相似的Commit历史信息,挑选出符合标签匹配成功或与历史修改请求相关的相似commit信息的bug,推荐出可以实现修改请求的开发人员;
步骤5).分析步骤4)筛选出来的bug,结合相关软件开发者的历史经验和修复质量这几个重要因素给定权值进行计算,对初始化推荐出的开发人员进行排名,同时给出关键的推荐解释;
步骤6).使用机器学习中的分类算法从步骤2)中所创建的安全性bug库中提取出已修复的bug的一些修改模式,进行分析并构建一个相关安全性bug修改模式库,将其与修改请求进行相似度匹配,反馈分析并推荐出最适合的修改模式可供推荐出来的开发人员进行选择。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710554336.6A CN107329770A (zh) | 2017-07-04 | 2017-07-04 | 针对软件安全性bug修复的个性化推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710554336.6A CN107329770A (zh) | 2017-07-04 | 2017-07-04 | 针对软件安全性bug修复的个性化推荐方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107329770A true CN107329770A (zh) | 2017-11-07 |
Family
ID=60197212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710554336.6A Pending CN107329770A (zh) | 2017-07-04 | 2017-07-04 | 针对软件安全性bug修复的个性化推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107329770A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408100A (zh) * | 2018-09-08 | 2019-03-01 | 扬州大学 | 一种基于多源数据的软件缺陷信息融合方法 |
CN110597490A (zh) * | 2019-08-26 | 2019-12-20 | 珠海格力电器股份有限公司 | 一种软件开发需求分配方法及装置 |
WO2019242108A1 (zh) * | 2018-06-20 | 2019-12-26 | 扬州大学 | 一种基于聚类分析的软件缺陷修复模板提取方法 |
CN110858369A (zh) * | 2018-08-24 | 2020-03-03 | 国信优易数据有限公司 | 一种数据价值评估***、方法及电子设备 |
US11321638B2 (en) | 2020-03-16 | 2022-05-03 | Kyndryl, Inc. | Interoperable smart AI enabled evaluation of models |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110219360A1 (en) * | 2010-03-05 | 2011-09-08 | Microsoft Corporation | Software debugging recommendations |
CN102262663A (zh) * | 2011-07-25 | 2011-11-30 | 中国科学院软件研究所 | 一种软件缺陷报告修复方法 |
CN103246603A (zh) * | 2013-03-21 | 2013-08-14 | 中国科学院软件研究所 | 一种缺陷跟踪***的软件缺陷报告自动分发方法 |
CN105426514A (zh) * | 2015-11-30 | 2016-03-23 | 扬州大学 | 个性化的移动应用app推荐方法 |
CN105446734A (zh) * | 2015-10-14 | 2016-03-30 | 扬州大学 | 一种基于软件开发历史开发人员网络关系构建方法 |
CN106126736A (zh) * | 2016-06-30 | 2016-11-16 | 扬州大学 | 面向软件安全性bug修复的软件开发者个性化推荐方法 |
-
2017
- 2017-07-04 CN CN201710554336.6A patent/CN107329770A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110219360A1 (en) * | 2010-03-05 | 2011-09-08 | Microsoft Corporation | Software debugging recommendations |
CN102262663A (zh) * | 2011-07-25 | 2011-11-30 | 中国科学院软件研究所 | 一种软件缺陷报告修复方法 |
CN103246603A (zh) * | 2013-03-21 | 2013-08-14 | 中国科学院软件研究所 | 一种缺陷跟踪***的软件缺陷报告自动分发方法 |
CN105446734A (zh) * | 2015-10-14 | 2016-03-30 | 扬州大学 | 一种基于软件开发历史开发人员网络关系构建方法 |
CN105426514A (zh) * | 2015-11-30 | 2016-03-23 | 扬州大学 | 个性化的移动应用app推荐方法 |
CN106126736A (zh) * | 2016-06-30 | 2016-11-16 | 扬州大学 | 面向软件安全性bug修复的软件开发者个性化推荐方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019242108A1 (zh) * | 2018-06-20 | 2019-12-26 | 扬州大学 | 一种基于聚类分析的软件缺陷修复模板提取方法 |
CN110858369A (zh) * | 2018-08-24 | 2020-03-03 | 国信优易数据有限公司 | 一种数据价值评估***、方法及电子设备 |
CN109408100A (zh) * | 2018-09-08 | 2019-03-01 | 扬州大学 | 一种基于多源数据的软件缺陷信息融合方法 |
CN110597490A (zh) * | 2019-08-26 | 2019-12-20 | 珠海格力电器股份有限公司 | 一种软件开发需求分配方法及装置 |
US11321638B2 (en) | 2020-03-16 | 2022-05-03 | Kyndryl, Inc. | Interoperable smart AI enabled evaluation of models |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Arpteg et al. | Software engineering challenges of deep learning | |
CN107329770A (zh) | 针对软件安全性bug修复的个性化推荐方法 | |
Sharma et al. | Cataloging github repositories | |
CN109389143A (zh) | 一种数据分析处理***及自动建模方法 | |
CN106776538A (zh) | 企业非标准格式文档的信息提取方法 | |
CN110377759A (zh) | 事件关系图谱构建方法及装置 | |
CN110968695A (zh) | 基于弱监督技术主动学***台 | |
US12001951B2 (en) | Automated contextual processing of unstructured data | |
CN110287329A (zh) | 一种基于商品文本分类的电商类目属性挖掘方法 | |
US11822590B2 (en) | Method and system for detection of misinformation | |
TWI772023B (zh) | 資訊處理裝置、資訊處理方法及資訊處理程序 | |
CN108549723A (zh) | 一种文本概念分类方法、装置及服务器 | |
Wibisono et al. | The use of big data analytics and artificial intelligence in central banking | |
Fazayeli et al. | Towards auto-labelling issue reports for pull-based software development using text mining approach | |
Radygin et al. | Application of text mining technologies in Russian language for solving the problems of primary financial monitoring | |
Badrinath et al. | An overview of global research trends in BIM from analysis of BIM publications | |
CN116737111B (zh) | 一种基于场景化的安全需求分析方法 | |
CN112001484A (zh) | 一种基于多任务深度学习的安全缺陷报告预测方法 | |
Mariano et al. | Improve Classification of Commits Maintenance Activities with Quantitative Changes in Source Code. | |
Bella et al. | Semi-supervised approach for recovering traceability links in complex systems | |
CN116739408A (zh) | 基于数据标签的电网调度安全监控方法、***及电子设备 | |
CN116795978A (zh) | 一种投诉信息处理方法、装置、电子设备及介质 | |
STRUCTURING | End2end unstructured data processing, confidential data structuring & storage using image processing, nlp, machine learning, and blockchain | |
Sönmez | Classifying common vulnerabilities and exposures database using text mining and graph theoretical analysis | |
Jin et al. | Diagnosis of corporate insolvency using massive news articles for credit management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171107 |