第10章 软件架构的演化和维护
核心知识点
1. 软件维护类型
- 四种维护:
- 排错性维护(纠错性):修复已发现的错误
- 适应性维护:适应外部环境变化(OS升级、数据库迁移等)
- 完善性维护:扩充功能、改善性能(占比最大,约60-80%)
- 预防性维护:为将来改进而做的预先工作
- 考试角度:常考完善性维护占比最大
2. 软件可维护性
- 决定因素:
- 可理解性:代码和文档容易理解
- 可测试性:方便测试
- 可修改性:方便修改
- 可移植性:方便移植到其他环境
- 可重用性:代码可被复用
- 度量方法:
- 质量检查表
- 质量测试
- 质量配置文件
3. 软件架构演化
- 演化原因:
- 需求变更
- 技术更新
- 性能优化
- 安全加固
- 演化策略:
- 渐进式演化:逐步修改
- 激进式演化:大规模重构
- 架构重构:
- 保持功能不变,改善内部结构
- 目的:降低复杂度、提高可维护性
4. 技术债务
- 定义:为快速交付而采取的短期技术决策所积累的额外成本
- 类型:
- 刻意债务:有意为之,计划偿还
- 无意债务:经验不足导致
- 管理策略:定期偿还、控制新增
5. 遗留系统演化策略
- 四种策略:
| 策略 | 适用条件 | 特点 | |------|---------|------| | 包装(封装) | 系统功能基本可用 | 外部包装新接口 | | 迁移 | 系统部分可用 | 逐步迁移到新平台 | | 替换 | 系统无法维护 | 全部替换 | | 共存 | 新旧系统需并行 | 数据同步 |
6. 架构恢复与重建
- 逆向工程:从现有代码恢复设计
- 再工程:改造现有系统
- 前向工程:按新需求重新设计
7. 软件重构
- 定义:在不改变软件可观察行为的前提下,改善内部结构
- 原则:
- 小步重构、频繁测试
- 保持功能不变
- 代码坏味道驱动
- 常见重构:
- 提取方法
- 重命名
- 消除重复代码
- 简化条件表达式
8. 架构级维护
- 维护与架构的关系:架构质量直接影响维护成本
- 好的架构特征:高内聚低耦合、模块化、可扩展
- 架构腐化原因:缺乏文档、需求变更无控制、短期决策积累
真题考点映射
| 真题 | 考点 | 章节 | |------|------|------| | 2024下论文 | 软件维护 | 10-架构演化 | | 2023上论文 | 软件架构演进 | 10-架构演化 | | 2023下综合知识 | 维护类型 | 10-架构演化 |
易错点/陷阱
- 完善性维护占比最大(60-80%)——不是排错性
- 重构不改变可观察行为——如果改了就不是重构而是修改
- 技术债务不一定是坏事,刻意债务是合理的短期策略
- 逆向工程是从代码→设计,前向工程是从需求→设计,不要混淆
记忆口诀
- 四种维护:排适完预(排错、适应、完善、预防)——完善占比最大
- 遗留系统四策略:包迁替共(包装、迁移、替换、共存)
- 重构三原则:小步测试、功能不变、坏味道驱动