Appearance
老旧项目二次开发流程总结
本文复盘日常工作中针对老旧项目进行二次开发时的标准化工作流,重点说明如何在对现有功能充分理解的基础上,安全、可控地完成改造。
第一阶段:现状还原 —— 逆向理解现有功能
二次开发的前提是完整、准确地理解当前系统的真实运行状态。此阶段通过代码逆向分析,输出以下三类关键信息,作为后续改造的基准线。
1.1 功能入口梳理
- 从用户行为入口出发,逐一核对所有功能入口点
- 确认是否与业务描述完全一致,排查是否存在多版本遗漏或历史遗留入口
- 关键动作:将梳理结果与熟悉业务的人员(产品/老开发/运维)交叉验证,确保入口完备
1.2 静态结构还原(类图)
- 绘制对应的设计类图,明确核心静态数据结构(实体类、配置类)与行为类(服务类、工具类)
- 标注各类之间的继承、组合、依赖关系
- 重点关注:核心领域模型、数据流转载体、公共工具与基础服务
1.3 动态流程还原(序列图)
- 基于类图中的方法,串联还原完整的业务流程
- 验证每个功能场景从触发到结束的完整调用链
- 检查是否存在遗漏分支、异常路径或隐藏的异步处理
1.4 复杂规则提取
- 识别并记录业务中的复杂判断逻辑与计算规则
- 标注条件判断的优先级、特殊场景的兜底策略、数值计算的精度与边界
- 明确哪些规则是硬编码的,哪些是配置化的
完备性判断标准:入口无遗漏、类图可对应代码实体、序列图能覆盖正向主流程、复杂规则有明确文字描述。
第二阶段:问题定义 —— 明确"做什么"与"做到什么程度"
在充分理解现状后,需要精准定义本次改造要解决的问题。此阶段的核心是将模糊的需求转化为清晰、可验证的目标。
2.1 理解问题背景
- 目的:本次改造要解决什么业务痛点?期望达到什么效果?
- 整体原则:技术实现上遵循什么指导思想?(如最小侵入、灰度切换、数据兼容等)
- 沟通前必确认:带着上述问题与需求方对齐,避免方向性偏差
2.2 梳理约束条件
- 刚性约束:哪些是必须满足的条件(合规要求、接口契约、性能指标等)
- 弹性约束:哪些是期望达成但可协商的优化项
- 现状约束:基于当前系统现状,识别隐性的技术限制与风险点
注意:产品方有时仅提出目标方向,具体的约束边界和实现细节需要开发方通过现状调研自行梳理并反馈确认。
2.3 细化到场景级描述
将需求拆解为具体的业务场景(用例),每个场景明确以下内容:
| 要素 | 说明 |
|---|---|
| 场景描述 | 该场景的业务背景与用户动作 |
| 系统职责 | 在该场景下系统需要承担的具体功能 |
| 输入 | 用户提供的数据、触发的条件、上游系统的传入 |
| 输出 | 系统应返回的结果、产生的副作用(数据变更、通知等) |
| 验收标准 | 如何判定该场景的实现是正确的 |
第三阶段:分析设计 —— 规划"怎么做"
基于现状模型与细化后的需求,进行增量式的设计。此阶段的所有产出必须与第一阶段的逆向模型形成可追溯的对应关系。
3.1 增量式流程设计(序列图)
- 针对每个业务场景,绘制改造后的序列图
- 对应关系:新序列图应与第一阶段逆向的序列图逐项对比,明确:
- 哪些流程被保留(复用现有逻辑)
- 哪些流程被替换(修改现有方法)
- 哪些流程是新增的(引入新类、新方法)
- 完整描述从输入到处理再到输出的全链路,标注涉及的类与方法
3.2 增量式结构设计(类图)
- 在现有类图基础上标注变更:
- 新增:本次引入的类、方法、字段
- 修改:行为变更或职责调整的方法
- 复用:保持不变的已有模块
- 确保新设计的集合完整覆盖并大于原有逆向的信息集合
3.3 复杂规则设计
- 对于改造中涉及的复杂业务方法,单独编写规则说明文档
- 每条规则明确:做什么、依据什么条件做、异常时如何处理
- 与产品方确认规则的理解是否准确,避免实现偏差
第四阶段:实施实现 —— 安全落地
4.1 前置约束声明
在编码开始前,根据项目历史与团队特点,预先声明本次实施的硬性约束与常见陷阱,例如:
- AI 辅助编码常见风险:幻觉导致的虚构 API、忽略异常分支、类型不匹配、未遵循既有代码风格等
- 人工开发常见风险:硬编码环境配置、遗漏事务边界、忽略并发场景、日志打印不规范等
- 项目级约束:代码规范、分支策略、数据库变更审批流程、接口兼容性要求等
4.2 验证场景定义
至少覆盖以下验证维度:
| 验证类型 | 最低要求 |
|---|---|
| 关键动作正向流程 | 核心业务流程必须完整跑通 |
| 关键分支覆盖 | 主要条件分支至少覆盖一次 |
| 边界与异常 | 空值、超限、并发等边界场景 |
| 回归验证 | 未改造的既有功能不受影响 |
原则:不完成验证不上线,验证不通过不回退——确保每次变更都是可确认、可回滚的。
总结:四阶段的核心逻辑
| 阶段 | 核心问题 | 关键产出 |
|---|---|---|
| 现状还原 | 系统现在怎么运行的? | 逆向类图 + 序列图 + 规则清单 |
| 问题定义 | 要解决什么问题?边界在哪? | 场景级需求文档 + 验收标准 |
| 分析设计 | 怎么改?改哪些? | 增量类图 + 增量序列图 + 规则设计 |
| 实施实现 | 怎么安全落地? | 约束声明 + 验证通过的可交付代码 |
这套流程的核心思想是:先完整理解旧系统,再精准定义新问题,基于增量模型做设计,在明确约束下做实施。通过每个阶段的输入输出形成闭环,降低老旧项目改造的风险与返工成本。