CN109408100B - 一种基于多源数据的软件缺陷信息融合方法 - Google Patents
一种基于多源数据的软件缺陷信息融合方法 Download PDFInfo
- Publication number
- CN109408100B CN109408100B CN201811046975.2A CN201811046975A CN109408100B CN 109408100 B CN109408100 B CN 109408100B CN 201811046975 A CN201811046975 A CN 201811046975A CN 109408100 B CN109408100 B CN 109408100B
- Authority
- CN
- China
- Prior art keywords
- information
- bug
- question
- answer
- software
- 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
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于多源数据的软件缺陷信息融合方法,该方法针对新的bug报告,通过对bug信息进行按因素标签化处理,采用基于多因素查询的信息检索方法检索Stack OverFlow中的问答信息,将获取到的Top‑N问答信息补全新的bug报告,然后按照多因素查询检索软件缺陷库,得到与新的软件缺陷相关性高的软件缺陷信息,并将它们进行软件缺陷信息融合。该方法结合了软件缺陷库和Stack OverFlow中的相关bug信息,能够有效解决新的软件缺陷信息稀疏的问题,从而帮助软件开发和维护人员更准确地理解软件缺陷。
Description
技术领域
本发明属于软件维护领域,特别是一种基于多源数据的软件缺陷信息融合方法。
背景技术
软件开发人员和维护人员为了解决自己所遇到的一些新的软件缺陷,通常会需要借助诸如Bugzilla的软件缺陷库来对软件缺陷相关信息进行搜索。但是,这些软件缺陷库大多数采用基于传统的关系数据库的搜索方法,搜索得到的结果虽然包含了软件缺陷大量的信息和属性,但是软件缺陷之间的联系不是特别的明显。而且,有时候虽然可以从软件缺陷库中检索到关于新的软件缺陷的信息,但是这些信息却很少,不足以帮助软件开发人员和维护人员更好地理解软件缺陷,从而找到能够修复软件缺陷的方法。此外,在缺陷库中仅仅依靠单个因素进行关键词检索的方法所得到的搜索结果并不准确,常常与自己所需要的问题相关性不大,对于解决新的软件缺陷并没有很大的帮助。这样的搜索方式使得搜索者很难找到自己真正需要的信息,耗时耗力。
发明内容
本发明所解决的技术问题在于提供一种利用多源数据对新的软件缺陷信息进行信息融合,从而有效地解决新的软件缺陷信息稀疏问题的方法。
实现本发明目的的技术解决方案为:一种基于多源数据的软件缺陷信息融合方法,包括以下步骤:
步骤1、针对一个新的软件bug报告,对bug信息进行标签化处理;
步骤2、对Stack OverFlow问答信息进行预处理,确定问答信息的特征词;
步骤3、在预处理后的Stack OverFlow问答信息中对标签化的bug信息进行多因素查询,并利用信息检索方法确定语义相关性,确定候选问答信息数据集A;
步骤4、对候选问答信息数据集A中的信息数据进行排序,获得Top-N问答信息,之后利用Top-N问答信息补全bug信息,获得新的bug信息m;
步骤5、对步骤4新的bug信息m进行标签化处理,并对步骤3获得的候选问答信息数据集A进行去停用词、词干化预处理;
步骤6、在步骤5预处理后的候选问答信息数据集A中对标签化的新的bug信息m进行多因素查询,确定与新的bug信息m相关的问答信息,并利用该问答信息补全bug信息m,获得新的bug信息m';
步骤7、对软件缺陷库中的缺陷信息进行标签化处理,并对步骤6获得的新的bug信息m'进行标签化,确定标签信息;
步骤8、在步骤7标签化后的软件缺陷库中对标签化的新的bug信息m'进行多因素查询,利用信息检索方法确定相关性最高的Top-N软件缺陷,并将得到的Top-N软件缺陷与新的bug信息m'融合生成关于缺陷的补全信息,完成软件缺陷信息融合。
本发明与现有技术相比,其显著优点:1)本发明的方法中根据缺陷信息中存在的因素对软件缺陷信息进行标签化处理,直观易懂,以便软件开发人员和维护人员快速了解bug信息;2)本发明的方法中对Stack OverFlow的问答信息进行预处理,确定问答数据的特征词,以便后续进行处理,提高了数据处理的效率;3)本发明的方法中采用多因素查询的方法,软件开发人员和维护人员可以根据自己的实际需求进行查询,满足需求的同时节约时间;4)本发明的方法中首先通过在Stack OverFlow中检索关于新缺陷的信息,通过相关的问答信息来对新的软件缺陷进行知识补全,然后再通过补全后的新的软件缺陷信息去软件缺陷库进行检索,从而获取推荐的软件缺陷,并进行信息融合,大大提高了理解并修复新的软件缺陷的可能性与可行性,有利于帮助软件开发者和维护者更直观、快速、准确的理解软件缺陷信息,从而修复相应的软件缺陷。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明基于多源数据的软件缺陷信息融合方法的流程图。
图2为本发明实施例中bug 915603报告信息图。
图3为本发明实施例中确定的候选问答信息数据集A的部分结果示意图。
图4为本发明实施例中获得的Top-3问答信息示意图。
图5是本发明中补全bug报告信息的问答推理图。
具体实施方式
结合图1,本发明基于多源数据的软件缺陷信息融合方法,包括以下步骤:
步骤1、针对一个新的软件bug报告,对bug信息进行标签化处理;其中,对bug信息进行标签化处理具体为:
根据bug信息中的因素对bug的信息进行标签化处理,其中,因素包括:title、product、component、status、reporter、description、summary;具体为:
步骤1-1、根据因素title、product、component、status、reporter、description、summary对软件bug报告中的bug信息进行语义分析,提取bug信息中每个因素在语义层面上的重要信息;其中,重要信息为bug产生的原因以及过程;
步骤1-2、根据步骤1-1获取的bug信息的重要信息,抽取每个因素的关键词,具体为:根据步骤1-1获取的bug信息的重要信息,利用基于语义的关键词抽取算法、朴素贝叶斯模型抽取每个因素的关键词。
步骤2、对Stack OverFlow问答信息进行预处理,确定问答信息的特征词。其中,对对Stack OverFlow问答信息进行预处理,具体为:
步骤2-1、从Stack OverFlow问答信息中提取标题和正文数据集;
步骤2-2、对提取到的标题和正文数据集进行去停用词和词干化处理,完成StackOverFlow问答信息的预处理。
步骤3、在预处理后的Stack OverFlow问答信息中对标签化的bug信息进行多因素查询,并利用信息检索方法如PMI和NGD确定语义相关性,确定候选问答信息数据集A。其中,多因素查询具体为:
从title、product、component、status、reporter、description、summary因素中选取一个以上的因素,对标签化的bug信息进行检索,获得与所选因素对应的信息。例如,对于一个新的软件缺陷报告,如果用户的关注点在于product、component这两个因素,那么用户在检索的时候,便可以通过输入和新的软件缺陷相同的product、component来进行检索以便得到自己想要的结果。
PMI为两个词之间信息重叠或统计依赖的信息理论度量,形式上,两个单词w1和w2之间的PMI可以被测量为它们在相同文本中出现的概率与它们单独出现的概率。假设集合包含N个文档,PMI可以由以下公式(1)计算:
式中,C(w1,w2)为包含w1和w2的集合中的文档数,C(w1)、C(w2)分别为包含w1和w2的文档数,P(w1,w2)为同时包含单词w1和w2的文档概率,P(w1)、P(w2)分别为包含单词w1的文档概率和包含单词w2的文档概率。
NGD使用Google计数来设计基于信息距离和Kolmogorov复杂度的单词之间的语义相关性度量。这种方法基于这样一个事实:网络中单词的统计共现反映了它们在社会中的当前相似性状态,从而可以表明它们的相关性。形式上,为了使用NGD估计两个单词(即w1和w2)之间的语义距离,测量两个单词之间的语义相关性如公式(2)所示:
式中,D1和D2分别为包含w1和w2的文档数,|D1∩D2|为包含w1和w2的文档数。
步骤4、根据popularity对候选问答信息数据集A中的信息数据按照从大到小进行排序,获得Top-N问答信息,之后利用Top-N问答信息将bug报告中缺失或者不全的bug信息按照问答的形式进行补全,获得新的bug信息m;其中,popularity为问答信息的投票数。候选问答数据集A来源于Stack OverFlow中的问答信息,和Stack OverFlow中的问答信息一样,在每一条问答数据上面有用户针对该问答信息的投票数,在本方法中的popularity由该投票数定义,投票数越大,popularity则越高。
步骤5、对步骤4新的bug信息m进行标签化处理,并对步骤3获得的候选问答信息数据集A进行去停用词、词干化预处理。
步骤6、在步骤5预处理后的候选问答信息数据集A中对标签化的新的bug信息m进行多因素查询,确定与新的bug信息m相关的问答信息,并利用该问答信息补全bug信息m,获得新的bug信息m'。
步骤7、对软件缺陷库中的缺陷信息进行标签化处理,并对步骤6获得的新的bug信息m'进行标签化,确定标签信息;
步骤8、在步骤7标签化后的软件缺陷库中对标签化的新的bug信息m'进行多因素查询,利用信息检索方法确定相关性最高的Top-N软件缺陷,并将得到的Top-N软件缺陷与新的bug信息m'融合生成关于缺陷的补全信息,完成软件缺陷信息融合。
下面结合实施例对本发明作进一步详细地描述。
实施例
本发明一种基于多源数据的软件缺陷信息融合方法,包括以下内容:
1、新的软件缺陷信息标签化处理
针对一个新的bug报告bug 1093582,如图2所示,对bug的信息按因素进行标签化,使用若干标签来描述bug信息。其中,因素包括:title、product、component、status、reporter、description、summary等信息。首先,对要处理的软件缺陷报告的进行详细分析,根据因素title、product、component、status、reporter、description、summary对软件bug报告中的bug信息进行语义分析,提取bug信息中每个因素在语义层面上的重要信息;然后综合考虑TF*IDF、First occurrence、Length和Coherence四个特征,建立朴素贝叶斯模型来进行关键词的抽取。抽取结果如下表1所示。
表1bug 1093582信息标签化表
因素 | 标签 |
Title | Updating、throws、log in、using、Bugzilla |
Product | bugzilla.mozilla.org |
Component | API |
Reporter | David Lawrence |
2、针对Stack OverFlow里面的问答信息,从中提取标题和正文数据集,然后将提取的文本进行去停用词、词干化操作,确定问答数据的特征词,如下表2所示。通过使用beautifulsoup开源工具爬取提取Stack OverFlow里面的问答信息,使用NLTK分词对文本进行分词,然后引用停用词表,去除出现频率高却没有实际意义的词,并且将同一个词的不同表达形式归一化,以便后续的文本分析。
表2部分问答数据特征词表
3、对标签化的bug信息在预处理过后的Stack OverFlow问答信息中进行多因素查询,采用信息检索方法确定语义相关性,从而确定候选问答信息数据集A,部分结果如图3所示。这里使用的信息检索方法主要有PMI和NGD。
4、将候选问答信息数据集A按照popularity进行排序,得到Top-5问答信息如图4所示,利用Top-5问答信息补全bug信息m,m的部分信息如下表3所示。其中,popularity主要由该问答信息的投票数来决定。这里所使用的补全方法是通过将bug报告中缺失或者不全的信息按照问答的形式在进行补全。我们将挑选出来的Top-5问答信息做成一个知识图谱,将bug报告中的信息进行按因素提问,通过概率模型来识别问句中的实体,然后在知识图谱上做逻辑推理,得到最终的答案来补全bug报告信息。具体逻辑推理过程如图5所示,用户的关注点落在component和reporter,因此推理过程根据component和reporter进行推理,最终得出相关的bug id:6020、13144以及289441。
表3m的部分信息表
5、将补全的bug信息m进行按因素标签化处理,并将上述得到的候选问答信息数据集A进行去停用词、词干化等预处理操作。通过使用NLTK分词对文本进行分词,然后引用停用词表,去除出现频率高却没有实际意义的词,并且将同一个词的不同表达形式归一化。
6、将标签化的补全bug信息m在预处理过后的候选问答信息数据集A中进行多因素查询确定与bug相关的问答信息,并使用这些问答信息补全bug报告,获得新的bug信息m',m'部分信息如下表4所示。这里使用的多因素查询方法也是信息检索的方法。
表4m'的部分信息表
7、针对软件缺陷库,对缺陷信息进行按因素标签化处理,得到缺陷的标签化描述,并将补全的bug信息m'进行按因素标签化,确定标签信息。
8、对标签化的补全bug信息m'在标签化的软件缺陷库中采用多因素查询的方法,确定相关性最高的Top-3的软件缺陷,如下表5所示:
表5推荐的bug报告信息表
Bug ID | Title |
537221 | Custom coordinates for StructuredTextEditor.selectAndReveal |
537190 | [CSS3]Add support for CSS Grid Layout Module |
537206 | CSS Formatter removes line breaks between selectors |
并将得到的Top-3软件缺陷与新的bug信息m'融合生成软件缺陷的补全信息,部分结果如下表6所示,以便软件开发人员以及维护人员能够更直观、快速、准确的获取软件缺陷信息,从而详尽地理解软件缺陷信息以便找出切实可行的修复方案。
表6bug报告补全信息表
本发明的方法结合了软件缺陷库和Stack OverFlow中的相关bug信息,有效地解决新的软件缺陷信息稀疏的问题,能帮助软件开发和维护人员更准确、更直观、更快速地理解软件缺陷信息,从而修复相应的软件缺陷。
Claims (9)
1.一种基于多源数据的软件缺陷信息融合方法,其特征在于,包括以下步骤:
步骤1、针对一个新的软件bug报告,对bug信息进行标签化处理;
步骤2、对Stack OverFlow问答信息进行预处理,确定问答信息的特征词;
步骤3、在预处理后的Stack OverFlow问答信息中对标签化的bug信息进行多因素查询,并利用信息检索方法确定语义相关性,从而确定候选问答信息数据集A;
步骤4、对候选问答信息数据集A中的信息数据进行排序,获得Top-N问答信息,之后利用Top-N问答信息补全bug信息,获得新的bug信息m;
步骤5、对步骤4新的bug信息m进行标签化处理,并对步骤3获得的候选问答信息数据集A进行去停用词、词干化预处理;
步骤6、在步骤5预处理后的候选问答信息数据集A中对标签化的新的bug信息m进行多因素查询,确定与新的bug信息m相关的问答信息,并利用该问答信息补全bug信息m,获得新的bug信息m';
步骤7、对软件缺陷库中的缺陷信息进行标签化处理,并对步骤6获得的新的bug信息m'进行标签化处理;
步骤8、在步骤7标签化后的软件缺陷库中对标签化的新的bug信息m'进行多因素查询,利用信息检索方法确定相关性最高的Top-N软件缺陷,并将得到的Top-N软件缺陷与新的bug信息m'融合生成关于缺陷的补全信息,完成软件缺陷信息融合。
2.根据权利要求1所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤1所述对bug信息进行标签化处理为:
根据bug信息中的因素对bug的信息进行标签化处理,其中,所述因素包括:title、product、component、status、reporter、description、summary;具体为:
步骤1-1、根据因素title、product、component、status、reporter、description、summary对软件bug报告中的bug信息进行语义分析,提取bug信息中每个因素在语义层面上的重要信息;
步骤1-2、根据步骤1-1获取的bug信息的重要信息,抽取每个因素的关键词。
3.根据权利要求2所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤1-1所述重要信息为bug产生的原因以及过程。
4.根据权利要求2所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤1-2所述根据步骤1-1获取的bug信息的重要信息,抽取每个因素的关键词具体为:根据步骤1-1获取的bug信息的重要信息,利用基于语义的关键词抽取算法、朴素贝叶斯模型抽取每个因素的关键词。
5.根据权利要求1所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤2所述对Stack OverFlow问答信息进行预处理,具体为:
步骤2-1、从Stack OverFlow问答信息中提取标题和正文数据集;
步骤2-2、对提取到的标题和正文数据集进行去停用词和词干化处理,完成StackOverFlow问答信息的预处理。
6.根据权利要求2所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤3所述多因素查询具体为:
从所述title、product、component、status、reporter、description、summary因素中选取一个以上的因素,对标签化的bug信息进行检索,获得与所选因素对应的信息。
7.根据权利要求1所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤3所述信息检索方法为PMI和NGD。
8.根据权利要求1所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤4所述对候选问答信息数据集A中的数据进行排序具体为:
根据popularity对候选问答信息数据集A中的数据按照从大到小进行排序,其中popularity为问答信息的投票数。
9.根据权利要求1所述的基于多源数据的软件缺陷信息融合方法,其特征在于,步骤4所述补全bug信息具体为使用问答数据将bug报告中缺失或者不全的bug信息进行补全。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811046975.2A CN109408100B (zh) | 2018-09-08 | 2018-09-08 | 一种基于多源数据的软件缺陷信息融合方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811046975.2A CN109408100B (zh) | 2018-09-08 | 2018-09-08 | 一种基于多源数据的软件缺陷信息融合方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408100A CN109408100A (zh) | 2019-03-01 |
CN109408100B true CN109408100B (zh) | 2021-06-22 |
Family
ID=65464639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811046975.2A Active CN109408100B (zh) | 2018-09-08 | 2018-09-08 | 一种基于多源数据的软件缺陷信息融合方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408100B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110111905B (zh) * | 2019-04-24 | 2021-09-03 | 云知声智能科技股份有限公司 | 一种医疗知识图谱的构建系统和构建方法 |
CN110880022A (zh) | 2019-11-12 | 2020-03-13 | 北京小米智能科技有限公司 | 标注方法、装置及存储介质 |
CN111309865B (zh) * | 2020-02-12 | 2024-03-22 | 扬州大学 | 相似缺陷报告推荐方法、系统、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329770A (zh) * | 2017-07-04 | 2017-11-07 | 扬州大学 | 针对软件安全性bug修复的个性化推荐方法 |
CN107832781B (zh) * | 2017-10-18 | 2021-09-14 | 扬州大学 | 一种面向多源数据的软件缺陷表示学习方法 |
-
2018
- 2018-09-08 CN CN201811046975.2A patent/CN109408100B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109408100A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019214245A1 (zh) | 一种信息推送方法、装置、终端设备及存储介质 | |
CN112800113B (zh) | 一种基于数据挖掘分析技术的招投标审计方法及系统 | |
US8433140B2 (en) | Image metadata propagation | |
CN109408100B (zh) | 一种基于多源数据的软件缺陷信息融合方法 | |
Xie et al. | Detecting duplicate bug reports with convolutional neural networks | |
Liu et al. | DAGOBAH: an end-to-end context-free tabular data semantic annotation system | |
US20170262429A1 (en) | Collecting Training Data using Anomaly Detection | |
CN111026671A (zh) | 测试用例集构建方法和基于测试用例集的测试方法 | |
US20080154875A1 (en) | Taxonomy-Based Object Classification | |
US20080201131A1 (en) | Method and apparatus for automatically discovering features in free form heterogeneous data | |
CN111427775B (zh) | 一种基于Bert模型的方法层次缺陷定位方法 | |
CN110910175B (zh) | 一种旅游门票产品画像生成方法 | |
Zhang et al. | On-the-fly table generation | |
CN112395881B (zh) | 物料标签的构建方法、装置、可读存储介质及电子设备 | |
Shekarpour et al. | RQUERY: rewriting natural language queries on knowledge graphs to alleviate the vocabulary mismatch problem | |
CN111291152A (zh) | 案例文书的推荐方法、装置、设备及存储介质 | |
Ujwal et al. | Classification-based adaptive web scraper | |
CN110688572A (zh) | 冷启动状态下搜索意图的识别方法 | |
Vandic et al. | A semantic clustering-based approach for searching and browsing tag spaces | |
CN111475464A (zh) | 一种自动发现挖掘Web组件指纹的方法 | |
CN114328844A (zh) | 一种文本数据集管理方法、装置、设备及存储介质 | |
CN115328945A (zh) | 数据资产的检索方法、电子设备及计算机可读存储介质 | |
CN113779981A (zh) | 一种基于指针网络和知识图谱的推荐方法及装置 | |
CN109299381B (zh) | 一种基于语义概念的软件缺陷检索和分析系统及方法 | |
CN112925874A (zh) | 基于案例标记的相似代码搜索方法及系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |