[发明专利]一种基于代码圈复杂度度量的软件演化评估方法在审

专利信息
申请号: 201710330642.1 申请日: 2017-05-11
公开(公告)号: CN107239396A 公开(公告)日: 2017-10-10
发明(设计)人: 廖力;李必信;何磊 申请(专利权)人: 东南大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 南京苏高专利商标事务所(普通合伙)32204 代理人: 柏尚春
地址: 211189 江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 代码 复杂度 度量 软件 演化 评估 方法
【权利要求书】:

1.一种基于代码圈复杂度度量的软件演化评估方法,其特征在于,该方法包括以下步骤:

步骤1)分别为待评估软件的当前待测目标版本V_current和历史版本V_last的程序源码构造抽象语法树;

步骤2)根据所述步骤1)获取的抽象语法树,分别从系统层、类层和方法层三个层次对待测软件版本的代码进行圈复杂度度量,所述待测软件版本包括当前待测目标版本V_current和历史版本V_last;

步骤3)从类层和方法层分别评估待测软件版本的圈复杂度度量结果,找出软件中圈复杂度度量结果超出阈值范围的类和方法;

步骤4)对待测软件的当前待测目标版本V_current和历史版本V_last的圈复杂度度量结果按层次进行分析比较,以确定变更发生的位置,具体为:先进行两个版本系统层圈复杂度的比较,确定两个版本间类的增删改;然后再进行类层次的分析,对前后版本中圈复杂度发生变化的类,确定其方法的增删改;最后进行方法层次的分析,考察同名方法的圈复杂度变化;

步骤5)对当前待测目标版本V_current和历史版本V_last的项目源码本身进行分析比较,找出两者在所述步骤4)确定的变更发生的位置的代码差异,输出到格式文件中;

步骤6)针对当前待测目标版本V_current和历史版本V_last,通过所述步骤4)得到的两个版本中圈复杂度发生增删改的类和方法,以及所述步骤5)得到的两个版本的代码差异,进行差异定位,即根据代码差异确定导致度量结果发生变化的原因,形成软件演化评估。

2.根据权利要求1所述的基于代码圈复杂度度量的软件演化评估方法,其特征在于,所述步骤2)中通过统计代码解析所得的抽象语法树中判定节点的数量来进行代码圈复杂度度量,规则为:

判定节点是程序设计语言中表示条件判定的语句,通过条件判定来确定程序的控制流走向。

3.根据权利要求2所述的基于代码圈复杂度度量的软件演化评估方法,其特征在于,对于Java语言,所述步骤2)中代码圈复杂度度量规则的判定节点存在于以下关键字所引导的语句中:If,for,while,do,case,catch,&&,||,:?,这些判定节点在抽象语法树AST中对应的节点如下表:

表1.圈复杂度中判定节点和ASTNode对应表

4.根据权利要求1、2或3所述的基于代码圈复杂度度量的软件演化评估方法,其特征在于,所述的步骤2)中分三个层次进行代码圈复杂度度量的具体方法是:

方法层:通过扫描方法的抽象语法树,统计方法中的判定节点个数,将该判定节点数加1即为方法层的圈复杂度;

类层次:通过扫描类的抽象语法树,统计类中的判定节点个数,将该判定节点数加1即为类层次的圈复杂度;同时类层次的圈复杂度应与该类中所有方法的圈复杂度之和相等,并据此对类层次圈复杂度结果进行校验;

系统层:通过扫描整个系统的抽象语法树,统计系统中的判定节点个数,将该判定节点数加1即为系统层次的圈复杂度;同时系统层次的圈复杂度应与该系统中所有类和方法的圈复杂度之和相等,并据此对系统层圈复杂度进行校验。

5.根据权利要求1、2或3所述的基于代码圈复杂度度量的软件演化评估方法,其特征在于,所述步骤3)中对当前待测版本V_current代码圈复杂度的评估是通过将类层次和方法层次的度量结果与相关阈值进行比较分析完成的;

方法层的圈复杂度的阈值划分如下:圈复杂度在1-10之间,程序简单,风险低;复杂度在11-20之间,程序有点复杂,有点风险;复杂度在21-50之间,程序很复杂,高风险;复杂度>50,程序无法看懂;

类层的复杂度的阈值设定为50,一个项目中复杂度超过50的类所占比例应不大于5%。

6.根据权利要求1、2或3所述的基于代码圈复杂度度量的软件演化评估方法,其特征在于,所述步骤5)的具体流程为:

分别获取软件当前版本V_current和前一版本V_last的.java文件的路径;

将两个版本的源码进行对比,确定发生变更的所有文件路径,并存入变更文件路径集合fileSet;

遍历所述变更文件路径集合fileSet中的路径,并分别在V_current版本和V_last版本中去匹配相应的路径;

将两个版本中匹配成功的路径文件分别输入到源码差异分析器ChangeDistiller中进行代码差异分析;

提取分析结果,提取与圈复杂变化相关的代码变更类型,将结果输入到.csv格式文件中。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201710330642.1/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top