软考系统架构设计师:架构评估方法 ATAM 与 SAAM 全解析(含四类判定速查)
2026/9/24 7:11:37 网站建设 项目流程

上一篇讲了架构风格——那是「架构长什么样」。这一篇讲架构评估——那是「这个架构到底好不好,怎么证明」。两者在教材里前后相邻,在考卷上也经常一起出现:风格题考你识别,评估题考你判断。

一、架构评估在评什么

先说清楚一个前提,否则后面的方法会显得很玄。

架构评估最大的特点是:它不运行代码。评估发生在详细设计和编码之前,此时系统还不存在,你没法压测、没法看监控。那怎么判断架构好坏?

答案是用场景当探针

思路是这样的:架构决策会影响质量属性(性能、可用性、可修改性等),而质量属性可以写成具体的、可度量的场景。于是只要把场景往架构上一"放",就能看出这个架构在哪些场景下会吃力——这是一种绕过实现、直接推理的评估方式。

所以场景的质量直接决定评估的质量。这就引出了那个必考的六要素:

要素

含义

例子(主库宕机场景)

刺激源

谁发起的刺激

数据库节点

刺激

发生了什么

主库宕机

环境

发生时的系统状态

系统正常运行中

制品

受影响的部分

主库与数据访问服务

响应

系统应该做什么

检测故障 → 切换备库 → 恢复连接 → 告警

响应度量

响应的量化标准

30 秒内切换、5 分钟内恢复

六要素缺一不可,且响应度量必须量化。只写"提高性能"是不得分的,必须落到"响应时间小于 1 秒""可用性 99.99%"这种可核对的标准上。

教材里质量属性场景主要关注六类:可用性、可修改性、性能、可测试性、易用性、安全性

二、SAAM:最早的架构分析方法

SAAM(Software Architecture Analysis Method)是最早形成文档、并被广泛使用的架构分析方法。它的出身很具体——最初就是为了分析架构的可修改性,后来才扩展到其他质量属性。

它的五步流程如下:

步骤

做的事

1

场景开发

各类风险承担者协商,开发能体现系统活动或未来变化的场景

2

软件体系结构描述

用各方都能理解的表示法描述架构(计算构件、数据构件、连接关系)

3

单个场景的评估

把场景分类为直接场景与间接场景,分别处理

4

场景交互的评估

找出需要修改同一批构件的场景,衡量构件的划分质量

5

总体评估

按重要性给场景和场景交互赋权值,加权得出总体评价

直接场景 vs 间接场景(核心概念)

这是 SAAM 里最容易考、也最容易记反的一组:

类型

定义

处理方式

直接场景

现有架构已经能够支持的场景

说清架构是如何实现它的

间接场景

需要对现有构件/连接件做出修改才能支持的场景

列出所需修改,并估算改动代价

记忆钩子:改不动的叫直接,要动刀的叫间接。

场景交互为什么重要

如果两个语义上不相干的间接场景,却需要修改同一个构件,这说明什么?说明这个构件承担了本该分开的职责——功能划分不合理

反过来,语义相近的场景交互在同一个构件上,是正常的。

所以场景交互评估,本质上是在检测架构的关注点分离做得如何。这一点在案例题里经常作为"请分析该架构存在什么问题"的答案素材。

三、ATAM:四阶段九步

ATAM(Architecture Tradeoff Analysis Method)是 SAAM 的演进。它名字里的Tradeoff(权衡)就是核心差异:

SAAM 主要看架构满足不满足某个质量属性;ATAM 进一步看多个质量属性之间如何互相牵制

ATAM 关注的质量属性通常是四类:性能、安全性、可修改性、可用性

九个步骤按四个阶段组织(死记九步容易乱,按阶段记就稳了):

阶段

步骤

关键输出

一 呈现

1 呈现 ATAM 方法

参与者对方法的理解

2 呈现商业动机

重要质量属性需求清单

3 呈现架构

对架构方法的初步理解

二 调查与分析

4 识别架构方法

已采用的架构风格/战术目录

5 生成质量属性效用树

标注重要度与难度的场景集合

6 分析架构方法

敏感点、权衡点、风险点、非风险点

三 测试

7 头脑风暴并确定场景优先级

全体干系人投票产生的排序

8 再次分析架构方法

更多四类判定,交叉验证步骤 6

四 报告

9 呈现评估结果

评估报告

三个年年考的易混点

第一,步骤 4 只识别、不分析。这一步是把已有的架构方法登记下来,分析推迟到步骤 6。如果选项说"步骤 4 用于评估架构方法的优劣",是错的。

第二,两批人、两批场景。步骤 5 的效用树场景来自项目决策者一侧;步骤 7 再由更广泛的干系人头脑风暴补充并投票。这个设计是刻意的——防止评估被小圈子的需求绑架

第三,步骤 6 与步骤 8 做的事同构。都是"针对场景分析架构、产出四类判定",区别只在场景来源:一个来自效用树,一个来自集体头脑风暴。两者互为交叉验证,所以这个阶段叫"测试"。

ATAM 的三类参与角色

角色类别

具体角色

评估小组

评估负责人、场景书记员、进度书记员、过程观察员

项目决策者

架构师、项目经理、客户代表

其他项目干系人

开发、测试、运维等受架构影响的人

注意参与时机的差异:步骤 1–6 只有评估小组与项目决策者参与;步骤 7 起,更广泛的干系人才加入头脑风暴并投票。评估通常分两天或两次集会进行。

