发明名称 一种工作量感知的bug定位技术有效性评价方法
摘要 本发明提供一种工作量感知的bug定位技术有效性评价方法,包括下列步骤:1)软件bug报告信息的收集;2)源代码文件工作量的收集;3)源代码文件序列的生成;4)评价指标的计算;5)bug定位技术的分析与评价。本发明解决了目前存在的bug定位技术有效性评价方法中没有考虑开发人员审查工作量的问题,更能体现一个bug定位技术在使用过程中是否可以减轻开发人员的工作量,是否具有实用价值,从而使得评价结果更加全面和可信。
申请公布号 CN105786704A 申请公布日期 2016.07.20
申请号 CN201610098327.6 申请日期 2016.02.22
申请人 南京大学 发明人 周毓明;赵斐;杨已彪;卢红敏;徐宝文
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 代理人
主权项 一种工作量感知的bug定位技术有效性评价方法,其特征在于,利用从软件bug追踪系统中提取的已被修复的bug报告的信息,以及从软件版本控制系统中提取的源代码文件的工作量信息,结合bug定位技术的定位结果,为bug定位技术计算工作量感知的评价指标,帮助研究人员判断一个bug定位技术在工作量感知的条件下是否具有实用价值;该方法包括下列步骤:1)软件bug报告信息的采集,从软件缺陷追踪系统中,收集已被修复的bug报告的信息,包括摘要、描述、bug报告提交和修复的时间、修复bug报告的那次源代码提交的标识符和所修改的源代码文件名等信息;定义1:源代码提交是版本控制系统中开发人员提交代码修改所记录的历史信息,包含提交标识符、提交日期、开发人员以及受影响文件等信息;2)源代码文件工作量的收集,根据步骤1)中收集的bug报告的信息,从版本控制系统中获取bug报告被修复前的代码快照,并提取出代码快照中所有源代码文件的文件名及源代码行数信息;定义1:代码快照是在某一时刻代码仓库的状态,包括代码仓库中包含哪些源代码文件及源代码文件的内容等信息;3)源代码文件序列的生成,对一个需要评价的bug定位技术,利用其为步骤2)中得到的每一个bug报告生成相应的源代码文件序列;定义1:源代码文件序列是与bug报告相应的代码快照中源代码文件的排序;利用bug定位技术为代码快照中的每个源代码文件计算其与bug报告的相似值,再根据相似值将源代码文件降序排序;同时,每个源代码文件会被打上一个标签,表示这个源代码文件是否与bug报告相关;定义2:源代码文件与bug报告相关是指源代码文件被修改以修复bug报告中所描述的bug;4)评价指标的计算,根据步骤3)得到的bug报告的源代码文件序列,为bug定位技术分别计算MLE、MAEP、MFEP、MLEP和EffortPrecision@k等评价指标;定义1:末位平均工作量(Mean Last Effort,MLE)是bug定位技术找到最后一个相关的代码文件平均所需要的工作量;值越小,表示在工作量感知下bug定位技术性能越好,计算公式如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>M</mi><mi>L</mi><mi>E</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mo>|</mo><mi>S</mi><mo>|</mo></mrow></mfrac><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>q</mi><mi>j</mi></msub></msubsup><mi>L</mi><mi>O</mi><mi>C</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow>]]></math><img file="FSA0000127050200000011.GIF" wi="660" he="126" /></maths>式中MLE为末位平均工作量,n为在评价过程中用到的所有bug报告的数目,|S|代表在源代码文件序列中能找到出错代码文件的bug报告的个数(|S|≤n),q<sub>j</sub>是第j个bug报告所对应的源代码文件序列中最后一个相关文件所在的位置,LOC(f<sub>ij</sub>)为第j个报告所对应的源代码文件序列中第i个文件的代码量;定义2:平均工作量精度均值(Mean Average Effort Precision,MAEP)是与最优排序相比bug定位技术达到相同召回率时的相对工作量;值越大,表示在工作量感知下bug定位技术性能越好;令r<sub>j</sub>代表第j个bug报告,假定:R<sub>j</sub>={f|f与r<sub>j</sub>相关},即R<sub>j</sub>是由r<sub>j</sub>相关的文件构成的集合;计算公式如下:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>M</mi><mi>A</mi><mi>E</mi><mi>P</mi><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msub><mi>AvgEP</mi><mi>j</mi></msub></mrow>]]></math><img file="FSA0000127050200000021.GIF" wi="540" he="126" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>AvgEP</mi><mi>j</mi></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mo>|</mo><msub><mi>P</mi><mi>j</mi></msub><mo>|</mo></mrow></mfrac><munder><mo>&Sigma;</mo><mrow><mi>p</mi><mo>&Element;</mo><msub><mi>P</mi><mi>j</mi></msub></mrow></munder><mo>{</mo><mi>E</mi><mi>f</mi><mi>f</mi><mi>o</mi><mi>r</mi><mi>t</mi><mi>Pr</mi><mi>e</mi><mi>c</mi><mi>i</mi><mi>s</mi><mi>i</mi><mi>o</mi><mi>n</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>p</mi><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FSA0000127050200000022.GIF" wi="908" he="156" /></maths><maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>E</mi><mi>f</mi><mi>f</mi><mi>o</mi><mi>r</mi><mi>t</mi><mi>P</mi><mi>r</mi><mi>e</mi><mi>c</mi><mi>i</mi><mi>s</mi><mi>i</mi><mi>o</mi><mi>n</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>p</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msub><mi>ce</mi><mi>j</mi></msub><mo>&lsqb;</mo><mi>k</mi><mo>&rsqb;</mo></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>p</mi></msubsup><mi>L</mi><mi>O</mi><mi>C</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FSA0000127050200000023.GIF" wi="840" he="137" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>k</mi><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mi>p</mi></munderover><mi>I</mi><mi>s</mi><mi>Re</mi><mi>l</mi><mi>e</mi><mi>v</mi><mi>a</mi><mi>n</mi><mi>t</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow>]]></math><img file="FSA0000127050200000024.GIF" wi="458" he="169" /></maths>式中MAEP为与最优排序相比达到相同召回率时的相对工作量;AvgEP<sub>j</sub>为平均工作量精度,用来描述第j个bug报告的定位有效性;EffortPrecision(j,p)表示第j个bug报告对应的源代码文件序列中的第p个位置处的工作量精度;ce是一个数组,表示R<sub>j</sub>按照代码行从小到大排序后得到的“最优序列”(即代码行小的相关文件排在前面)中累积的代码行;P<sub>j</sub>为在给定的待评估排序中与r<sub>j</sub>真实相关的文件位置集合;对<img file="FSA0000127050200000026.GIF" wi="154" he="56" />IsRelevant(p)为1代表位置p处为相关文件、为0表示不相关文件;定义3:首位工作量精度均值(Mean First Effort Precision,MFEP)是bug定位技术找到第一个相关源代码文件所需花费的平均工作量;值越大,表示在工作量感知下bug定位技术性能越好,计算公式如下:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>M</mi><mi>F</mi><mi>E</mi><mi>P</mi><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><mfrac><mrow><msub><mi>ce</mi><mi>j</mi></msub><mo>&lsqb;</mo><mn>1</mn><mo>&rsqb;</mo></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>q</mi><mi>j</mi></msub></msubsup><mi>L</mi><mi>O</mi><mi>C</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FSA0000127050200000025.GIF" wi="633" he="143" /></maths>式中,MFEP为找到第一个相关源代码文件所需花费的平均工作量,ce<sub>j</sub>[1]即为第j个bug报告关联的最小的文件代码行数,q<sub>j</sub>是第j个bug报告所对应的源代码文件序列中第一个相关文件所在的位置;定义4:末位工作量精度均值(Mean Last Effort Precision,MLEP)是bug定位技术为找到最后一个相关源代码文件所需花费的平均工作量;值越大,表示在工作量感知下bug定位技术性能越好,计算公式如下:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mi>M</mi><mi>L</mi><mi>E</mi><mi>P</mi><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><mfrac><mrow><msub><mi>ce</mi><mi>j</mi></msub><mo>&lsqb;</mo><mo>|</mo><msub><mi>R</mi><mi>j</mi></msub><mo>|</mo><mo>&rsqb;</mo></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>q</mi><mi>j</mi></msub></msubsup><mi>L</mi><mi>O</mi><mi>C</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FSA0000127050200000031.GIF" wi="633" he="142" /></maths>式中,n表示总共有n个bug报告,|R<sub>j</sub>|表示第j个bug报告总共有|R<sub>j</sub>|个关联的文件,ce<sub>j</sub>[|R<sub>j</sub>|]表示第j个bug报告关联的所有文件的代码行数的总和,q<sub>j</sub>是第j个bug报告所对应的源代码文件序列中最后一个相关文件所在的位置;定义5:top‑k工作量精度(EffortPrecision@k)是bug定位技术在推荐前k个代码文件时的工作量精度;值越大,表示在工作量感知下bug定位技术性能越好,计算公式如下:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>E</mi><mi>f</mi><mi>f</mi><mi>o</mi><mi>r</mi><mi>t</mi><mi>P</mi><mi>r</mi><mi>e</mi><mi>c</mi><mi>i</mi><mi>s</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo></mo><mi>k</mi><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mfrac><mrow><msub><mi>ce</mi><mi>j</mi></msub><mo>&lsqb;</mo><msub><mi>j</mi><mi>k</mi></msub><mo>&rsqb;</mo></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>k</mi></msubsup><mi>L</mi><mi>O</mi><mi>C</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FSA0000127050200000032.GIF" wi="938" he="170" /></maths><maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>j</mi><mi>k</mi></msub><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>k</mi></msubsup><mi>I</mi><mi>s</mi><mi>Re</mi><mi>l</mi><mi>e</mi><mi>v</mi><mi>a</mi><mi>n</mi><mi>t</mi><mrow><mo>(</mo><msub><mi>f</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow>]]></math><img file="FSA0000127050200000033.GIF" wi="604" he="123" /></maths>式中,EffortPrecision@k为推荐前k个代码文件时的工作量精度,j<sub>k</sub>表示对第j个bug报告从top‑k个文件中总共找出j<sub>k</sub>个相关的源代码文件;5)Bug定位技术的分析与评价:研究人员为需要对比的bug定位技术分别计算相应的MLE、MAEP、MFEP、MLEP和EffortPrecision@k值,并对它们的结果进行比对分析,以判断各方法的定位效果是否存在明显差异。
地址 210093 江苏省南京市鼓楼区汉口路22号