笔记 M:风险管理与软件演进

[Chief Architect's Note] (首席架构师按): 软件永远不会像硬件那样因为物理摩擦而“磨损(Wear out)”,但它一定会因为生命周期中不断被强行塞入的“变更”而产生剧烈的熵增,最终因为退化(Deterioration)而走向死亡。

模块一:风险管理 (Risk Management) 的攻防之道

在复杂的项目中,指望“一切顺利”是最愚蠢的策略。风险管理的核心是从被动挨打转向主动防御。

模块二:软件演进 (Evolution) 的四种维护形态

软件发布后的修改统称为维护,但并不是所有的维护都是在“修 Bug”。维护被严密地划分为四种类型:

  1. 纠错性维护 (Corrective Maintenance):修复交付后用户发现的潜在 Bug,这本质上是前期测试不充分的还债。
  2. 适应性维护 (Adaptive Maintenance):为了让软件在不断变化的外部环境(如新操作系统、新数据库版本)中继续运行而进行的修改。
  3. 完善性维护 (Perfective Maintenance):响应利益相关者的需求,主动增加新功能、改善代码结构或提升性能。
  4. 预防性维护 (Preventive Maintenance):在用户发现问题之前,主动对软件进行修改以检测和纠正潜在的隐患。

模块三:技术债务 (Technical Debt) 与再工程 (Reengineering)


资深架构师的深度思考维度

[Engineering Mindset] (工程权衡逻辑)

[AI-Era Mapping] (AI 时代的演进与实战)

[Memory Trigger] (记忆触发器)


特别模块:首席架构师的“屎山”清理指令 (Legacy Code Refactor Prompt)

当你接手一段缺乏文档、逻辑混乱的遗留代码,必须修改它但又极度害怕改坏时,请使用以下指令让 Cursor 辅助你进行安全的手术级重构:

# [Role]: 资深再工程专家 (Senior Reengineering Expert)

**Context**: 我目前必须对下面这段高度耦合、缺乏文档的遗留代码("屎山")进行修改。为了避免技术债务爆炸,我们需要在不改变其外部业务行为的前提下,执行“逆向工程”和“预防性维护”。

**Task**: 请严格按照以下 3 个步骤协助我:

1. **[Reverse Engineering (逆向工程与理解)]**:
   - 不要急着改代码!首先,请深入分析这段代码的数据流和控制流。
   - 用大白话向我总结它到底在实现什么核心业务逻辑,并列出它目前存在的所有隐含前提假设 (Implicit Assumptions) 和外部依赖 (Dependencies)。

2. **[Test-Harness Generation (构建防护网)]**:
   - 在我们动刀之前,请利用边界值分析 (Boundary Value Analysis),为这段原始代码生成 5 个最核心的单元测试用例。
   - 这将作为我们重构时的防回归测试 (Regression Testing) 护栏。

3. **[Code Refactoring (模块化重构)]**:
   - 在保证上述测试用例能 100% 跑通的前提下,应用 SOLID 原则对这段代码进行重构。
   - 消除其中的深度嵌套 (Spaghetti Code) 和魔术数字 (Magic Numbers)。
   - 为重构后的模块补充清晰的 JSDoc/Docstring 接口文档。

**Action**: 请先输出第一步(逆向工程报告),待我确认业务逻辑理解无误后,再继续后续步骤。

下一章:software-05-N:过程改进与能力成熟度 (SPI & CMMI)
首页:Software Engineering MOC