【软件系统架构】系列十三:系统架构设计——系统架构评估方法

1. SAAM(Software Architecture Analysis Method,场景驱动架构分析)
-
定位:最早的架构评估方法(90 年代提出),主要分析 可修改性。
-
流程:
-
场景开发:收集典型修改场景(如”增加支付方式”)。
-
架构描述:用组件/连接件等方式描述现有架构。
-
单场景评估:逐个分析架构能否满足该修改场景。
-
场景交互:考虑场景之间是否有冲突或耦合。
-
总体评估:汇总修改成本、风险,形成结论。
-
产出物:修改代价表(每个场景的修改复杂度)、架构适应性分析报告。
-
优点:简单易用,强调需求-架构关系。
-
缺点:主要针对”可修改性”,对性能、安全等其他属性覆盖不足。
-
适用场景:早期原型/产品族演进评估,架构重构可行性分析。
2. ATAM(Architecture Tradeoff Analysis Method,架构权衡分析)
-
定位:SAAM 的改进版,最常用的架构评估方法,关注多个质量属性。
-
核心工具:效用树(Utility Tree)
-
根:系统总体目标
-
一级分支:质量属性(性能/安全/可用性/可修改性等)
-
二级分支:属性子特征(如性能→响应时间、吞吐量)
-
叶子节点:具体场景(QAS),并为其打分(重要性、风险度)。
-
目标:识别三类关键点
-
敏感点:影响单一属性的关键设计点(如缓存对性能敏感)。
-
权衡点:一个设计同时影响多个属性(如冗余既提高可用性也增加成本)。
-
风险点:潜在隐患(如单点故障未被识别)。
-
适用属性:性能、可用性、安全性、可修改性。
-
场景类型:
-
用例场景(正常功能流程,如”用户下单响应 < 200ms”)
-
增长场景(演进或扩展,如”支持新支付方式”)
-
探测场景(极端或压力场景,如”在 10 倍流量下系统行为”)
-
流程(简化版):
-
确认业务驱动 → 质量属性 → 效用树
-
收集并优先级化场景
-
分析架构满足度 → 找敏感点、权衡点、风险点
-
输出评估报告与改进建议
-
产出物:效用树、风险清单、敏感点&权衡点清单、评估报告。
-
优点:全面、系统化,广泛应用于工业界。
-
缺点:过程相对复杂,需要多方参与(业务+开发+运维)。
-
适用场景:企业级项目、跨部门架构评审、关键系统上线前。
3. CBAM(Cost Benefit Analysis Method,成本效益分析)
-
定位:ATAM 的扩展版,在架构决策中引入 ROI(投资回报率)概念。
-
核心思想:架构不是只看”能不能”,还要看”值不值得”。
-
步骤:
-
整理并优先级化场景(和 ATAM 类似)。
-
建立策略-场景-响应映射:每个策略对应哪些场景,以及带来的效益。
-
分配效用并计算收益:给每个策略的”贡献”打分。
-
扣除成本:估算开发/运维/硬件/培训成本。
-
选择 ROI 最高的架构策略。
-
产出物:ROI 排序表、推荐实施路线。
-
优点:架构决策与经济成本挂钩,利于说服管理层。
-
缺点:成本/效益估算难度大,需要经验与数据支持。
-
适用场景:大型系统、资源有限需做优先级取舍时。
4. 其他方法
| 方法 | 定位 | 特点 |
|---|---|---|
| SAEM |
|
|
| SAABNet |
|
|
| SACMM |
|
|
| SASAM |
|
|
| ALRRA |
|
|
| AHP |
|
|
| COSMIC+UML |
|
|
5. 架构评估方法演进图(SAAM→ATAM→CBAM→扩展方法)

6. 方法对比与选择建议
| 方法 | 关注点 | 复杂度 | 典型应用 |
|---|---|---|---|
| SAAM |
|
|
|
| ATAM |
|
|
|
| CBAM |
|
|
|
| 其他方法 |
|
|
|
7. 总结
(1)SAAM → ATAM → CBAM 构成三层进阶链路:
-
SAAM:可修改性(基础) -
ATAM:综合质量属性 + 风险识别 -
CBAM:引入 ROI,做经济性决策
(2)评估产出物比过程更有价值:效用树、风险点清单、ROI 排序,可作为团队后续改进指南。
(3)适配场景选择方法:早期选 SAAM,企业应用 ATAM,预算优先级用 CBAM,学术/定量分析用其他方法。
夜雨聆风