【技术实现步骤摘要】
基于代码异味的软件重构预测方法
[0001]本专利技术涉及软件维护领域,具体涉及一种基于代码异味的软件重构预测方法。
技术介绍
[0002]在软件维护和演化过程中,软件系统需要由开发人员不断地进行更改,以便实现新的需求,增强现有的特征,或者修复重要的错误。由于时间压力或其他相关信息,开发人员并不总是有时间或意愿来控制系统的复杂性,并在应用他们的修改之前找到好的设计解决方案。他们可能会单纯为实现功能而编写代码,而忽视程序的结构性和可读性。代码编写上变得越来越混乱,使得整个代码结构变得臃肿不堪,这时候往往会引入代码异味。
[0003]代码异味表明源代码中容易导致改变和出错的次优设计或实现选择,会造成代码质量下降,同时会对软件开发人员在理解和维护项目代码时造成困扰,是导致技术债务的一个重要因素,从而产生不必要的维护代价。
[0004]而在软件的开发和生命周期中,维护被认为是最艰巨和最昂贵的任务之一,尤其是软件系统中异味过重的话,往往会导致代价极大的重构工作。
[0005]近年来的研究显示,现有的软件系统中存在代码异味的现象十分常见,大量的异味实例往往在其所在的文件被创建时就被引入,并且其倾向于长时间存在于软件系统中并存活下来,这往往会给软件系统带来后续维护和拓展上的隐患。
[0006]因此,选择用一个合适的时间进行重构消除异味的工作是十分重要的,它会对软件的可维护性和可拓展性带来提升。
[0007]以往的研究往往注重于代码异味的检测或软件重构的优先级,很少有研究来进行代码重构时机的预
【技术保护点】
【技术特征摘要】
1.基于代码异味的软件重构预测方法,其特征在于包括以下步骤:步骤一:给定待分析系统中m*n个源代码文件版本集合F=(F
1,1
,F
1,2
,...,F
i,j
,...,F
m,n
),其中F
i,j
表示源代码文件F
i
的第j个版本,利用代码解析工具解析每一个源代码文件,将每一个源代码文件版本F
i,j
的结构与异味信息度量表示为S
i,j
=<className,classVersion,structure,hasSmell>的形式,i=1,2,...,m,j=1,2,...,n,其中className表示源代码文件版本F
i,j
的类名,设一个源代码文件包含一个类;classVersion表示源代码文件版本F
i,j
在项目历史中的版本号,structure表示源代码文件版本F
i,j
的结构特征集合W,hasSmell表示源代码文件版本F
i,j
中是否存在某种代码异味,1表示存在异味,0则表示不存在;特征集合W=<w
LOC
,w
NOA
,w
CBO
,w
MPC
,w
TCC
,w
McCabe
,w
WMC
>,其中w
LOC
表示该文件的代码行数,w
NOA
表示该文件中属性的个数,w
CBO
表示与该文件相耦合的目标类的数量,耦合即该文件中的方法调用了目标类的方法或变量;w
MPC
表示该文件中的方法调用其他方法的个数,w
TCC
表示通过访问相同的属性而直接发生联系的方法个数,w
McCabe
表示该文件通过McCabe度量法计算得到的复杂度,w
WMC
表示该文件中方法的圈复杂度的和;步骤二:如果源代码文件版本F
i,j
被识别为存在某种代码异味,判别是否具有这种代码异味的特征阈值集为T=<w1|b1,...,w
g
|b
g
,...,w
t
|b
t
>,其中w
g
为W中的一个特征,b
g
为识别为这种代码异味的特征w
g
对应的阈值,g=1,2,...,t,通过以下公式计算得到异味强度:其中,m(w
g
)表示待分析系统中存在的、由于特征w
g
引起某种代码异味的最大或最小值:当w
g
超过b
g
时引起某种代码异味的时候选用最大值,当w
g
小于b
g
时引起某种代码异味的时候选用最小值;添加强度信息后源代码文件版本F
i,j
的结构与异味信息度量表示为:S
′
i,j
=<className,classVersion,structure,hasSmell,intensity>;步骤三:获取源...
【专利技术属性】
技术研发人员:俞东进,翁乐辉,陈洁,陈信,陈宇廷,叶佳萍,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。