发明名称 一种通过代码质量评估预测开源软件维护工作量的方法
摘要 本发明涉及一种通过代码质量评估预测开源软件维护工作量的方法,首先获取所有表征开源软件代码质量的指标,然后引入方差膨胀因子去除关联度较大的指标,得到可用指标集合;对用指标集合中可用指标进行线性回归分析,得到开源软件的维护工作量与可用指标之间的函数关系式,利用该关系式即可预测开源软件的维护工作量。该方法中表征开源软件代码质量的指标容易获得,预测结果精准,适合大范围推广。
申请公布号 CN104809066A 申请公布日期 2015.07.29
申请号 CN201510218321.3 申请日期 2015.04.30
申请人 重庆大学 发明人 杨梦宁;罗杨洋;徐玲;洪明坚;葛永新;张小洪;杨丹
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 重庆信航知识产权代理有限公司 50218 代理人 穆祥维
主权项 一种通过代码质量评估预测开源软件维护工作量的方法,其特征在于:包括如下步骤:S1:获取所有表征开源软件代码质量的指标,设所有指标构成指标集合,该指标集合中共有Q个元素,q<sub>j</sub>为指标集合的元素,表示指标集合中第j个指标;S2:去掉指标集合中关联度高的指标,方法如下:1)设j=1;2)根据公式(4)计算指标q<sub>j</sub>与指标集合中其他Q‑1个指标的方差膨胀因子VIF<sub>j</sub>;<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>VIF</mi><mi>j</mi></msub><mo>=</mo><mfrac><mn>1</mn><msub><mi>TOL</mi><mi>j</mi></msub></mfrac><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>-</mo><msubsup><mi>R</mi><mi>j</mi><mn>2</mn></msubsup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000709672510000011.GIF" wi="1231" he="179" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>R</mi><mi>j</mi></msub><mo>=</mo><mover><msub><mi>q</mi><mi>j</mi></msub><mo>&OverBar;</mo></mover><mo>-</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>Q</mi></munderover><mover><msub><mi>q</mi><mi>j</mi></msub><mo>&OverBar;</mo></mover><mo>-</mo><mover><msub><mi>q</mi><mi>j</mi></msub><mo>&OverBar;</mo></mover></mrow><mrow><mi>Q</mi><mo>-</mo><mn>1</mn></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000709672510000012.GIF" wi="1276" he="270" /></maths>其中,R<sub>j</sub>表示第j个指标和指标集合中其余指标的关联系数,<img file="FDA0000709672510000013.GIF" wi="75" he="105" />表示指标q<sub>j</sub>的值;3)判断方差膨胀因子VIF<sub>j</sub>与10之间的关系,如果VIF<sub>j</sub>&gt;10,则指标q<sub>j</sub>为待去除指标,否则为可用指标;4)令j=j+1;5)如果j≤Q,则返回步骤2),否则将所有待去除指标放入待去除指标集合中,将所有可用指标放入可用指标集合中,并执行下一步;6)待去除指标集合共有B个元素,b<sub>f</sub>为待去除指标集合的元素,表示待去除指标集中第f个待去除指标;判断待去除指标集中的元素数量是否为0,如果为0,则执行步骤16),否则执行下一步;7)令f=1;8)根据公式(6)计算待去除指标b<sub>f</sub>与待去除指标集合中B‑1个待去除指标的方差膨胀因子VIF<sub>f</sub>:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>VIF</mi><mi>f</mi></msub><mo>=</mo><mfrac><mn>1</mn><msub><mi>TOL</mi><mi>f</mi></msub></mfrac><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>-</mo><msubsup><mi>R</mi><mi>f</mi><mn>2</mn></msubsup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000709672510000021.GIF" wi="1244" he="177" /></maths><maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>R</mi><mi>f</mi></msub><mo>=</mo><mover><msub><mi>b</mi><mi>f</mi></msub><mo>&OverBar;</mo></mover><mo>-</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>f</mi><mo>=</mo><mn>1</mn></mrow><mi>B</mi></munderover><mover><msub><mi>b</mi><mi>f</mi></msub><mo>&OverBar;</mo></mover><mo>-</mo><mover><msub><mi>b</mi><mi>f</mi></msub><mo>&OverBar;</mo></mover></mrow><mrow><mi>B</mi><mo>-</mo><mn>1</mn></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000709672510000022.GIF" wi="1261" he="253" /></maths>其中,R<sub>f</sub>表示第f个待去除指标和待去除指标集合中其余待去除指标的关联系数,<img file="FDA0000709672510000023.GIF" wi="78" he="108" />表示待去除指标b<sub>f</sub>的值;9)判断方差膨胀因子VIF<sub>f</sub>与10之间的关系,如果VIF<sub>f</sub>&gt;10,则执行步骤11);否则将待去除指标b<sub>f</sub>标为待移动,执行下一步;10)令f=f+1,11)f≤Q,则返回步骤8),否则执行下一步;12)判断标记为待移动的待去除指标的数量是否为0,如果为0则执行步骤15),否则执行下一步;13)将所有标记为待移动的待去除指标移入可用指标集合,更新待去除指标集合和可用指标集合的元素,同时更新待去除指标集中元素的个数,执行下一步;14)判断当前待移除指标集合中的元素数量是否为0,如果为0,执行步骤16),否则返回步骤7);15)去除当前待去除指标集合中的所有待去除指标,并执行下一步;16)输出当前可用指标集合;S3:设可用指标集合共有P个元素,p<sub>i</sub>为可用指标集合的元素,表示可用指标集合中第i个可用指标,对可用指标集合中P个可用指标进行回归分析,得到开源软件的维护工作量与可用指标的回归估计式:1)获取时间段T内每个时间点t开源软件的维护工作量y<sub>t</sub>;2)然后以时间点t为横坐标,以开源软件的维护工作量y<sub>t</sub>为纵坐标绘图,得到一条折线;3)将上述折线采用式(8)的形式表达:y=A<sub>1</sub>p<sub>1</sub>+A<sub>2</sub>p<sub>2</sub>+A<sub>3</sub>p<sub>3</sub>+...+A<sub>k</sub>p<sub>i</sub>+E        (8);4)采用线性回归方法,通过时间段T内的时间点t和时间点t对应的开源软件的维护工作量y<sub>t</sub>求得式(8)中的系数A<sub>1</sub>,A<sub>2</sub>,A<sub>2</sub>,...,A<sub>k</sub>和E;S4:根据得到式(8),在得知可用指标p<sub>i</sub>后,即可预测该开源软件的维护工作量y。
地址 400044 重庆市沙坪坝区沙正街174号