四、效用树:ATAM 的核心工具

效用树(Utility Tree)是把"系统好不好"这个模糊问题结构化的工具。

它的结构是四层:

层级

内容

例子

第 1 层(根)

效用

系统整体效用

第 2 层

质量属性

性能、可修改性、可用性、安全性

第 3 层

属性细化

响应时间、吞吐量、可扩展性

第 4 层(叶)

场景

具体的、可测试的场景

叶节点要标注优先级对(重要度, 难易度),各取 H / M / L。例如:

  • (H, M):高并发下单响应小于 1 秒——重要,但实现有中等难度
  • (H, L):重要且容易实现——这类应该优先处理,投入产出比最高
  • (M, L):中等重要、容易实现

效用树生成后会经过修剪,通常只保留不超过 50 个场景。为什么要修剪?因为效用树是给后续步骤 6 做分析用的输入,场景太多会导致分析无法收敛。

效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)重点记忆

五、四类判定:案例题的给分点

这是整章最有"得分感"的一块。ATAM 的分析结论最终落在四个概念上,案例题几乎每年都出现。

类别

定义

一句话识别

敏感点

一个或多个构件(和/或构件之间关系)的特性,对实现某个质量属性至关重要

「它一变,某个属性跟着变」

权衡点

影响多个质量属性的敏感点

「它一变,好几个属性一起变,有好的有坏的」

风险点

可能导致问题的架构决策,不支持某项质量属性或对其有负面影响

「这样设计,某个属性恐怕达不成」

非风险点

经分析确认没有问题的架构决策,有时本身就是优势

「这样设计没问题,可以放心」

关键理解:这是两个独立维度

很多资料把四者串成一条判断链,容易把人绕晕。更准确的理解是两个互相独立的维度

  • 维度一(影响范围):影响一个属性 → 敏感点;影响多个属性 → 权衡点
  • 维度二(风险性质):可能危及目标 → 风险点;确认无虞 → 非风险点

同一个决策完全可以既是权衡点、又是风险点。比如"为了提高吞吐量把连接池调到 500",它同时影响性能和资源占用(权衡点),如果评估发现高并发下会导致内存告罄,那它同时也是风险点。

用一道典型题收尾:

「提高加密级别」属于哪一类?

加密级别提高,安全性变好、性能变差——一个决策影响多个质量属性,因此是权衡点。这也是教材里频繁出现的原例。

六、三种评估方法对比

维度

SAAM

ATAM

CBAM

定位

最早的架构分析方法

SAAM 的演进

进一步引入经济视角

关注点

可修改性为主

多质量属性的权衡(性能/安全性/可修改性/可用性)

成本与收益(ROI)决策

核心工具

场景、场景交互

效用树+ 四类判定

成本效益模型

流程规模

5 步

四阶段 9 步

一句话记住三者的递进关系:SAAM 回答"行不行",ATAM 回答"哪里行哪里不行、为什么",CBAM 回答"值不值得"。

七、选择题高频陷阱清单

  1. 直接场景 / 间接场景别记反:现有架构就能支持的是"直接",需要改架构的才是"间接"。
  2. ATAM 是自顶向下还是自底向上:效用树是自上而下细化(效用 → 属性 → 场景),不是自底向上归纳。
  3. 步骤 4 只识别不分析,出现"评估优劣"即为错误项。
  4. 效用树的优先级对是(重要度, 难易度),两个维度,不要只写一个。
  5. 效用树的根是"效用",不是"质量属性",也不是"场景"。
  6. 敏感点的定义落在"构件/构件之间关系的特性"上,不是笼统的"设计决策"。
  7. 权衡点是"影响多个质量属性的敏感点"——它是敏感点的特例,这个包含关系常被反过来考。
  8. 风险点与非风险点是"判断结论",不是流程步骤,不会出现在九步里。
  9. 步骤 7 才引入更广泛的干系人,步骤 1–6 没有。
  10. 响应度量必须量化,凡是只写"提高""改善"而没有指标的,都是错的。

八、记忆锚点汇总

考点

锚点

评估的前提

不运行代码,用场景当探针

场景六要素

刺激源 · 刺激 · 环境 · 制品 · 响应 · 响应度量

SAAM 五步

场景开发 → 架构描述 → 单场景评估 → 场景交互 → 总体评估

直接 vs 间接

改不动的叫直接,要动刀的叫间接

ATAM 四阶段

呈现 → 调查与分析 → 测试 → 报告

效用树四层

树根—质量属性—属性分类—质量属性场景

敏感点 vs 权衡点

影响一个属性 vs 影响多个属性

风险 vs 非风险

是否危及质量目标

三种方法

SAAM 行不行 → ATAM 哪里不行 → CBAM 值不值

九、小结

架构评估这一章的复习顺序,建议和上一篇反过来:先背答案,再理解流程。

理由是:四类判定、效用树结构、SAAM 五步、ATAM 四阶段九步,这些都是定义型考点,背下来就能拿分,性价比极高;而"为什么 ATAM 要分两批人收场景"这类理解型内容,是帮你记住定义、防止记混的辅助。

先把硬骨头(定义与步骤)啃下来,理解会自然跟上。

下一篇我会拆「ABSD 基于架构的软件设计」——它和架构风格、架构评估共同构成本章选择题的主力分值。


本文为软考系统架构设计师备考系列文章,内容依据《系统架构设计师教程》与历年真题考点分布整理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询