系统架构设计师备考站2027 上半年 · 通勤版 ⌕搜索
本页目录 · 5 节
  1. 一、知识框架
  2. 二、必背要点
  3. 10.1 演化和定义的关系
  4. 10.2 面向对象软件架构演化过程
  5. 10.3 演化方式分类
  6. 10.4 演化原则
  7. 10.5 演化评估方法
  8. 10.6 大型网站系统架构演化实例
  9. 10.7 软件架构维护
  10. 三、易混淆概念对比
  11. 四、常见考法与出题角度
  12. 五、速记与自测

第 10 章 软件架构的演化和维护

对应大纲:科目 1-9 软件架构的演化和维护|教材 P330–P368|优先级 ★★★★|综合知识估分 3~5 分
读法:用「一变四类、二种形态、十个阶段」抓骨架;演化原则与大型网站十阶段是案例、论文最好用的两条线。


一、知识框架

软件架构的演化和维护
├─ 10.1 演化和定义的关系:定义是基线,演化是再定义
├─ 10.2 面向对象架构演化过程
│   ├─ 对象演化:类/对象、属性、方法、关系
│   ├─ 消息演化:消息增删、参数、方向、顺序
│   ├─ 复合片段演化:alt/opt/loop/par 片段
│   └─ 约束演化:前后置条件、不变量、时序
├─ 10.3 演化方式分类
│   ├─ 按时期:设计时演化|运行时演化
│   ├─ 按形态:静态演化|动态演化
│   └─ 按粒度:原子演化|复合演化
├─ 10.4 演化原则:成本、投资、一致性、渐进等
├─ 10.5 演化评估:过程已知|过程未知
├─ 10.6 大型网站架构演化十阶段
└─ 10.7 架构维护:知识|修改|版本|可维护性度量

二、必背要点

10.1 演化和定义的关系

  • 架构定义:对构件、连接件、约束及质量目标的明确描述,是演化的基线。
  • 架构演化:生命周期中因需求、技术、环境变化对架构所做的增量修改。
  • 二者关系:定义是演化的起点与边界,演化是定义的修改与再定义,形成「定义→演化→新定义」的循环。定义不清,演化必然失控;演化不记录,定义就会失真。
  • 演化不等于重写:优先在原有结构上增量调整,保持风格与约束一致。

10.2 面向对象软件架构演化过程

演化类型演化内容示例
对象演化类与对象的增删、属性方法变化、可见性与关系变化订单域新增「优惠券」对象
消息演化消息增删、名称参数方向变化、顺序与同步方式变化下单流程新增「锁库存」消息
复合片段演化alt、opt、loop、par 等片段的增删改与嵌套变化支付流程增加 opt 优惠分支
约束演化前置后置条件、不变量、时序与守卫条件变化库存数量不得为负

10.3 演化方式分类

分类维度类型含义与特点
演化时期设计时演化开发阶段修改模型与代码,可停机、成本低
演化时期运行时演化系统运行中修改,不停机,难度与风险高
演化形态静态演化停机后修改并重新部署,需保证版本一致
演化形态动态演化运行中替换构件,需处理状态迁移与兼容
演化粒度原子演化单构件或单操作变更,影响范围小
演化粒度复合演化多构件协同变更,需调整接口与交互

动态演化的两个关键词:软件动态性(运行时可被修改的能力)与动态替换(热替换构件并保持系统状态一致)。难点在状态迁移、版本兼容与事务一致性。

10.4 演化原则

原则含义
演化成本最小用最小改动满足变更,避免过度设计
保护投资者利益不轻易推倒重来,保护既有投资
保持架构一致性新构件遵循原有风格、接口与约束
需求驱动每次演化都对应真实需求,不为技术而改
渐进可控小步演化、可分步上线、可回退
风险可控先做影响分析再实施,设置止损点
演化可追溯记录变更原因、决策与版本
质量不降演化后质量属性不低于基线

10.5 演化评估方法

维度过程已知过程未知
数据条件有完整演化记录与中间版本只有首尾版本或少量版本
评估方法逐版本度量、变更影响分析、还原演化路径版本差异对比、结构与行为差异分析
输出演化成本、风险与质量变化趋势变更影响范围、演化代价估算

常用度量:结构(耦合、内聚、复杂度、模块数)、性能(响应时间、吞吐量)、可靠性(MTBF、失效数)、可维护性(变更影响集、回归范围)。

