ONEPSOFT | 软考学习知识库
deepread7|论文7 软件架构演化与维护(大型网站10阶段演化可维护性)详解
对应清单条目:#7 论文·软件架构演化与维护(大型网站 10 阶段演化 / 可维护性)
教材来源:《系统架构设计师教程(第 2 版)》第 10 章 软件架构演化与维护(10.1–10.7)
一、知识点定位
一句话定位:架构是 " 演化来的,不是设计来的 "——业务增长驱动架构一步步拆分(大型网站 10 阶段),而演化成本控制、平滑演化、模块独立演化等原则保证 " 改得起、改得稳 ";可维护性靠度量(耦合/圈复杂度)来量化。
二、教材原文精摘(第 10 章,原封不动)
【演化重要性】原文:
本质上讲,软件架构的演化就是软件整体结构的演化……人们通常说软件架构是演化来的,而不是设计来的。
软件架构演化使得软件系统演化更加便捷,主要有 3 个原因:①形式化可视化表示提高可构造性;②设计方案涵盖整体/配置/约束信息助于预判演化;③组件耦合描述助于动态调整。
【演化分类】原文:
针对演化过程是否处于系统运行时期,分为静态演化 (Static Evolution) 和动态演化 (Dynamic Evolution)。
静态演化 5 步骤:软件理解 → 需求变更分析 → 演化计划 → 系统重构 → 系统测试。
动态演化:系统运行期间不停止功能完成演化,更难;动态性分交互/结构/架构三级;内容包括属性改名、行为变化、拓扑改变、风格变化。
【体系结构演化 6 步骤】原文:
1.需求变化归类;2.制订体系结构演化计划;3.修改/增加/删除构件;4.更新构件相互作用;5.构件组装与测试;6.技术评审(不符则第 2–6 步迭代)。
【演化原则(关键)】原文:
18 种可持续演化原则。关键:①演化成本控制(演化成本明显小于重新开发);②进度可控;③风险可控;④主体维持(平均增量平稳);⑤系统总体结构优化;⑥平滑演化(速率趋稳);⑦目标一致;⑧模块独立演化;⑨影响可控(一模块变影响可控);⑩复杂性可控;⑪有利于重构;⑫有利于重用;⑬设计原则遵从;⑭适应新技术;⑮环境适应;⑯标准依从;⑰质量向好;⑱适应新需求。
【大型网站 10 阶段(10.6)】原文:
①单体架构(应用/数据/文件同机);②应用与数据分离(3 台服务器);③使用缓存(二八定律,本地 + 分布式缓存);④使用服务集群(负载均衡分担压力);⑤数据库读写分离(主从热备);⑥反向代理和 CDN(缓存加速);⑦分布式文件系统和分布式数据库;⑧NoSQL 和搜索引擎;⑨业务拆分(分产品线独立部署,消息队列分发);⑩分布式服务(提取共用业务独立部署)。
【可维护性 / 维护类型】原文:
软件架构维护涉及架构知识管理、修改管理(建立隔离区域 Region of Quiescence 使修改影响最小)、版本管理。
维护方法 3 类:更正性维护、适应性维护、完善性维护。
可维护性度量(组件图):①圈复杂度 CCN(实践 CCN≤10 为宜);②扇入扇出度 FFC;③模块间耦合度 CBO(CBO 越大越易受修改影响、可维护性越差)。
三、系统解读(逐段讲透)
核心一句话总结:架构随业务 " 演化 " 而非一次设计;大型网站 10 阶段是被瓶颈一步步逼出来的生长史;演化原则(成本/平滑/独立/可控)保证改得动,可维护性度量(CCN/FFC/CBO)量化改得好不好。
四、工程实践举例(土木工程视角)
" 改扩建/分期建设 " 与架构演化同构:
知识点 ↔ 工程实践 对照表
| 教材知识点要素 | 你的实践场景对应 | 映射说明 |
|---|---|---|
| 架构演化(非一次设计) | 建筑分期改扩建 | 随业务生长,非一次定型 |
| 大型网站 10 阶段 | 小楼→综合体分期建设 | 每步被瓶颈逼出 |
| 演化成本\<重开发 | 改扩建\<推倒重建 | 改得起才演化 |
| 静态演化 5 步 | 改造设计流程 | 理解→变更→计划→施工→验收 |
| 模块独立演化/影响可控 | 结构模块化(装配式) | 改一处不塌一片 |
| CBO 耦合度(大=差) | 构件连接数(多=脆) | 缠一起难维护 |
| 隔离区域 | 施工围蔽隔离区 | 修改影响最小 |
| 维护三类 | 维修/适应性改造/功能提升 | 更正/适应/完善 |
当知识点涉及生长顺序时,补充演化链(单体→…→分布式服务):
流程图(结构化呈现)
运维视角提示:演化原则里的 " 平滑演化/影响可控/模块独立演化 " 正是运维友好的架构特征——每次变更影响小、可灰度、易回滚,运维才不慌。可维护性度量(CBO 低、CCN≤10)是 " 这系统好不好运维 " 的提前量指标。换句话说,架构演化设计阶段就决定了运维是天堂还是地狱——最该建立 " 演化即运维 " 的心智。