[发明专利]基于Halstead复杂度度量的软件演化评估方法在审
申请号: | 201710191917.8 | 申请日: | 2017-03-28 |
公开(公告)号: | CN107066384A | 公开(公告)日: | 2017-08-18 |
发明(设计)人: | 廖力;李必信;何磊 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京苏高专利商标事务所(普通合伙)32204 | 代理人: | 柏尚春 |
地址: | 211189 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 halstead 复杂度 度量 软件 演化 评估 方法 | ||
技术领域
本发明涉及一种基于代码Halstead复杂度度量的软件演化评估方法,属于软件演化与维护领域问题。
背景技术
代码复杂度是对代码复杂程度的一种度量,是理解和维护代码所需工作量的一种指征。代码复杂度能够反映以下六个不同方面的含义:(1)理解程序的难易程度;(2)修复代码缺陷和维护代码的难易程度;(3)向其他人解释代码的难易程度;(4)根据某些给定规则(或需求)更新代码的难易程度;(5)根据设计完成程序的难易程度;(6)程序执行时必要资源的可用性。
从软件科学的角度出发,计算机程序可以被看成是符号(token)的集合,这些符号可以由编译器识别并区分为操作符和操作数。操作数是指源程序代码中的常量和变量等;而操作符则是指用来处理程序中各个操作数的语法元素,如算术运算符、逻辑运算符、关系运算符、流程控制语句、函数调用等。Halstead复杂度根据源代码中操作数和操作符的测量值来度量源程序代码的复杂程度。通过Halstead复杂度的度量与评估可以获得程序的容量、长度、难度、预测程序bug数、工作量等,有利于管理人员对项目进行规划。
当前,软件演化成为软件生命周期中重要的一环。随着软件的演化,其源代码会产生一定的变更,这些变更会对软件的复杂程度、软件质量及其后继演化产生影响。源代码的变更必定会反映在对程序中操作符和操作数的数量统计上,因此,通过对软件演化过程中Halstead复杂度变化情况的研究分析,可以为软件的演化提供评价依据,对于软件的迭代开发与重构、延长软件的生命周期具有重要意义。
发明内容
技术问题:本发明提供一种自动化地对代码Halstead复杂度进行度量并进行演化评估,在软件演化过程中对复杂度有效控制,注重演化过程中软件Halstead复杂度的变化,实现对软件复杂度控制的基于代码Halstead复杂度度量的软件演化评估方法。
技术方案:本发明方法,引入代码Halstead复杂度度量方法及相关阈值,从不同层次对演化前后的软件进行度量和评估,进而对其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)得到的两个版本的代码差异,进行代码差异定位,并根据代码差异确定导致度量结果发生变化的原因,形成软件演化评估。
进一步的,本发明的方法中,步骤1)构造的抽象语法树中包含源码中操作符和操作数的解析信息,所述操作符和操作数的解析信息符合以下规则:
规则1:程序源码转化为抽象语法树后,源码中的每种结构都以抽象语法树节点的形式展现,所述结构包括操作符和操作数;
规则2:操作符为程序中完成一个动作的代码元素,所述操作符包括:
开发语言中的关键字;
软件程序中的声明;其中,面向对象开发语言中包括包的声明、类的声明、方法声明;面向过程开发语言中包括函数声明和过程声明;
总是一起出现的结构化操作符,以及结构化操作符中出现的其它符号;
方法调用或函数调用;
运算符;
规则3:操作数是指参与到操作符动作中的代码元素,所述操作数包括:
标识符,即所有的用户定义标识符;
常量,即程序中出现的各种常量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710191917.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种应用程序流畅度检测方法及装置
- 下一篇:一种测试方法、装置及系统