无文档遗留系统的逆向梳理:利用 AI 重建架构视图

无文档遗留系统的逆向梳理:利用 AI 重建架构视图

接手老项目时,没文档、没注释,调用关系只能靠猜。点开几个文件,一路 Ctrl+Click 追下去,十几分钟 IDE 铺满Tab,越看越迷糊。

以前只能硬啃:翻代码、画草图,在脑子里拼结构,费时还容易陷进细节出不来。

现在可以直接把代码交给AI,让它帮你梳理模块边界、依赖关系和调用链,生成架构图,输出 Mermaid/PlantUML 代码。先看清全局,再决定往哪深入。

一个真实例子

假设你接手了一个 Spring Boot 的电商后端项目,代码结构大概是这样:

css 复制代码
src/main/java/com/example/shop/
├── ShopApplication.java           # 启动类
├── controller/
│   ├── UserController.java
│   ├── OrderController.java
│   └── PaymentController.java
├── service/
│   ├── UserService.java
│   ├── OrderService.java
│   └── PaymentService.java
├── repository/
│   ├── UserRepository.java
│   └── OrderRepository.java
└── entity/
    ├── User.java
    └── Order.java

你想快速搞清楚各个模块是怎么调用的。

把代码复制给 AI,用这样的 Prompt:

markdown 复制代码
帮我分析一下这些 Spring Boot 代码的调用关系,生成一个 Mermaid 架构图。

重点展示:
1. Controller 层如何调用 Service 层
2. Service 层之间的相互调用
3. Service 层如何调用 Repository 层
4. 用中文标注每个模块是干什么的

代码如下:
[把几个 Controller、Service、Repository 的代码贴进去]

然后 AI 会给你一段 Mermaid 代码:

graph TB A[客户端请求] -->|HTTP| B[Controller 层] B --> C1[UserController] B --> C2[OrderController] B --> C3[PaymentController] C1 --> S1[UserService] C2 --> S2[OrderService] C3 --> S3[PaymentService] S2 -->|查询用户| S1 S3 -->|验证用户| S1 S3 -->|更新订单| S2 S1 --> R1[UserRepository] S2 --> R2[OrderRepository] S3 --> R2 R1 --> D[(MySQL数据库)] R2 --> D style A fill:#e3f2fd style B fill:#fff3e0 style S1,S2,S3 fill:#e8f5e9 style R1,R2 fill:#f3e5f5 style D fill:#ffebee

你把这段代码贴到 mermaid.live,一张图就出来了。

那一刻,原本混乱的文件关系,突然清晰了。

不同场景用不同的图

架构这东西,不同的人想看不同的视角。

给产品经理看:时序图

产品想了解一个业务流程是怎么跑的?让 AI 画时序图:

arduino 复制代码
请生成一个时序图,展示 Spring Boot 应用中"用户下单"这个流程:
从 Controller 收到请求开始,到数据库保存成功的每一步调用

你会看到一条清晰的调用链:Controller → OrderService → 库存校验 → PaymentService → Repository → 数据库。

给新同事看:分层图

新人入职,需要快速了解项目分层?让 AI 画分层架构:

复制代码
请生成分层架构图,展示这个 Spring Boot 项目的分层:
Controller 层、Service 层、Repository 层,以及它们之间的关系

给自己看:依赖图

想排查有没有循环依赖?让 AI 画出模块依赖:

diff 复制代码
请生成依赖关系图,标注出:
- 哪些 Service 被多个模块依赖(核心服务)
- Service 之间是否存在循环依赖(用虚线标注警告)

几个实用建议

1. 不用把所有代码都给 AI

给太多了,AI 分析起来也累。挑核心文件就行:Application 启动类、主要的 Controller、Service、Repository。

2. 分模块画图

项目太大?别想着一张图包罗万象。先画整体概览,再针对核心业务模块画详细图。

3. 让 AI 用中文标注

默认生成的图可能是英文的,记得在 Prompt 里强调"用中文标注",好读很多。

4. 图要定期更新

代码在变,图也要跟着变。每次大改动后,让 AI 重新生成一张,几分钟的事。

也要说点实话

AI 生成的图不是完美的。

有些动态的依赖关系(比如通过反射、动态代理调用的),AI 看不出来。有时候它也会理解错,把不相关的类连在一起。

所以把它当作一个"快速理解工具",而不是"绝对真理"。

拿到的图,最好对照代码过一遍,有不对的地方手动改一改。

最后

图这东西,最重要的是"有用",而不是"好看"。

一张粗糙但准确的草图,比一张精美的空图要有价值得多。

AI 让我们低成本地获得这些草图。不用纠结格式,不用纠结美观,先把结构理清楚再说。

下次接手陌生项目,别急着翻代码,先让 AI 帮你画张图。

看着那张图,你会发现,原本复杂的项目,好像也没那么可怕了。

附:几个能用的 Prompt

分析这些 Spring Boot 代码的模块依赖关系,生成 Mermaid 架构图,用中文标注
生成时序图,展示用户下单流程的每一步调用(从 Controller 到 Repository)
这个项目的 Service 层有循环依赖吗?生成依赖图,标注出来
生成分层架构图,展示 Controller、Service、Repository 三层的关系

相关推荐
2401_895521341 小时前
SpringBoot Maven快速上手
spring boot·后端·maven
disgare1 小时前
关于 spring 工程中添加 traceID 实践
java·后端·spring
ictI CABL1 小时前
Spring Boot与MyBatis
spring boot·后端·mybatis
小江的记录本3 小时前
【Linux】《Linux常用命令汇总表》
linux·运维·服务器·前端·windows·后端·macos
yhole6 小时前
springboot三层架构详细讲解
spring boot·后端·架构
香香甜甜的辣椒炒肉6 小时前
Spring(1)基本概念+开发的基本步骤
java·后端·spring
白毛大侠7 小时前
Go Goroutine 与用户态是进程级
开发语言·后端·golang
ForteScarlet7 小时前
从 Kotlin 编译器 API 的变化开始: 2.3.20
android·开发语言·后端·ios·开源·kotlin
大阿明7 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
Binary-Jeff7 小时前
Spring 创建 Bean 的关键流程
java·开发语言·前端·spring boot·后端·spring·学习方法