10.6 大型网站系统架构演化实例

阶段解决什么问题引入什么技术副作用
1 单一应用访问量小、快速上线一台服务器承载应用、数据库、文件单点、无扩展能力
2 应用数据分离应用与数据库争抢资源应用服务器、数据库服务器、文件服务器网络调用增加
3 使用缓存读多写少、数据库压力大本地缓存、分布式缓存一致性、缓存穿透
4 应用集群单机并发达到上限负载均衡加多应用节点会话共享、状态管理
5 读写分离读压力持续增长主从复制、读写分离主从延迟、一致性
6 代理与 CDN静态资源与入口压力反向代理、CDN缓存刷新、成本上升
7 分布式存储单机存储容量上限分布式文件系统、分库分表运维复杂、跨库事务
8 NoSQL 与搜索海量非结构化查询NoSQL、搜索引擎数据同步、一致性
9 业务拆分系统耦合、迭代变慢垂直拆分、微服务分布式事务、链路变长
10 分布式服务服务治理与复用注册中心、消息队列、容器化治理成本、故障定位难

演化规律:先分离(应用与数据)、再扩展(缓存、集群、读写分离)、后拆分(业务与服务);每一步解决上一个瓶颈,同时引入新的复杂度。

10.7 软件架构维护

维护内容主要做法产出
知识管理维护架构文档、设计决策与领域知识库可查可用的架构知识
修改管理变更申请、影响分析、审批、实施、验证变更记录与验证结论
版本管理建立基线、分支管理、配置项与回滚机制可追溯的版本历史
可维护性度量度量可理解性、可测试性、可修改性、稳定性维护性评估报告

三、易混淆概念对比

AB关键区别
架构演化架构维护演化强调结构随需求变化;维护强调运行期的修正与保障
静态演化动态演化静态需停机修改再部署;动态在运行中替换构件
原子演化复合演化原子改单构件、影响小;复合改多构件、需协调接口
设计时演化运行时演化设计时在开发阶段完成;运行时在系统运行中完成
对象演化消息演化对象演化改结构与属性;消息演化改交互与顺序
复合片段演化约束演化前者改流程分支与循环;后者改条件与不变量
过程已知评估过程未知评估前者有完整版本链可逐版度量;后者只能对比首尾推断
架构演化架构重写演化是增量调整、保护投资;重写是推倒重来、风险高
版本管理配置管理版本管理管版本线与基线;配置管理范围更大,含全部配置项
可维护性可修改性可维护性是维护视角的综合属性;可修改性是架构评估中的质量属性

四、常见考法与出题角度

题型出题角度典型问法答题要点
单选演化分类「运行中替换构件属于哪种演化」动态演化、运行时演化
单选粒度判断「同时修改多个构件属于」复合演化
单选阶段排序「大型网站演化中读写分离之后是」反向代理与 CDN
单选原则理解「不推倒重来体现哪条原则」保护投资者利益
单选评估条件「缺少中间版本时采用哪种评估」过程未知的差异对比法
简答演化内容「面向对象架构演化包括哪四类」对象、消息、复合片段、约束
简答维护内容「架构维护包括哪些工作」知识、修改、版本、可维护性度量
案例题角度演化路径设计给出业务增长问「架构应如何演进」按十阶段顺序对应瓶颈给方案,并说明副作用
论文可用角度正文举例「论文写系统演进时怎么用本章」可写:「系统上线后经历三次演进:先应用与数据分离,再集群与读写分离,最后按业务垂直拆分,每一步都以架构基线为依据、以影响分析为前提。」

五、速记与自测

速记

  • 演化四类:对、消、复、约
  • 两形态:静、动;两粒度:原、复;两时期:设、运
  • 十阶段:单分缓群读,代文搜拆服
  • 维护四项:知、改、版、度
  • 原则核心:成本最小、保护投资、保持一致

自测

  1. 大型网站架构演化中,引入缓存主要解决什么问题,又带来什么副作用?
  2. 静态演化与动态演化的根本区别是什么?
  3. 演化过程未知时,如何评估演化影响?

答案:1. 解决读多写少导致的数据库压力,副作用是一致性与缓存穿透;2. 是否需要停机修改并重新部署;3. 对比演化前后版本的结构与行为差异,结合度量估算影响范围与代价。