【技术实现步骤摘要】
一种利用遗传算法改进软件模块质量的方法和系统
[0001]本专利技术属于软件重构
,具体涉及一种利用遗传算法改进软件模块质量的方法和系统。
技术介绍
[0002]软件系统需要持续地进行调整以适应变化的需求,随着软件系统的不断调整,其复杂度会逐渐增加,软件质量也会逐渐下降,除非采取措施来降低或保持其复杂度和改善软件质量。然而,软件系统在其不断调整的过程中,由于一些现实原因,如时间压力、计划不周的变更等,开发人员可能会做出对软件质量属性造成负面影响的设计决策,这种设计决策被称为异味。
[0003]根据异味的影响范围可以将其从低到高划分为三个层级,包括实现层级,通常指方法内具体代码实现相关的问题;设计层级,通常指类层级的结构性问题;架构层级,通常指软件架构中组件层级的结构性问题。其中实现层级和设计层级的异味被统称为代码异味,架构层级的异味被称为架构异味。在上述三个层级的异味中,架构异味的影响范围最广。许多研究表明,架构异味会对软件系统的可维护性造成严重的负面影响,需要对其进行重构以改进架构。
[0004]然而 ...
【技术保护点】
【技术特征摘要】
1.一种利用遗传算法改进软件模块质量的方法,其特征在于,包括以下步骤:S1:分析软件源代码的语法树,识别文件和组件间的软件依赖关系网络;S2:利用异味检测算法识别软件依赖关系网络中存在的异味组件;S3:根据识别出的软件依赖关系网络以及异味组件,利用遗传算法生成重构方案,以供开发人员选择重构方案对软件进行重构。2.根据权利要求1所述的利用遗传算法改进软件模块质量的方法,其特征在于,进行步骤S1前对软件中的源代码文件进行预处理工作,将软件中的每一个代码文件编译成字节码文件,作为步骤S1的输入。3.根据权利要求1所述的利用遗传算法改进软件模块质量的方法,其特征在于,步骤S1中,所述软件依赖关系网络部分,包括的元素有:S1
‑
1:文件节点f
i
,表示源代码文件;S1
‑
2:组件节点c
j
,表示用于存放源代码文件的目录;S1
‑
3:文件和文件之间的调用依赖关系边;S1
‑
4:组件和组件之间的调用依赖关系边;S1
‑
5:文件和组件之间的从属依赖关系边;步骤S1
‑
2中的组件包含Interface和Cell两种类型的文件,Interface指的是组件内被其他组件中的文件所调用依赖的文件,Cell指的是组件内没有被其他组件中文件所调用依赖的文件;步骤S1
‑
3中文件和文件之间的调用依赖关系边指的是两个文件之间存在的调用依赖关系,由文件中实现的源代码所决定,具体的调用依赖关系包括:(a)通过方法调用语句产生的两个文件间的调用依赖关系;(b)通过成员变量调用语句产生的两个文件间的调用依赖关系;(c)通过初始化语句产生的两个文件间的调用依赖关系;步骤S1
‑
4中组件和组件之间的调用依赖关系边指的是两个组件之间存在的调用依赖关系,由组件所包含文件的调用依赖关系所决定;步骤S1
‑
5中文件和组件之间的从属依赖关系边指的是文件和组件之间存在的从属依赖关系,由文件存放的位置所决定。4.根据权利要求1所述的利用遗传算法改进软件模块质量的方法,其特征在于,步骤S2中,利用异味检测算法识别软件中的异味组件,具体异味检测算法有:S2
‑
1:枢纽型依赖异味检测算法,检测方法如下:(1)计算每一个组件的ADN和EDN,其中ADN指的是其他组件调用依赖当前组件而形成的调用依赖关系数量总和,EDN指的是当前组件调用依赖其他组件而形成的调用依赖关系数量总和;(2)计算所有ADN的中位数Mid
ADN
和所有EDN的中位数Mid
EDN
;(3)组件c
i
存在枢纽型依赖架构异味当且仅当:其中,表示组件c
i
的传入调用依赖数;表示组件c
i
的传出调用依赖数;
S2
‑
2:不稳定依赖异味检测算法,检测方法如下:(1)计算每个组件的I指标,组件c
i
的I指标的定义如下:其中,指的是组件c
i
的传出调用依赖数;指的是组件c
i
的传入调用依赖数;(2)计算组件c
i
的不稳定依赖数组件c
i
调用依赖组件c
j
且组件c
i
的I指标大于组件c
j
,则该调用依赖称为不稳定依赖;(3)组件c
i
存在不稳定依赖架构异味当且仅当:S2
‑
3:环依赖异味检测算法,检测方法如下:对于任意一条由组件c
i
到组件c
j
的调用依赖路径,若同时存在一条由组件c
j
到组件c
i
的调用依赖路径,则此二条路径上的所有组件形成环依赖异味。5.根据权利要求1所述的利用遗传算法改进软件模块质量的方法,其特征在于,步骤S3中利用遗传算法生成重构方案的方法,具体包括如下步骤:S3
‑
1:初始化种群P(t),设置进化代数计数器t
←
0、设置最大进化代数2000、随机生成100个个体作为初始种群;S3
‑
2:使用二元锦标赛选择算子从种群P(t)中选出2个体作为父本个体;S3
‑
3:使用单点交叉算子对选出的2个父本个体进行交叉操作生成一个个体;S3
‑
4:使用单点变异算子对生成的一个个体进行变异操作生成一个新的个体,反复迭代S3
‑
2、S3
‑
3、S4
‑
4三个步骤100次,生成由100个个体组成的子代种群;S3
‑
5:使用优化目标函数从子代种群和P(t)中选出100个表现最优的个体组成种群P(t+1),并设置进化代数计数器t
←
t+1;S3
‑
6:若t<2000,则返回S3
‑
2;若t≥2000,则返回最后一代搜索出的种群作为搜索出的重构方案;步骤S3
‑
1中的个体是遗传算法中数据流转的载体,可通过对种群中的个体进行优化目标函数计算、排序、选择、交叉和变异操作,从而搜索...
【专利技术属性】
技术研发人员:张贺,王家瑞,钟陈星,李杉杉,周鑫,荣国平,邵栋,
申请(专利权)人:南京大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。