第三关 · 质量属性与架构评估
总时长:48 小时 | 目标:解决"什么是'好'的架构?怎么评估?怎么量化?" 考试映射:综合知识 5-8 题 | 案例分析:⭐ 2022年11月必答题(效用树填空+架构风格对比,25分) | 论文:《论软件架构评估方法》《论软件质量属性分析》⭐ 高频
Step 1:本关资料(海量输入)
| 资料类型 | 具体资料 | 用途 | |---------|---------|------| | 教材 | 《架构师教程》第 6-7 章(质量属性、架构评估) | 掌握六大质量属性定义、ATAM 评估流程 | | 真题 | 2020-2025 综合知识·质量属性部分(约 40 题) | 锁定高频考点(属性分类、效用树、ATAM) | | 案例真题 | 2022年11月案例一(效用树填空+架构对比,25分) | 背诵标准答题模板,这是案例分析最高分题 | | 论文参考 | ATAM 评估论文范文 | 学习论文中质量属性分析的展开方式 |
精准阅读策略:
- 六大质量属性定义表必背,每年考
- 质量属性场景六要素必背(源-激-境-品-应-度)
- ATAM 四个关键概念必背(风险/非风险/敏感/权衡点)
Step 2:本关心智模型
模型 1:质量属性雷达图——"好架构 = 在多个维度上达到目标"
- 核心思想:架构没有绝对的"好",只有在多个质量属性上达到目标的"合适"。就像雷达图,每个方向代表一个质量属性,好架构就是雷达图覆盖面积足够大、且形状符合业务需求。
- 关键变量:性能(快慢)、可用性(能不能用)、安全性(安不安全)、可修改性(好不好改)、功能性(做不做得成)、可变性(能不能变)
- 应用场景:效用树填空题、质量属性分类题、案例题中的场景六要素描述
- 局限性:质量属性之间经常冲突(安全性和性能、可用性和一致性),不可能同时达到最优
- 考试映射:每年必考 5-8 题
| 属性 | 核心定义 | 关键指标 | 考试一句话 | |------|---------|---------|-----------| | 性能 | 系统的响应能力 | 吞吐量、响应时间 | 快慢问题 | | 可用性 | 系统正常运行的比例 | MTBF/(MTBF+MTTR) | 修得快,不停机 | | 安全性 | 防止未授权访问和数据泄露 | 机密性、完整性、不可否认性、可控性 | 进不来、改不了、赖不掉、管得住 | | 可修改性 | 系统变更的难易程度 | 可维护性、可扩展性、可移植性 | 改得动 | | 功能性 | 系统完成期望工作的能力 | — | 做得到 | | 可变性 | 架构演变成其他架构的能力 | 产品线基础 | 变得了 |
考试陷阱:
- 数据延迟时间 ≠ 可用性指标(可用性关注可用时间、故障间隔)
- 服务器修复能力 ≠ 易用性指标(易用性关注用户满意度、学习曲线)
- 数据格式约束 → 功能性需求,不是质量属性
模型 2:质量属性场景六要素——"用标准化格式描述质量需求"
- 核心思想:质量属性不能笼统地说"系统要快",必须用"谁在什么环境下对什么做了什么,系统怎么反应,多快反应"的标准格式来精确描述。这就是六要素。
- 关键变量:刺激源(谁)→ 刺激(干了啥)→ 环境(啥情况)→ 制品(谁被干)→ 响应(咋反应)→ 响应度量(多快)
- 应用场景:案例题中描述质量属性场景、效用树叶子节点
- 局限性:六要素只描述单个场景,不涉及多个场景之间的优先级排序
- 考试映射:每年必考 2-3 题
记忆口诀:源-激-境-品-应-度
标准答题格式:
场景:系统主站点电力中断后,应在 5 秒内将请求重定向到备用站点。
- 刺激源:电力中断
- 刺激:系统主站点断电
- 环境:正常运行时突然断电
- 制品:系统
- 响应:将请求重定向到备用站点
- 响应度量:5 秒内
模型 3:ATAM 评估——"用效用树+权衡分析找到架构的优缺点"
- 核心思想:ATAM(架构权衡分析法)是一种系统化的架构评估方法,核心工具是效用树(把质量属性按优先级排列成树),通过分析架构决策来识别风险点、敏感点和权衡点。
- 关键变量:风险点(可能导致问题)、非风险点(经过验证合理)、敏感点(参数变化影响质量属性)、权衡点(一个好了另一个差了)
- 应用场景:案例题中识别风险/敏感/权衡点、选择题判断评估方法
- 局限性:ATAM 评估耗时较长,需要多个利益相关者参与
- 考试映射:每年必考 2-3 题
三大评估方法对比:
| 方法 | 全称 | 关注点 | 关系 | |------|------|--------|------| | SAAM | 场景架构分析法 | 可修改性 | 最早的,基础 | | ATAM | 架构权衡分析法 | 多属性权衡 | SAAM 的升级版 ⭐ | | CBAM | 成本效益分析法 | 成本 vs 收益 | 在 ATAM 之上构建 |
ATAM 效用树结构:根 → 质量属性 → 属性分类 → 质量属性场景(叶子节点)
Step 3:本关分歧点
分歧点 1:SAAM vs ATAM vs CBAM——"评估方法怎么选?"
| 维度 | A 方:SAAM(简单够用) | B 方:ATAM(全面权衡) | C 方:CBAM(成本导向) | |------|---------------------|---------------------|---------------------| | 核心信念 | 评估可修改性就够了 | 必须在多个质量属性之间权衡 | 架构选型要看投入产出比 | | 适用场景 | 小型项目、关注可修改性 | 中大型项目、多质量属性约束 | 预算有限、需要在多个方案中选 | | 考试结论 | 关注可修改性 | 用效用树 ⭐ | 选择架构看利益相关者 |
考试倾向:"用效用树评估" → 答案永远是 ATAM。"选择架构的核心依据" → CBAM(利益相关者角度的实现)。
分歧点 2:风险点 vs 敏感点 vs 权衡点——"怎么区分?"
| 维度 | 风险点 | 敏感点 | 权衡点 | |------|--------|--------|--------| | 定义 | 可能导致质量属性达不到要求 | 一个参数变化影响某个质量属性 | 同时影响多个质量属性(此消彼长) | | 判断 | "这样做会不会出问题?" | "改这个参数,会影响 XX 属性" | "这样做 A 好了,但 B 差了" | | 例子 | 单台 Redis 存储设备会话(单点故障) | 心跳间隔时间(缩短→开销增大,延长→检测延迟) | 缓存策略(缓存→性能↑一致性↓) |
考试倾向:2025年11月真题"增加加密影响安全性和性能,体现的是权衡点"——只要涉及"一个好了另一个差了",就是权衡点。
分歧点 3:质量属性 vs 功能性需求——"属于哪个分类?"
| 维度 | 质量属性 | 功能性需求 | |------|---------|-----------| | 核心 | 系统做得"怎样" | 系统做"什么" | | 关键词 | 响应时间、宕机切换、安全防护、灵活修改 | 用户名格式、数据字段、业务规则 | | 考试陷阱 | "用户名以字母开头,长度≥6" → 功能性需求,不是质量属性! | "3秒内响应" → 性能(质量属性) |
为什么重要:效用树填空题的第一步就是区分哪些需求是质量属性场景、哪些是功能性需求,分错就丢分。
Step 4:闯关任务(动手验证)
任务 1:效用树填空练习(2h)
用 2022年11月真题(a-k 场景)练习:
- 标注每个场景属于哪个质量属性
- 排除不属于质量属性的功能性需求
- 限时 10 分钟完成填空
任务 2:质量属性六要素描述(2h)
为你的 AIoT 项目写 3 个质量属性场景,每个用六要素描述:
- 设备接入服务可用性场景(宕机切换)
- 设备心跳上报性能场景(响应时间)
- 设备数据安全性场景(加密传输)
任务 3:ATAM 分析实战(3h)
对你的 AIoT 设备接入服务做 ATAM 分析:
- 列出 2 个风险点 + 1 个非风险点
- 列出 1 个敏感点 + 1 个权衡点
- 说明为什么这么判断
Step 4.5:💬 AI 教练对话
使用时机:效用树填空不确定时、ATAM 概念混淆时、论文需要素材时
Review Agent(效用树填空题批改)
我正在做效用树填空题。
题目场景:[粘贴 a-k 的场景描述]
我的答案是:
(1) [质量属性1]
(2) [质量属性2]
(3) [场景 a-k]
(4) [场景 a-k]
(5) [场景 a-k]
(6) [场景 a-k]
请帮我检查:
1. 每个质量属性归类是否正确?
2. 有没有场景不属于质量属性的?
3. 每个场景的六要素是否完整?
Theory Agent(概念深挖)
我分不清 ATAM 的四个关键概念:风险点、非风险点、敏感点、权衡点。
请帮我:
1. 用 AIoT 项目的具体例子解释这四个概念的区别
2. 给 5 个场景描述,让我练习判断属于哪种类型
3. 考试中这四个概念的常见出题方式是什么?
Step 5:关 AI 自测
⚠️ 关闭 AI,独立完成后再对照答案
自测题 1(综合知识风格)
哪个架构评估方法利用效用树来评估架构?
A. SAAM B. ATAM C. CBAM D. CMM
点击查看答案
答案:B. ATAM
ATAM(架构权衡分析法)的核心工具就是效用树,用于按优先级排列质量属性场景。SAAM 关注可修改性但不使用效用树,CBAM 关注成本效益。
自测题 2(综合知识风格)
系统增加加密算法的使用,会影响系统的安全性和性能,此处体现的是架构的什么?
A. 风险点 B. 权衡点 C. 敏感点 D. 非风险点
点击查看答案
答案:B. 权衡点
权衡点的定义:一个架构决策同时影响多个质量属性,且影响方向相反(一个好了另一个差了)。加密↑ → 安全性↑但性能↓,这就是典型的权衡点。
注意区分:
- 风险点 = 可能出问题
- 敏感点 = 参数变化影响某个属性
- 权衡点 = 同时影响多个属性,此消彼长
自测题 3(效用树填空)
某系统有以下需求场景: (a) 系统应在 0.3 秒内响应用户操作 (b) 用户名以字母开头,长度不少于 6 字符 (c) 系统宕机后 10 秒内启动热备份 (d) 系统需要记录所有用户操作日志 (e) 支持外观调整,4 人天内完成
请将 (a)(c)(d)(e) 分别归入正确的质量属性。
点击查看答案
| 场景 | 质量属性 | 原因 | |------|---------|------| | (a) 0.3 秒内响应 | 性能 | 有量化响应时间指标 | | (c) 10 秒内启动热备份 | 可用性 | 宕机恢复 → 可用性 | | (d) 记录用户操作日志 | 安全性 | 审计追踪 → 安全性(可控性) | | (e) 外观调整 4 人天内 | 可修改性 | 调整/修改 → 可修改性 |
注意:(b) 用户名格式约束是功能性需求,不属于任何质量属性。
自测题 4(案例分析风格)
请用六要素描述以下场景:"在 10 万设备同时在线的高峰期,设备接入服务宕机后,需在 30 秒内自动切换到备用节点。"
点击查看答案
- 刺激源:设备接入服务宕机(系统故障)
- 刺激:服务停止响应
- 环境:10 万设备同时在线的高峰期
- 制品:设备接入服务
- 响应:自动切换到备用节点
- 响应度量:30 秒内完成切换
属于可用性场景(故障恢复 → 可用性)
Step 6:费曼输出 + 信心校准
一句话版本
质量属性 = 架构的"好"的标准(性能/可用性/安全性/可修改性),用六要素精确描述场景,用 ATAM 效用树评估权衡,识别风险点/敏感点/权衡点。
三分钟版本
(对着镜子或录音讲 3 分钟,不看书)
质量属性是架构师最核心的工作对象。六大质量属性分别是:性能(快慢)、可用性(能不能用)、安全性(安不安全)、可修改性(好不好改)、功能性(做不做得成)、可变性(能不能变)。
描述质量属性要用六要素:刺激源、刺激、环境、制品、响应、响应度量。比如"系统宕机后 10 秒内启动热备份",这就是一个可用性场景。
评估架构用 ATAM 方法,核心工具是效用树(按优先级排列质量属性场景)。ATAM 要识别四个关键概念:风险点(可能出问题)、非风险点(验证合理)、敏感点(参数影响属性)、权衡点(一个好了另一个差了)。比如加密提升安全性但降低性能,就是权衡点。
效用树填空题的关键:先区分质量属性和功能性需求,再找量化指标匹配场景。
信心自评
| 知识点 | 信心 1-5 | 能否给别人讲清楚? | 需要复习? | |--------|---------|------------------|-----------| | 六大质量属性定义 | /5 | □ 能 □ 不能 | □ 需要 | | 质量属性场景六要素 | /5 | □ 能 □ 不能 | □ 需要 | | 效用树 4 层结构 | /5 | □ 能 □ 不能 | □ 需要 | | ATAM 四个关键概念 | /5 | □ 能 □ 不能 | □ 需要 | | SAAM/ATAM/CBAM 区分 | /5 | □ 能 □ 不能 | □ 需要 | | 效用树填空做题 | /5 | □ 能 □ 不能 | □ 需要 |
📌 常见误区
- "数据延迟时间 = 可用性指标" → 错!可用性关注的是可用时间、故障间隔
- "用户名格式约束 = 安全性" → 错!这是功能性需求
- "风险点和权衡点是一回事" → 错!风险点 = 可能出问题;权衡点 = 此消彼长
- "效用树叶子节点越多越好" → 错!效用树只填 4 个质量属性分支,选最典型的场景
🔧 工程映射
- 架构评审 = 实际工作中的 ATAM 评估(可能不正式,但逻辑一样)
- SLA 定义 = 质量属性场景六要素的工程实践("99.9% 可用性"="年停机 ≤ 8.76 小时")
- 技术选型决策 = 识别权衡点(选 Redis 提升性能但降低一致性)
✅ 通关标准
- [ ] 信心自评所有知识点 ≥ 4/5
- [ ] 三分钟版本能脱稿讲完
- [ ] 自测题正确率 ≥ 75%
- [ ] 能在 3 分钟内完成一道效用树填空题(12 分标准)
- [ ] 能用六要素描述 2 个 AIoT 项目场景
- [ ] 真题正确率 ≥ 80%
- [ ] 论文素材:完成 ATAM 评估相关论文初稿