项目简介
本项目借助遗传算法(NSGA-II)达成代码重构优化,致力于提升系统的微服务粒度、模块化质量,同时降低重构成本。通过关注点识别、功能原子聚类以及代码文件依赖关系抽取等操作,算法能够搜索并生成面向微服务粒度最大化、模块化质量最大化和重构成本最小化的重构方案。
项目的主要特性和功能
- 微服务粒度最大化:依据关注点信息描述粒度,优化微服务划分,使其更合理高效。
- 模块化质量最大化:增强模块内聚性,降低模块间耦合性,提升系统可维护性与可扩展性。
- 重构成本最小化:以最少步骤调整代码文件,降低重构成本与风险。
- 遗传算法优化:采用NSGA-II算法,结合交叉、变异等操作生成新的重构方案,利用非支配排序和拥挤距离分配维持种群多样性与优质性。
- 数据预处理:涵盖关注点识别、功能原子聚类和代码文件依赖关系抽取,为遗传算法提供必要数据支持。
- 可视化输出:算法运行时实时打印全过程,并将结果输出到文件,便于后续分析与可视化展示。
安装使用步骤
1. 复制项目到本地
bash
2. 使用IDEA打开项目目录
打开项目目录,加载pom.xml
文件,安装Maven依赖。
3. 配置环境
确保本地环境已安装JDK 11和Maven 3.8.4。
4. 运行项目
项目的运行入口在src/test/RefactorTest.java
文件中。直接运行main
方法即可启动遗传算法进行代码重构优化。
5. 查看输出结果
- 算法运行过程中,IDE任务打印栏会实时打印遗传算法的全过程。
- 算法运行日志会写入文件,保存在项目的
output
目录下,格式如:NSGA-II-report-11444.txt
。 - 数据文件
refactorPrograms.json
和objectives.json
用于绘制Echarts树状图。 - 如果目标函数是两个以下,则会弹出可视化图表框,展示全部个体和第一前沿。三个及以上目标函数时,则不会显示。
6. 算法参数说明
- 种群规模参数:种群规模上限为100。
- 变化器参数:交叉选择概率为0.6,变异选择概率为0.3,break变异概率为0.3。
- 适应度参数:主题与文件的概率阈值为0.006,过载分数阈值为10,模块化数量系数为1.0。
- 停止条件参数:最大代数为200,第一前沿占比为0.8,基因型数量为5000。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】