软考系统架构设计师 ·「架构评估」知识总文档
软考系统架构设计师 ·「架构评估」知识总文档
单一合并总文档 · 覆盖思维导图→理论基石→质量属性→评估方法分类→三大场景方法详解→场景映射→选型比较→易混陷阱→避坑实践→关联图→双轨口诀→速记总表→典型考题→背诵路线全链路
1. 思维导图(全章概览)
架构评估 (Architecture Evaluation)
│
├─ 基本概念
│ ├─ 目的: 降低维护成本 / 减少修复风险 / 发现潜在问题 / 验证质量需求
│ ├─ 时机: 架构设计之后、详细设计之前
│ └─ 活动: 方法选择 → 构建框架 → 实施评估 → 结果分析
│
├─ 评估方式(三类)
│ ├─ ① 基于调查问卷/检查表 → 主观、简单、CATAM
│ ├─ ② 基于度量 → 量化、需度量模型、耦合/内聚度量
│ └─ ③ 基于场景 ★主流 → 场景驱动、SAAM/ATAM/CBAM/ARID
│
├─ 质量属性(六大)
│ ├─ 性能 → 响应时间/吞吐量/并发数
│ ├─ 可用性 → MTTF/MTTR/MTBF, A=MTTF/(MTTF+MTTR)
│ ├─ 安全性 → 机密性/完整性/可用性(CIA)
│ ├─ 可修改性 → 修改成本/影响范围
│ ├─ 可测试性 → 测试覆盖率/可控性/可观察性
│ └─ 易用性 → 学习曲线/操作步骤/错误率
│
├─ 质量属性场景(6要素)
│ └─ 刺激源 → 刺激 → 环境 → 制品 → 响应 → 响应度量
│
├─ 基于场景的评估方法(三大)
│ ├─ SAAM → 单属性(可修改性) → 5步 → 最早
│ ├─ ATAM → 多属性权衡 ★核心 → 9步 → 敏感点/权衡点/风险点
│ └─ CBAM → 成本效益 → ATAM扩展 → 经济决策
│
├─ ATAM核心概念
│ ├─ 敏感点: 影响单一质量属性的参数
│ ├─ 权衡点: 影响多个质量属性的参数(权衡点⊆敏感点)
│ ├─ 风险点: 可能引起问题的架构决策
│ └─ 非风险点: 不会引起问题的架构决策
│
└─ 效用树(Utility Tree)
├─ 根: Utility
├─ 第二层: 质量属性
├─ 第三层: 属性细化
└─ 叶子: 场景(标注重要度I + 难度D, H/M/L)
2. 理论基石
2.1 架构评估的定义
软件架构评估是在架构设计阶段,对架构方案能否满足质量属性需求进行系统性分析与判断的过程。
关键区分:架构评估关注的是质量属性(非功能需求),而非功能正确性。功能正确性由测试保证。
2.2 架构评估的目的
| 目的 | 说明 |
|---|---|
| 降低维护成本 | 架构阶段发现问题的修复成本远低于编码/测试阶段 |
| 减少修复风险 | 提前识别风险点,避免架构返工 |
| 发现潜在问题 | 暴露隐藏的质量属性缺陷 |
| 验证质量需求 | 确认架构能否满足性能/可用性/安全性等要求 |
| 为架构改进提供依据 | 评估结果指导架构优化方向 |
| 促进涉众达成共识 | 评估过程是沟通协调过程 |
2.3 架构评估的时机
需求分析 → 架构设计 → ★架构评估★ → 详细设计 → 编码 → 测试 → 部署
↑
评估在此处进行
- 最佳时机:架构设计完成之后、详细设计之前
- 原因:此时架构已成型可评估,但尚未投入大量编码成本,发现问题修改代价最小
2.4 架构评估的活动
- 评估方法选择:根据项目特点选择合适的评估方法
- 构建评估框架:确定评估的属性、场景、度量标准
- 评估过程实施:按方法步骤执行评估
- 评估结果分析:分析发现的风险点、权衡点,形成评估报告
2.5 评估的参与者
| 角色 | 职责 |
|---|---|
| 评估小组 | 组织和执行评估(评估负责人、评估者) |
| 架构师 | 呈现架构方案、回答提问 |
| 项目决策者 | 提供商业动机、决策依据 |
| 涉众 | 提供场景、关注点(开发者、用户、维护者、测试者) |
3. 质量属性详解(六大质量属性)
3.1 性能
定义:系统处理事件的响应能力,用响应时间或吞吐量来衡量。
| 要素 | 内容 |
|---|---|
| 刺激源 | 内部/外部事件(用户请求、定时任务、消息) |
| 刺激 | 事件到达系统 |
| 环境 | 系统运行模式(正常、过载、峰值) |
| 制品 | 整个系统或特定组件 |
| 响应 | 系统处理事件 |
| 响应度量 | 响应时间、吞吐量、并发数、延迟抖动 |
关键指标:
- 响应时间 = 处理时间 + 排队时间 + 传输时间
- 吞吐量 = 单位时间内处理的请求数(TPS/QPS)
- 并发数 = 同时处理的请求数
- Little律:N = X × R (并发数 = 吞吐量 × 响应时间)
3.2 可用性
定义:系统正常运行的能力,用系统正常运行时间占总时间的比例来衡量。
| 要素 | 内容 |
|---|---|
| 刺激源 | 内部/外部故障(硬件宕机、软件崩溃、网络中断) |
| 刺激 | 故障发生 |
| 环境 | 系统运行状态(正常、降级、恢复中) |
| 制品 | 整个系统或特定组件 |
| 响应 | 系统检测故障、恢复运行、通知相关方 |
| 响应度量 | 故障检测时间、修复时间、可用性比例 |
关键公式:
- MTTF(Mean Time To Failure):平均无故障时间
- MTTR(Mean Time To Repair):平均修复时间
- MTBF = MTTF + MTTR(平均故障间隔时间)
- 可用性 A = MTTF / (MTTF + MTTR) × 100% = MTTF / MTBF × 100%
可用性等级:
| 可用性 | 停机时间/年 | 等级 |
|---|---|---|
| 99% | 3.65天 | 2个9 |
| 99.9% | 8.76小时 | 3个9 |
| 99.99% | 52.6分钟 | 4个9 |
| 99.999% | 5.26分钟 | 5个9 |
| 99.9999% | 31.5秒 | 6个9 |
3.3 安全性
定义:系统在向合法用户提供服务的同时,阻止非授权访问的能力。
| 要素 | 内容 |
|---|---|
| 刺激源 | 攻击者、合法用户、系统 |
| 刺激 | 攻击尝试、合法访问、数据传输 |
| 环境 | 系统运行状态(在线、离线、被攻击) |
| 制品 | 系统服务、数据、资源 |
| 响应 | 认证、授权、加密、审计、拒绝 |
| 响应度量 | 攻击成功率、检测时间、恢复时间 |
CIA三要素:
- 机密性(Confidentiality):信息不被未授权访问
- 完整性(Integrity):信息不被未授权篡改
- 可用性(Availability):授权用户能正常访问
安全手段:认证 → 授权 → 审计 → 加密(AAA+E)
3.4 可修改性
定义:系统能够快速、低成本地适应变更的能力。
| 要素 | 内容 |
|---|---|
| 刺激源 | 开发者、维护者、用户需求变更 |
| 刺激 | 变更请求(功能增加、修改、删除、技术升级) |
| 环境 | 系统运行/设计状态 |
| 制品 | 系统特定部分(模块、组件、接口) |
| 响应 | 查找修改位置、进行修改、测试验证 |
| 响应度量 | 修改工作量、修改时间、影响范围、引入缺陷数 |
可修改性策略:
- 局部化修改:模块化、信息隐藏
- 防止连锁反应:高内聚低耦合、接口抽象
- 推迟绑定时间:配置化、插件化
3.5 可测试性
定义:软件通过测试发现缺陷并确认质量的难易程度。
| 要素 | 内容 |
|---|---|
| 刺激源 | 测试者、测试工具 |
| 刺激 | 测试用例执行 |
| 环境 | 设计/开发/部署阶段 |
| 制品 | 系统代码、接口、设计 |
| 响应 | 执行测试、捕获结果 |
| 响应度量 | 测试覆盖率、测试执行时间、缺陷发现率 |
可测试性两大要素:
- 可控性:能否控制被测组件的输入和执行
- 可观察性:能否观察被测组件的输出和状态
3.6 易用性
定义:用户能够轻松、高效地使用系统的能力。
| 要素 | 内容 |
|---|---|
| 刺激源 | 用户 |
| 刺激 | 用户操作(学习使用、执行任务、从错误恢复) |
| 环境 | 用户使用环境 |
| 制品 | 系统用户界面 |
| 响应 | 系统提供反馈、引导、错误提示 |
| 响应度量 | 学习时间、任务完成时间、操作错误率、用户满意度 |
易用性策略:
- 运行时策略:任务取消、撤销/重做、进度反馈
- 设计时策略:界面一致性、操作引导、错误预防
3.7 六大质量属性速记
| 质量属性 | 核心刺激 | 核心响应度量 | 关键公式/指标 |
|---|---|---|---|
| 性能 | 事件到达 | 响应时间/吞吐量 | N=X×R (Little律) |
| 可用性 | 故障发生 | 可用性比例 | A=MTTF/(MTTF+MTTR) |
| 安全性 | 攻击尝试 | 攻击成功率 | CIA三要素 |
| 可修改性 | 变更请求 | 修改工作量 | 影响范围/修改时间 |
| 可测试性 | 测试执行 | 测试覆盖率 | 可控性+可观察性 |
| 易用性 | 用户操作 | 任务完成时间 | 学习曲线/错误率 |
4. 质量属性场景描述(6要素)
4.1 场景的6个要素
一个完整的质量属性场景由以下6个要素组成:
刺激源 ──→ 刺激 ──→ 环境 ──→ 制品 ──→ 响应 ──→ 响应度量
(谁) (什么) (何时) (何处) (怎样) (多好)
| 要素 | 含义 | 性能示例 | 可用性示例 |
|---|---|---|---|
| 刺激源 | 产生刺激的实体 | 用户 | 硬件故障 |
| 刺激 | 到达系统的事件 | 请求到达 | 服务器宕机 |
| 环境 | 刺激发生时的条件 | 峰值负载 | 正常运行 |
| 制品 | 被刺激的部分 | 处理模块 | 整个系统 |
| 响应 | 系统的反应 | 处理请求 | 切换备用 |
| 响应度量 | 响应的可度量属性 | <2秒 | <30秒恢复 |
4.2 六要素记忆要点
- 前三个(刺激源、刺激、环境)描述"输入侧"
- 后三个(制品、响应、响应度量)描述"输出侧"
- 制品是连接输入和输出的桥梁
4.3 场景的分类
| 场景类型 | 来源 | 用途 |
|---|---|---|
| 用例场景 | 涉众直接提出 | 反映实际使用情况 |
| 生长场景 | 涉众提出但非当前用例 | 反映未来演化需求 |
| 探索场景 | 评估团队设计 | 探索架构边界/极限 |
5. 评估方法分类(三类)
5.1 基于调查问卷(或检查表)的方法
| 特征 | 说明 |
|---|---|
| 原理 | 通过问卷/检查表让相关人员回答预设问题 |
| 优点 | 简单易行、成本低、可快速进行 |
| 缺点 | 主观性强、依赖回答者经验、难以量化 |
| 适用 | 初步评估、快速筛查 |
| 代表 | CATAM(CMU SEI的问卷式ATAM变体) |
5.2 基于度量的方法
| 特征 | 说明 |
|---|---|
| 原理 | 对架构的某些属性建立度量模型,量化计算 |
| 优点 | 客观、可量化、可比较 |
| 缺点 | 需要建立度量模型、度量指标难定义、需工具支持 |
| 适用 | 有成熟度量模型的项目 |
| 代表 | 基于耦合度/内聚度的度量、架构依赖矩阵分析 |
5.3 基于场景的方法 ★(最主流、最重要)
| 特征 | 说明 |
|---|---|
| 原理 | 用场景激发质量属性,分析架构对场景的支持程度 |
| 优点 | 针对性强、可操作、结果具体、可权衡多属性 |
| 缺点 | 场景选择依赖经验、需涉众参与 |
| 适用 | 架构设计阶段的质量评估(软考重点) |
| 代表 | SAAM、ATAM、CBAM、ARID |
5.4 三类方法比较
| 维度 | 调查问卷 | 度量 | 场景 |
|---|---|---|---|
| 主观性 | 高 | 低 | 中 |
| 量化程度 | 低 | 高 | 中 |
| 成本 | 低 | 高 | 中 |
| 准确性 | 低 | 高 | 高 |
| 适用阶段 | 早期 | 后期 | 设计阶段 |
| 软考地位 | 了解 | 了解 | ★重点 |
6. 三大场景评估方法详解
6.1 SAAM(Software Architecture Analysis Method)
全称:软件架构分析法(Software Architecture Analysis Method)
特点:
- 最早的基于场景的架构评估方法(由Kazman等人于1993年提出)
- 适用于单一质量属性的评估(主要是可修改性)
- 不考虑多属性间的权衡
- ATAM的前身
SAAM的五步骤:
步骤1: 形成场景
└─ 涉众提出场景,收集所有关心的变更/使用场景
步骤2: 描述体系结构(架构)
└─ 架构师描述架构方案,用组件-连接关系图表示
步骤3: 对场景进行分类和优先级排序
├─ 分类: 直接场景(不需修改即可支持) vs 间接场景(需修改才能支持)
└─ 排序: 涉众对场景投票,确定优先级
步骤4: 对单个场景进行评估
└─ 对每个间接场景,确定需要修改的组件,估计修改工作量
步骤5: 评估场景的相互作用
└─ 分析多个场景是否影响同一组件,相互作用多→该组件可能职责过重
SAAM关键概念:
- 直接场景:当前架构无需修改即可支持的场景
- 间接场景:需要修改架构才能支持的场景(评估重点)
- 场景交互:多个场景影响同一组件,表明该组件耦合度高
6.2 ATAM(Architecture Trade-off Analysis Method)★核心
全称:架构权衡分析法(Architecture Trade-off Analysis Method)
特点:
- 在SAAM基础上发展而来(CMU SEI, 2000)
- 适用于多质量属性的权衡分析
- 核心输出:敏感点、权衡点、风险点、非风险点
- 软考最重要的评估方法
ATAM的九步骤:
| 阶段 | 步骤 | 名称 | 说明 |
|---|---|---|---|
| 呈现与收集 | 1 | ATAM方法的呈现 | 评估负责人向涉众介绍ATAM方法 |
| 2 | 商业动机的呈现 | 项目决策者介绍商业目标、约束、驱动因素 | |
| 3 | 架构的呈现 | 架构师呈现待评估架构方案 | |
| 分析与评估 | 4 | 对架构方法进行分类 | 识别架构中使用的风格/模式/策略 |
| 5 | 生成质量属性效用树 | 构建效用树,确定高优先级场景 | |
| 6 | 分析架构方法 | 针对高优先级场景分析架构,找敏感点/权衡点/风险点 | |
| 场景与再分析 | 7 | 讨论和分级场景 | 涉众提出更多场景(用例场景+探索场景),投票分级 |
| 8 | 再次分析架构方法 | 对新高优先级场景重复步骤6的分析 | |
| 结果呈现 | 9 | 呈现结果 | 汇总并呈现评估结果 |
ATAM九步骤分四个阶段:
阶段一: 呈现与收集 (步骤1-3) → 方法/动机/架构
阶段二: 分析与评估 (步骤4-6) → 分类/效用树/分析
阶段三: 场景与再分析 (步骤7-8) → 场景讨论/再分析
阶段四: 结果呈现 (步骤9) → 汇总输出
ATAM核心概念详解:
| 概念 | 定义 | 示例 |
|---|---|---|
| 敏感点 | 一个架构属性参数,该参数变化会影响某一质量属性 | 缓存大小→影响性能 |
| 权衡点 | 一个架构属性参数,该参数变化会影响多个质量属性 | 缓存大小→影响性能(↑)和内存占用(↑) |
| 风险点 | 架构决策中可能引起问题的决策 | 未设置数据库连接池上限 |
| 非风险点 | 架构决策中经分析不会引起问题的决策 | 使用成熟的负载均衡方案 |
敏感点与权衡点的关系:
权衡点 ⊆ 敏感点
权衡点一定是敏感点(影响多个→必然影响某一个)
敏感点不一定是权衡点(只影响一个→不构成权衡)
例:
缓存大小影响性能 → 性能敏感点
缓存大小影响内存 → 内存敏感点
缓存大小同时影响性能和内存 → 权衡点
6.3 CBAM(Cost Benefit Analysis Method)
全称:成本效益分析法(Cost Benefit Analysis Method)
特点:
- 在ATAM基础上发展而来
- 在质量属性分析基础上,进一步考虑经济成本
- 对架构策略进行成本-效益分析,辅助经济决策
CBAM的基本思路:
- 继承ATAM的评估结果(场景、架构策略)
- 估计每个架构策略的成本
- 估计每个架构策略对场景的效益(效用收益)
- 计算效益/成本比(收益效用÷成本)
- 选择效益成本比最优的策略
CBAM步骤:
| 步骤 | 名称 | 说明 |
|---|---|---|
| 1 | 整理ATAM结果 | 收集场景、架构策略、响应度量 |
| 2 | 确定策略成本 | 估计实施每个策略的成本 |
| 3 | 确定策略收益 | 估计策略对质量属性的效用提升 |
| 4 | 计算期望值 | 效益期望 = Σ(场景概率 × 效用收益) |
| 5 | 计算效益成本比 | 选择比值最高的策略 |
6.4 ARID方法(了解)
全称:Active Reviews for Intermediate Designs(中间设计主动评审)
- 用于评估部分完成的架构设计
- 适用于架构尚未全部完成时的阶段性评估
- 软考了解即可
7. 效用树(Utility Tree)详解
7.1 效用树的结构
效用树是ATAM方法步骤5的核心工具,用于系统地组织质量属性和场景:
Utility (根节点 - 效用)
├── 性能
│ ├── 响应时间
│ │ ├── 场景1 (I:H, D:M) ← 重要度高、难度中
│ │ └── 场景2 (I:M, D:H)
│ └── 吞吐量
│ └── 场景3 (I:H, D:H)
├── 可用性
│ ├── 故障恢复
│ │ └── 场景4 (I:H, D:L)
│ └── 数据持久性
│ └── 场景5 (I:M, D:M)
├── 安全性
│ └── 抗攻击
│ └── 场景6 (I:H, D:H)
├── 可修改性
│ └── 功能扩展
│ └── 场景7 (I:M, D:L)
├── 可测试性
│ └── ...
└── 易用性
└── ...
7.2 效用树的层级
| 层级 | 内容 | 示例 |
|---|---|---|
| 第0层(根) | Utility(效用) | Utility |
| 第1层 | 质量属性 | 性能、可用性、安全性… |
| 第2层 | 质量属性细化 | 响应时间、吞吐量、故障恢复… |
| 第3层(叶子) | 具体场景 + (重要度I, 难度D) | 场景(I:H, D:M) |
7.3 重要度与难度评级
每个叶子节点场景标注两个评级:
| 评级 | 含义 | 取值 |
|---|---|---|
| I(Importance) | 场景对业务的重要程度 | H(高)、M(中)、L(低) |
| D(Difficulty) | 架构实现该场景的难度 | H(高)、M(中)、L(低) |
优先级判断:
- (H, H):重要且难 → 最高优先级,必须重点分析
- (H, L):重要但容易 → 次高优先级
- (L, H):不重要但难 → 较低优先级
- (L, L):不重要且容易 → 最低优先级
考点:ATAM优先分析 (H,H) 的场景,因为它们既重要又难以实现,风险最高。
8. 场景映射(质量属性→评估方法)
| 质量属性 | 首选方法 | 场景类型 | 关键分析内容 |
|---|---|---|---|
| 可修改性 | SAAM | 变更请求 | 修改组件、修改工作量、场景交互 |
| 性能 | ATAM | 事件到达 | 响应时间、吞吐量、瓶颈分析 |
| 可用性 | ATAM | 故障发生 | MTTF/MTTR、冗余策略、故障恢复 |
| 安全性 | ATAM | 攻击尝试 | 认证授权、加密、攻击面分析 |
| 可测试性 | ATAM | 测试执行 | 可控性、可观察性、测试覆盖 |
| 易用性 | ATAM | 用户操作 | 界面反馈、操作流程、错误处理 |
| 多属性权衡 | ATAM | 多类场景 | 敏感点、权衡点、风险点 |
| 经济决策 | CBAM | ATAM结果 | 成本效益比、策略选择 |
9. 选型比较(SAAM vs ATAM vs CBAM)
| 比较维度 | SAAM | ATAM | CBAM |
|---|---|---|---|
| 全称 | Software Architecture Analysis Method | Architecture Trade-off Analysis Method | Cost Benefit Analysis Method |
| 中文名 | 软件架构分析法 | 架构权衡分析法 | 成本效益分析法 |
| 提出时间 | 1993年 | 2000年 | 2001年 |
| 评估属性 | 单一属性(可修改性) | 多属性权衡 | 多属性+经济成本 |
| 步骤数 | 5步 | 9步 | 5步(基于ATAM结果) |
| 核心输出 | 场景交互分析 | 敏感点/权衡点/风险点 | 效益成本比 |
| 权衡分析 | 无 | 有 | 有(含经济权衡) |
| 效用树 | 无 | 有 | 继承ATAM |
| 成本考虑 | 无 | 无 | 有 |
| 复杂度 | 低 | 高 | 最高 |
| 关系 | ATAM的前身 | SAAM的扩展 | ATAM的扩展 |
| 软考地位 | 重要 | ★最重要 | 了解 |
方法演进关系:
SAAM (1993, 单属性)
↓ 扩展
ATAM (2000, 多属性权衡) ★核心
↓ 扩展
CBAM (2001, 多属性+成本)
10. 易混陷阱(高频易错点辨析)
| 序号 | 易混点 | 正确理解 | 常见错误 |
|---|---|---|---|
| 1 | 敏感点 vs 权衡点 | 权衡点影响多个质量属性,敏感点影响某一个 | 认为敏感点影响多个属性 |
| 2 | 权衡点与敏感点关系 | 权衡点一定是敏感点,反之不成立 | 认为两者无包含关系 |
| 3 | 风险点 vs 非风险点 | 风险点可能引起问题,非风险点不会 | 认为风险点一定引起问题 |
| 4 | SAAM评估的属性 | SAAM主要评估可修改性(单属性) | 认为SAAM可评估多属性 |
| 5 | ATAM评估的属性 | ATAM评估多属性权衡 | 认为ATAM只评估单一属性 |
| 6 | 场景6要素 | 刺激源、刺激、环境、制品、响应、响应度量 | 漏掉"环境"或"制品" |
| 7 | 可用性公式 | A = MTTF/(MTTF+MTTR) | 误用 A = MTTF/MTTR |
| 8 | MTBF与MTTF关系 | MTBF = MTTF + MTTR | 认为MTBF = MTTF |
| 9 | 评估时机 | 架构设计后、详细设计前 | 认为在编码后评估 |
| 10 | 评估关注点 | 关注质量属性(非功能需求) | 认为评估功能正确性 |
| 11 | 效用树叶节点 | 场景标注(I重要度, D难度) | 认为标注(优先级, 成本) |
| 12 | ATAM优先分析 | 优先分析(H,H)场景 | 认为优先分析(H,L)场景 |
| 13 | 直接场景 vs 间接场景 | 直接场景无需修改,间接场景需修改 | 混淆两者定义 |
| 14 | CBAM基础 | CBAM基于ATAM结果扩展 | 认为CBAM独立于ATAM |
| 15 | 场景来源 | 用例场景(涉众)+生长场景(涉众)+探索场景(评估组) | 忽略探索场景 |
11. 避坑实践
11.1 评估过程避坑
| 陷阱 | 后果 | 对策 |
|---|---|---|
| 场景选择不充分 | 遗漏关键质量属性 | 涉众广泛参与+评估组补充探索场景 |
| 只关注直接场景 | 忽略架构修改需求 | 重视间接场景的分析 |
| 忽略场景交互 | 组件职责过重未发现 | SAAM步骤5必须执行 |
| 效用树构建不完整 | 质量属性遗漏 | 六大属性逐一展开 |
| 评级主观随意 | 优先级失真 | 涉众投票+讨论确定 |
| 混淆敏感点和权衡点 | 权衡分析错误 | 严格按定义判断影响属性数量 |
11.2 答题避坑
| 陷阱 | 对策 |
|---|---|
| 把"影响多个属性"的参数判为敏感点 | 影响多个→权衡点;影响一个→敏感点 |
| 可用性计算用错公式 | 牢记 A = MTTF/(MTTF+MTTR) |
| 漏写场景6要素 | 背"刺源刺激环境,制品响应度量" |
| SAAM/ATAM步骤记混 | SAAM=5步,ATAM=9步,记"5-9" |
| ATAM步骤顺序错 | 记四阶段:呈现收集→分析评估→场景再分析→结果呈现 |
12. 关联图(知识点关系图)
┌──────────────┐
│ 架构评估 │
└──────┬───────┘
│
┌────────────┼────────────┐
│ │ │
┌─────┴─────┐ ┌───┴───┐ ┌─────┴─────┐
│调查问卷 │ │ 度量 │ │ 基于场景★ │
└───────────┘ └───────┘ └─────┬─────┘
│
┌──────────────┼──────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ SAAM │ │ ATAM★ │ │ CBAM │
│ (5步) │ │ (9步) │ │ (5步) │
│ 单属性 │ │ 多属性权衡│ │ 成本效益 │
└─────┬─────┘ └─────┬─────┘ └───────────┘
│ │
│ ┌─────────┼─────────┐
│ │ │ │
│ 敏感点 权衡点 风险点
│ │ │ │
│ └────┬────┘ │
│ │ │
│ 权衡点⊆敏感点 │
│ │
┌─────┴────────────────────────┴─────┐
│ 效用树(Utility Tree) │
│ Utility→属性→细化→场景(I,D) │
└────────────────────────────────────┘
质量属性场景(6要素): 刺激源→刺激→环境→制品→响应→响应度量
六大质量属性: 性能 | 可用性 | 安全性 | 可修改性 | 可测试性 | 易用性
13. 双轨口诀
13.1 顺口溜口诀
六大质量属性:
性安安改测易 → 性能、安全、可用、可改、可测、易用
口诀: "信安安改测试"(性能-安全-可用-可修改-可测试-易用)
场景6要素:
刺源刺激环境,制品响应度量
口诀: "谁什么事何时何地,怎么做多好"
SAAM五步:
形成场景 → 描述架构 → 分类排序 → 单场景评估 → 场景交互
口诀: "形描分单交"(形描分单交,五步SAAM)
ATAM九步:
呈现方法 → 商业动机 → 架构呈现 → 方法分类 → 效用树 →
分析架构 → 场景分级 → 再分析 → 呈现结果
口诀: "方商架分树,析场再呈"(九步ATAM)
ATAM四阶段:
呈现收集 → 分析评估 → 场景再分析 → 结果呈现
口诀: "呈析场呈"(呈现-分析-场景-呈现)
敏感点/权衡点/风险点:
敏感单,权衡多,风险可能错,非风险不会错
口诀: "单敏多衡,险可非不"
可用性公式:
A = MTTF / (MTTF + MTTR)
口诀: "无故障除以总周期"(MTTF÷MTBF)
13.2 谐音口诀
三大方法:
SAAM → "傻"(单属性,简单最早)
ATAM → "啊叹"(多属性权衡,叹为观止,最核心)
CBAM → "西班"(成本效益,西班牙式精打细算)
联想: "傻人先做(SAAM最早),啊叹权衡(ATAM核心),西班算钱(CBAM成本)"
六大质量属性谐音:
性能-可用-安全-可修改-可测试-易用
谐音: "信以安改测试" → "性安安改测易"
联想: "信(性能)以安(可用)安(安全)改(可修改)测(可测试)易(易用)"
场景6要素谐音:
刺激源-刺激-环境-制品-响应-响应度量
谐音: "源激境品应量"
联想: "原(源)鸡(激)进(境)瓶(品)应(应)量(量)"
→ "原鸡进瓶应量" = 一只原鸡进瓶子看反应量
SAAM五步谐音:
形成-描述-分类-单评-交互
谐音: "形描分单交"
联想: "形(形成)描(描述)分(分类)单(单评)交(交互)"
→ "熊描分单交" = 熊描画分单个交
ATAM九步谐音:
方-商-架-分-树-析-场-再-呈
谐音: "方商架分树,析场再呈"
联想: "方(方法)商(商业)架(架构)分(分类)树(效用树)"
→ "方商架分树" = 方丈上架分树(方丈爬上架树分树杈)
"析(分析)场(场景)再(再析)呈(呈现)"
→ "析场再呈" = 洗场再呈(洗完场地再呈现)
敏感点vs权衡点谐音:
敏感点 → "敏单"(敏感影响单一)
权衡点 → "衡多"(权衡影响多个)
口诀: "敏单衡多,衡必是敏"
联想: "敏感的人只盯一个,权衡的人考虑多个;权衡者必敏感"
14. 速记总表(考前速查表)
14.1 评估方法速记表
| 方法 | 全称 | 步骤数 | 评估属性 | 核心输出 | 关系 |
|---|---|---|---|---|---|
| SAAM | Software Architecture Analysis Method | 5 | 单属性(可修改性) | 场景交互 | 最早 |
| ATAM | Architecture Trade-off Analysis Method | 9 | 多属性权衡 | 敏感点/权衡点/风险点 | SAAM扩展★ |
| CBAM | Cost Benefit Analysis Method | 5 | 多属性+成本 | 效益成本比 | ATAM扩展 |
| ARID | Active Reviews for Intermediate Designs | - | 部分架构 | 阶段性评估 | 了解 |
14.2 ATAM核心概念速记表
| 概念 | 定义 | 影响范围 | 包含关系 |
|---|---|---|---|
| 敏感点 | 参数变化影响某一质量属性 | 单一属性 | 被权衡点包含 |
| 权衡点 | 参数变化影响多个质量属性 | 多个属性 | ⊆敏感点 |
| 风险点 | 可能引起问题的架构决策 | - | - |
| 非风险点 | 不会引起问题的架构决策 | - | - |
14.3 质量属性速记表
| 属性 | 刺激 | 响应度量 | 关键公式 |
|---|---|---|---|
| 性能 | 事件到达 | 响应时间/吞吐量 | N=X×R |
| 可用性 | 故障发生 | 可用性比例 | A=MTTF/(MTTF+MTTR) |
| 安全性 | 攻击尝试 | 攻击成功率 | CIA |
| 可修改性 | 变更请求 | 修改工作量 | - |
| 可测试性 | 测试执行 | 覆盖率 | 可控+可观察 |
| 易用性 | 用户操作 | 完成时间 | - |
14.4 场景6要素速记表
| 序号 | 要素 | 含义 | 记忆 |
|---|---|---|---|
| 1 | 刺激源 | 产生刺激的实体 | 谁 |
| 2 | 刺激 | 到达系统的事件 | 什么 |
| 3 | 环境 | 刺激发生的条件 | 何时 |
| 4 | 制品 | 被刺激的部分 | 何处 |
| 5 | 响应 | 系统的反应 | 怎样 |
| 6 | 响应度量 | 可度量的响应属性 | 多好 |
14.5 SAAM五步速记表
| 步骤 | 名称 | 记忆 |
|---|---|---|
| 1 | 形成场景 | 形 |
| 2 | 描述架构 | 描 |
| 3 | 场景分类与优先级排序 | 分 |
| 4 | 单个场景评估 | 单 |
| 5 | 场景交互评估 | 交 |
14.6 ATAM九步速记表
| 阶段 | 步骤 | 名称 | 记忆 |
|---|---|---|---|
| 呈现收集 | 1 | ATAM方法呈现 | 方 |
| 2 | 商业动机呈现 | 商 | |
| 3 | 架构呈现 | 架 | |
| 分析评估 | 4 | 架构方法分类 | 分 |
| 5 | 生成效用树 | 树 | |
| 6 | 分析架构方法 | 析 | |
| 场景再分析 | 7 | 讨论分级场景 | 场 |
| 8 | 再次分析架构 | 再 | |
| 结果呈现 | 9 | 呈现结果 | 呈 |
14.7 可用性计算速记表
| 指标 | 全称 | 公式 |
|---|---|---|
| MTTF | Mean Time To Failure | 平均无故障时间 |
| MTTR | Mean Time To Repair | 平均修复时间 |
| MTBF | Mean Time Between Failures | MTTF + MTTR |
| A | Availability | MTTF/(MTTF+MTTR) × 100% |
14.8 可用性等级速记表
| 9的个数 | 可用性 | 年停机时间 |
|---|---|---|
| 2 | 99% | 3.65天 |
| 3 | 99.9% | 8.76小时 |
| 4 | 99.99% | 52.6分钟 |
| 5 | 99.999% | 5.26分钟 |
| 6 | 99.9999% | 31.5秒 |
15. 典型考题
15.1 选择题
【题1】 在ATAM方法中,()是指一个架构属性参数的变化会影响多个质量属性。
- A. 敏感点
- B. 权衡点
- C. 风险点
- D. 非风险点
答案:B
解析:权衡点是指影响多个质量属性的参数;敏感点只影响某一个质量属性。权衡点一定是敏感点,反之不成立。
【题2】 软件架构评估的主要目的不包括()。
- A. 降低维护成本
- B. 减少修复风险
- C. 验证功能正确性
- D. 发现潜在问题
答案:C
解析:架构评估关注的是质量属性(非功能需求),而非功能正确性。功能正确性由测试保证。
【题3】 以下关于SAAM和ATAM的叙述中,错误的是()。
- A. SAAM是最早的基于场景的架构评估方法
- B. ATAM是在SAAM基础上发展而来的
- C. SAAM适用于多质量属性的权衡分析
- D. ATAM的核心输出包括敏感点、权衡点和风险点
答案:C
解析:SAAM适用于单一质量属性(主要是可修改性)的评估,不考虑多属性权衡。多属性权衡是ATAM的特点。
【题4】 某系统的MTTF为99小时,MTTR为1小时,则该系统的可用性为()。
- A. 98%
- B. 99%
- C. 99.9%
- D. 99.99%
答案:B
解析:A = MTTF/(MTTF+MTTR) × 100% = 99/(99+1) × 100% = 99/100 × 100% = 99%。
【题5】 质量属性场景的6个要素中,不属于输入侧的是()。
- A. 刺激源
- B. 刺激
- C. 环境
- D. 制品
答案:D
解析:6要素中,前三个(刺激源、刺激、环境)描述输入侧,后三个(制品、响应、响应度量)描述输出侧。制品属于输出侧。
【题6】 ATAM方法中,效用树叶节点场景标注的两个评级是()。
- A. 优先级和成本
- B. 重要度和难度
- C. 风险和收益
- D. 频率和影响
答案:B
解析:效用树叶节点场景标注重要度I(Importance)和难度D(Difficulty),取值为H/M/L。ATAM优先分析(H,H)场景。
【题7】 SAAM方法中,需要修改架构才能支持的场景称为()。
- A. 直接场景
- B. 间接场景
- C. 用例场景
- D. 探索场景
答案:B
解析:直接场景是当前架构无需修改即可支持的场景;间接场景是需要修改架构才能支持的场景,是SAAM评估的重点。
【题8】 以下不属于基于场景的架构评估方法的是()。
- A. SAAM
- B. ATAM
- C. CBAM
- D. CATAM
答案:D
解析:CATAM是基于调查问卷的方法,不是基于场景的方法。SAAM、ATAM、CBAM都是基于场景的方法。
15.2 计算题
【题9】 某电商系统要求年可用性达到99.99%(4个9),即年停机时间不超过52.6分钟。已知该系统由3个串联子系统组成,各子系统MTTF和MTTR如下表,请计算系统整体可用性并判断是否满足要求。
| 子系统 | MTTF(小时) | MTTR(小时) |
|---|---|---|
| Web层 | 9990 | 1 |
| 应用层 | 9990 | 1 |
| 数据层 | 4995 | 1 |
解:
步骤1:计算各子系统可用性
- Web层:A₁ = 9990/(9990+1) = 9990/9991 ≈ 0.999900
- 应用层:A₂ = 9990/(9990+1) = 9990/9991 ≈ 0.999900
- 数据层:A₃ = 4995/(4995+1) = 4995/4996 ≈ 0.999800
步骤2:串联系统可用性 = 各子系统可用性之积
- A = A₁ × A₂ × A₃
- A = 0.999900 × 0.999900 × 0.999800
- A ≈ 0.999600
步骤3:换算为停机时间
- 年停机时间 = (1 - 0.999600) × 365 × 24 × 60
- = 0.000400 × 525600
- = 210.24 分钟
步骤4:判断
- 要求:≤ 52.6分钟
- 实际:210.24分钟 > 52.6分钟
- 结论:不满足99.99%可用性要求
改进建议:数据层MTTF最低,应优先提升数据层可用性(如增加主从冗余)。
【题10】 某系统采用ATAM评估,分析得到以下结果,请识别敏感点、权衡点、风险点。
| 架构参数 | 影响的质量属性 | 影响方向 |
|---|---|---|
| 缓存大小 | 性能 | ↑(增大提升性能) |
| 缓存大小 | 内存占用 | ↑(增大增加内存) |
| 连接池上限 | 性能 | ↑(增大提升性能) |
| 连接池上限 | 资源占用 | ↑(增大增加资源) |
| 连接池上限 | (未设置上限) | 可能耗尽资源 |
| 加密强度 | 安全性 | ↑(增强提升安全) |
| 加密强度 | 性能 | ↓(增强降低性能) |
解:
| 参数 | 分类 | 理由 |
|---|---|---|
| 缓存大小 | 权衡点 | 同时影响性能(↑)和内存占用(↑),影响多个属性 |
| 连接池上限(已设置) | 权衡点 | 同时影响性能(↑)和资源占用(↑) |
| 连接池上限(未设置) | 风险点 | 未设置上限可能耗尽资源,是可能引起问题的架构决策 |
| 加密强度 | 权衡点 | 同时影响安全性(↑)和性能(↓),影响多个属性 |
| 缓存大小→性能 | 敏感点 | 影响单一属性(性能),也是权衡点的组成部分 |
| 加密强度→安全性 | 敏感点 | 影响单一属性(安全性),也是权衡点的组成部分 |
要点:
- 权衡点一定是敏感点(影响多个→必然影响某一个)
- 缓存大小既是性能敏感点,又是内存敏感点,合起来是权衡点
【题11】 某系统在ATAM评估中构建效用树如下,请确定应优先分析的3个场景。
| 场景 | 质量属性 | 重要度(I) | 难度(D) |
|---|---|---|---|
| S1 | 性能 | H | H |
| S2 | 可用性 | H | L |
| S3 | 安全性 | M | H |
| S4 | 可修改性 | L | L |
| S5 | 性能 | H | M |
| S6 | 可用性 | H | H |
解:
ATAM优先分析 (H, H) 场景,因为既重要又难以实现,风险最高。
| 场景 | (I, D) | 优先级 | 是否优先分析 |
|---|---|---|---|
| S1 | (H, H) | 最高 | ★是 |
| S6 | (H, H) | 最高 | ★是 |
| S2 | (H, L) | 次高 | 否 |
| S5 | (H, M) | 中 | 否 |
| S3 | (M, H) | 较低 | 否 |
| S4 | (L, L) | 最低 | 否 |
优先分析的3个场景:S1、S6(仅2个(H,H)场景)
若需选第3个,按优先级选 S2(H,L) 或 S5(H,M)——重要度高且难度较低/中,实现风险次高。
【题12】 某系统采用CBAM方法进行架构策略选择,三个策略的成本效益如下,请选择最优策略。
| 策略 | 成本(万元) | 效益期望(万元) |
|---|---|---|
| 策略A | 50 | 200 |
| 策略B | 80 | 300 |
| 策略C | 100 | 350 |
解:
步骤1:计算各策略效益成本比
- 策略A:效益/成本 = 200/50 = 4.0
- 策略B:效益/成本 = 300/80 = 3.75
- 策略C:效益/成本 = 350/100 = 3.5
步骤2:比较
- 策略A(4.0) > 策略B(3.75) > 策略C(3.5)
结论:选择策略A,效益成本比最高(4.0)。
变式:若预算上限为90万元,则策略C(100万)超预算被排除,在A和B中选择,仍选策略A。
15.3 简答题
【题13】 简述ATAM方法的九个步骤及其四个阶段。
参考答案:
ATAM方法分四个阶段、九个步骤:
阶段一:呈现与收集
- ATAM方法的呈现:评估负责人向涉众介绍ATAM方法
- 商业动机的呈现:项目决策者介绍商业目标和约束
- 架构的呈现:架构师呈现待评估架构方案
阶段二:分析与评估
4. 对架构方法进行分类:识别架构使用的风格/模式/策略
5. 生成质量属性效用树:构建效用树,确定高优先级场景
6. 分析架构方法:针对高优先级场景找敏感点/权衡点/风险点
阶段三:场景与再分析
7. 讨论和分级场景:涉众提出更多场景,投票分级
8. 再次分析架构方法:对新高优先级场景重复分析
阶段四:结果呈现
9. 呈现结果:汇总评估结果
【题14】 简述敏感点、权衡点、风险点、非风险点的定义及其关系。
参考答案:
| 概念 | 定义 |
|---|---|
| 敏感点 | 一个架构属性参数,该参数的变化会影响某一质量属性 |
| 权衡点 | 一个架构属性参数,该参数的变化会影响多个质量属性 |
| 风险点 | 架构决策中可能引起问题的决策 |
| 非风险点 | 架构决策中经分析不会引起问题的决策 |
关系:
- 权衡点一定是敏感点(影响多个属性→必然影响某一个),反之不成立
- 敏感点和权衡点描述的是架构参数对质量属性的影响
- 风险点和非风险点描述的是架构决策是否有问题
16. 背诵路线建议
第一阶段:核心概念(1天)
- 六大质量属性:性能、可用性、安全性、可修改性、可测试性、易用性
- 口诀:“性安安改测易”
- 场景6要素:刺激源、刺激、环境、制品、响应、响应度量
- 口诀:“源激境品应量”
- 可用性公式:A = MTTF/(MTTF+MTTR),MTBF = MTTF + MTTR
第二阶段:三大方法(1天)
- SAAM:5步,单属性(可修改性),最早
- 口诀:“形描分单交”
- ATAM:9步,多属性权衡,最核心
- 口诀:“方商架分树,析场再呈”
- CBAM:5步,成本效益,ATAM扩展
第三阶段:ATAM核心(1天)
- 敏感点/权衡点/风险点/非风险点定义及关系
- 口诀:“单敏多衡,衡必是敏”
- 效用树结构:Utility→属性→细化→场景(I,D)
- 优先分析(H,H)场景
- ATAM四阶段:呈现收集→分析评估→场景再分析→结果呈现
第四阶段:计算与综合(1天)
- 可用性计算:串联=各可用性之积,并联=1-各不可用性之积
- 敏感点/权衡点识别:看影响属性数量
- CBAM效益成本比计算
- 效用树优先级排序
第五阶段:口诀固化(0.5天)
- 反复背诵所有双轨口诀
- 默写速记总表
考前速记清单
□ 六属性: 性安安改测易
□ 6要素: 源激境品应量
□ SAAM 5步: 形描分单交 (单属性-可修改性)
□ ATAM 9步: 方商架分树析场再呈 (多属性权衡)
□ ATAM 4阶段: 呈析场呈
□ 敏感点: 影响单一属性
□ 权衡点: 影响多个属性 (权衡⊆敏感)
□ 风险点: 可能出问题
□ 非风险点: 不会出问题
□ 可用性: A=MTTF/(MTTF+MTTR), MTBF=MTTF+MTTR
□ 效用树: Utility→属性→细化→场景(I,D)
□ 优先分析: (H,H)场景
□ CBAM: 效益/成本比最高
□ 评估时机: 架构设计后、详细设计前
□ 评估关注: 质量属性(非功能需求)
文档说明:本文档为软考系统架构设计师「架构评估」知识点单一总文档,覆盖评估基础理论、三大评估方法(SAAM/ATAM/CBAM)、质量属性场景、ATAM核心概念、效用树、计算题型、易混陷阱、双轨口诀、速记总表、典型考题及背诵路线全链路。重点掌握ATAM方法(9步骤+敏感点/权衡点/风险点)和可用性计算公式。
- 点赞
- 收藏
- 关注作者
评论(0)