第 8 章 系统质量属性与架构评估
对应大纲:科目 1-7 系统质量属性与架构评估|教材 P271–P304|优先级 ★★★★★|综合知识估分 4~6 分
读法:先记死「6 属性 × 6 要素 × 4 个点」,再把 5 种评估方法压成一张对比表;ATAM 只背每阶段「干什么、出什么」。
一、知识框架
系统质量属性与架构评估
├─ 8.1 软件系统质量属性
│ ├─ 概念:可度量、可取舍的非功能特性
│ ├─ 6 属性:性能|可用性|安全性|可修改性|易用性|可测试性
│ └─ 场景 6 要素:刺激源|刺激|环境|制品|响应|响应度量
├─ 8.2 系统架构评估
│ ├─ 重要概念:敏感点|权衡点|风险点|非风险点
│ ├─ 评估技术:调查问卷|场景|度量
│ └─ 评估方法:SAAM|ATAM|CBAM|SAEM|SAABNet
└─ 8.3 ATAM 评估实践
├─ 阶段一 演示
├─ 阶段二 调查与分析(效用树)
├─ 阶段三 测试(场景)
└─ 阶段四 报告
二、必背要点
8.1 软件系统质量属性
概念:质量属性是系统在运行、开发、维护中表现出的非功能特性,是架构设计可度量、可取舍的目标。功能需求回答「做什么」,质量属性回答「做得多好」。按关注阶段可分为运行期属性(性能、可用性、安全性、易用性)与开发期属性(可修改性、可测试性)。架构评估不追求单项最优,而是寻找属性之间的合理平衡。
六大质量属性
| 属性 | 定义 | 场景示例(六要素) | 提升战术 |
|---|---|---|---|
| 性能 | 单位时间处理能力与响应快慢 | 大促高峰(环)用户(源)发起 1000 并发查询(激),订单服务(制)2s 内返回(响/度) | 缓存、异步、并发、负载均衡 |
| 可用性 | 系统可正常服务的时间比例 | 单节点故障(激)时 30s 内切主(响),可用性≥99.99%(度) | 冗余、心跳、故障转移、重试 |
| 安全性 | 抵抗攻击并保护数据与行为可控 | 攻击者(源)在公网(环)越权访问(激),订单服务(制)拒绝并审计(响),拦截率 100%(度) | 认证、授权、加密、审计、限流 |
| 可修改性 | 以低代价完成变更的能力 | 业务方(源)在迭代期(环)新增支付渠道(激),订单模块(制)2 人周完成(响/度) | 模块化、信息隐藏、发布订阅、延迟绑定 |
| 易用性 | 用户高效完成任务的容易程度 | 新用户(源)首次使用(环)完成下单(激),前端(制)3 分钟内完成(响/度) | 任务模型、界面简化、帮助引导 |
| 可测试性 | 发现故障、验证正确性的容易程度 | 测试员(源)在集成环境(环)回归新接口(激),自动化覆盖≥80%(响/度) | 接口分离、可观测性、内置自测、日志 |
质量属性场景 6 要素
| 要素 | 含义 | 示例 |
|---|---|---|
| 刺激源 | 产生刺激的实体 | 用户、外部系统、攻击者 |
| 刺激 | 到达系统的事件或条件 | 并发请求、节点宕机 |
| 环境 | 刺激发生时的系统状态 | 正常运行、高峰、降级 |
| 制品 | 被刺激的系统部分 | 订单服务、数据库 |
| 响应 | 系统做出的反应 | 返回结果、切换节点 |
| 响应度量 | 可测量的指标 | 响应时间≤2s、可用性 99.99% |
场景标准句式:在「环境」下,「刺激源」发起「刺激」,作用于「制品」,系统做出「响应」,并满足「响应度量」。
8.2 系统架构评估
概念:架构评估是在架构设计完成后、系统实现之前,由利益相关者依据质量目标系统分析架构,识别风险与权衡,避免后期返工。
四个必考概念
| 概念 | 定义 | 判断示例 |
|---|---|---|
| 敏感点 | 显著影响某一个质量属性的关键决策 | 加密算法强度影响安全性 |
| 权衡点 | 同时影响多个质量属性、需要折中 | 加密越强,安全性升、性能降 |
| 风险点 | 尚未验证、可能不达标的决策 | 自研缓存未做压测 |
| 非风险点 | 经分析确认可满足目标的决策 | 采用成熟消息队列 |
五种评估方法
| 方法 | 关注点 | 适用阶段 | 输出 |
|---|---|---|---|
| SAAM | 可修改性为主,场景驱动 | 架构早期 | 场景结论、风险清单 |
| ATAM | 多质量属性权衡,效用树加场景 | 设计完成、实现前 | 敏感点/权衡点/风险点/非风险点、报告 |
| CBAM | 成本、收益、投资回报 | 架构决策与投资 | 经济分析、决策优先级 |
| SAEM | 基于度量的定量评估 | 架构各阶段 | 度量指标与评分 |
| SAABNet | 贝叶斯网络表达不确定因果 | 数据少、不确定环境 | 质量属性概率预测 |
ATAM 四阶段
| 阶段 | 活动 | 产出 |
|---|---|---|
| 演示 | 介绍 ATAM、业务驱动因素、架构与架构方法 | 评估共识与计划 |
| 调查与分析 | 确定架构方法、构建效用树、分析架构 | 效用树、四类点 |
| 测试 | 头脑风暴场景、排序、分析高优先级场景 | 场景清单与测试结论 |
| 报告 | 汇总发现、形成并交付报告 | 评估报告与改进建议 |
效用树构造:根为「效用」,第二层为质量属性,第三层为属性细化,叶子为可度量场景;每个叶子标注(重要性,实现难度),用 H/M/L 表示。
效用 Utility
├─ 性能(H)
│ ├─ 峰值 1000 并发下单响应≤2s(H,H)
│ └─ 报表导出≤10s(M,M)
├─ 可用性(H)
│ └─ 单节点故障 30s 内切换(H,M)
└─ 可修改性(M)
└─ 新增支付渠道≤2 人周(M,L)
8.3 ATAM 方法架构评估实践
- 评估输入:业务目标与驱动因素、架构描述(多视图)、质量属性需求与场景。
- 评估角色:评估负责人、架构师、利益相关者、记录员。
- 评估输出:架构方法清单、效用树、场景优先级、敏感点、权衡点、风险点、非风险点、风险主题与评估报告。
- 实施节奏:通常 3 天左右,第一天演示并对齐业务目标,第二天构建效用树并分析架构方法,第三天场景测试与报告。
- 实践要点:先对齐业务目标,再谈技术;场景必须可度量;四类点必须落到具体构件或决策上,不能空泛;评估结论要能转化为改进项和责任人。
三、易混淆概念对比
| A | B | 关键区别 |
|---|---|---|
| 质量属性 | 功能需求 | 前者是「做得多好」,后者是「做什么」 |
| 敏感点 | 权衡点 | 敏感点只影响一个属性;权衡点影响多个属性需折中 |
| 风险点 | 非风险点 | 风险点未验证、可能不达标;非风险点已验证可行 |
| 可用性 | 可靠性 | 可用性看任意时刻可服务比例;可靠性看规定时间不出失效 |
| 安全性 security | 安全性 safety | 前者防攻击与数据泄露;后者指失效不造成人员财产危害 |
| SAAM | ATAM | SAAM 早期、偏可修改性;ATAM 多属性权衡、产出四类点 |
| ATAM | CBAM | ATAM 评质量权衡;CBAM 在 ATAM 上加成本收益与 ROI |
| 场景 | 用例 | 场景描述质量刺激与响应;用例描述功能交互 |
| 效用树 | 质量属性场景 | 效用树是场景的层次化组织与排序工具 |
| 性能 | 可伸缩性 | 性能是当前能力;可伸缩性是增加资源后的扩展能力 |
四、常见考法与出题角度
| 题型 | 出题角度 | 典型问法 | 答题要点 |
|---|---|---|---|
| 单选 | 概念辨析 | 「既影响安全又影响性能的是什么点」 | 权衡点 |
| 单选 | 场景要素 | 「响应度量指什么」 | 可测量的指标,如 2s、99.99% |
| 单选 | 方法匹配 | 「关注成本效益比的方法是」 | CBAM |
| 单选 | ATAM 阶段 | 「构建效用树在哪个阶段」 | 调查与分析阶段 |
| 单选 | 评估输出 | 「下列不属于 ATAM 输出的是」 | 四类点与报告属输出,代码不算 |
| 简答 | 质量战术 | 「如何提升系统可用性」 | 冗余、心跳检测、故障转移、重试 |
| 简答 | 场景描述 | 「写出一个可测试性场景」 | 严格按六要素齐全作答 |
| 案例题角度 | 质量属性权衡 | 给出架构方案问「满足哪些属性、有何风险」 | 逐属性列敏感点与权衡点,再给改进战术 |
| 论文可用角度 | 正文举例 | 「论文写高可用架构时怎么用本章」 | 可写:「围绕 99.99% 可用性目标,我们按六要素定义场景,采用双机热备与心跳切换,将单点故障恢复时间控制在 30s 内。」 |
五、速记与自测
速记
- 六属性:性、可、安、改、易、测
- 场景六要素:源、激、环、品、响、度
- 四个点:敏、权、风、非
- 评估方法:S、A、C、S、S(SAAM、ATAM、CBAM、SAEM、SAABNet)
- ATAM 四阶段:演、调、测、报
自测
- 质量属性场景的六个要素是什么?
- 敏感点与权衡点的本质区别是什么?
- ATAM 的四个阶段分别产出什么核心成果?
答案:1. 刺激源、刺激、环境、制品、响应、响应度量;2. 敏感点影响单一属性,权衡点同时影响多个属性需折中;3. 演示出共识、调查分析出效用树与四类点、测试出场景结论、报告出评估报告。