[发明专利]基于Halstead复杂度度量的软件演化评估方法在审
申请号: | 201710191917.8 | 申请日: | 2017-03-28 |
公开(公告)号: | CN107066384A | 公开(公告)日: | 2017-08-18 |
发明(设计)人: | 廖力;李必信;何磊 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京苏高专利商标事务所(普通合伙)32204 | 代理人: | 柏尚春 |
地址: | 211189 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 halstead 复杂度 度量 软件 演化 评估 方法 | ||
1.一种基于代码Halstead复杂度度量的软件演化评估方法,其特征在于,该方法包括以下步骤:
步骤1)针对待评估软件的当前版本V_current和历史版本V_last,根据源代码分别构造各个版本的抽象语法树;
步骤2)根据所述步骤1)获取的抽象语法树,分别从系统层、类层和方法层三个层次对待测软件版本的代码进行Halstead复杂度度量,所述待测软件版本包括当前待测目标版本V_current和历史版本V_last;
步骤3)从类层和方法层分别评估待测软件版本的Halstead复杂度度量结果,找出软件中Halstead复杂度超过阈值范围的类和方法;
步骤4)对待评估软件的当前版本V_current和历史版本V_last得到的Halstead复杂度度量结果按层次进行分析比较,确定其中Halstead复杂度发生变化的类和方法;
步骤5)对待评估软件的当前版本V_current和历史版本V_last的项目源码进行分析比较,找出两者的代码差异,输出到格式文件中;
步骤6)针对待评估软件当前版本V_current和历史版本V_last,通过所述步骤4)得到的两个版本中Halstead复杂度发生变化的类和方法,以及所述步骤5)得到的两个版本的代码差异,进行代码差异定位,并根据代码差异确定导致度量结果发生变化的原因,形成软件演化评估。
2.根据权利要求1所述的基于代码Halstead复杂度度量的软件演化评估方法,其特征在于,所述步骤1)构造的抽象语法树中包含源码中操作符和操作数的解析信息,所述操作符和操作数的解析信息符合以下规则:
规则1:程序源码转化为抽象语法树后,源码中的每种结构都以抽象语法树节点的形式展现,所述结构包括操作符和操作数;
规则2:操作符为程序中完成一个动作的代码元素,所述操作符包括:
开发语言中的关键字;
软件程序中的声明;其中,面向对象开发语言中包括包的声明、类的声明、方法声明;面向过程开发语言中包括函数声明和过程声明;
总是一起出现的结构化操作符,以及结构化操作符中出现的其它符号;
方法调用或函数调用;
运算符;
规则3:操作数是指参与到操作符动作中的代码元素,所述操作数包括:
标识符,即所有的用户定义标识符;
常量,即程序中出现的各种常量;
规则4:对于以上规则中没有覆盖的符号,分号“;”是一个标点符号,表示一行代码的结束;而“//”和‘/**/’是注释相关的符号,它们既不属于操作符也不属于操作数,而且不会对代码的操作造成影响,因此在检测中不予考虑;
规则5:将以上规则应用于Java语言源码生成的抽象语法树,能够得到如下表所示的针对Java抽象语法树中操作符节点和操作数节点的划分:
表1.操作符和操作数相关的ASTNode表
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710191917.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种应用程序流畅度检测方法及装置
- 下一篇:一种测试方法、装置及系统