ONEPSOFT | 软考学习知识库
deepread2|论文2 质量属性与架构评估(ATAM效用树场景权衡)详解
对应清单条目:#2 论文·质量属性与架构评估(ATAM/效用树/场景权衡)
教材来源:《系统架构设计师教程(第 2 版)》第 8 章 质量属性与架构评估(8.1–8.3)
一、知识点定位
一句话定位:软件架构不能只说 " 能跑 ",必须说明它在性能/安全性/可修改性/可用性等质量维度上 " 好到什么程度 ";ATAM 就是一套用 " 效用树 + 场景 + 敏感点/权衡点 " 把这种 " 好 " 讲清楚、并暴露风险的方法。
二、教材原文精摘(第 8 章,原封不动)
【8.1.1 质量属性概念】原文:
软件系统质量属性 (Quality Attribute) 是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者 (Stakeholders) 需求的程度。基于软件系统的生命周期,可以将软件系统的质量属性分为开发期质量属性和运行期质量属性 2 个部分。
开发期:易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性。运行期:性能、安全性、可伸缩性、互操作性、可靠性、可用性、鲁棒性。
【8.1.2 面向架构评估的质量属性(定义)】原文:
性能 (Performance) 是指系统的响应能力……经常用单位时间内所处理事务的数量或系统完成某个事务处理所需的时间来定量表示。
可用性 (Availability) 是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
安全性 (Security) 是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力……划分为机密性、完整性、不可否认性及可控性等。
可修改性 (Modifiability) 是指能够快速地以较高的性价比对系统进行变更的能力……包含可维护性、可扩展性、结构重组、可移植性。
互操作性……软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。
【8.1.3 质量属性场景六要素】原文:
质量属性场景是一种面向特定质量属性的需求。它由 6 部分组成:①刺激源 (Source):生成该刺激的实体;②刺激 (Stimulus):当刺激到达系统时需要考虑的条件;③环境 (Environment):刺激在某些条件内发生;④制品 (Artifact):某个制品被激励(整个系统或一部分);⑤响应 (Response):激励到达后所采取的行动;⑥响应度量 (Measurement):对响应进行度量以测试需求。
【8.2.1 敏感点 / 权衡点 / 风险承担者 / 场景】原文:
敏感点 (Sensitivity Point) 和权衡点 (Tradeoff Point) 是关键的架构决策。敏感点是一个或多个构件(和/或构件之间的关系)的特性。权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。例如,改变加密级别可能会对安全性和性能产生非常重要的影响……加密级别可能就会成为一个权衡点。
场景是从风险承担者的角度对与系统的交互的简短描述。一般采用刺激、环境和响应三方面来描述。
【8.2.2 ATAM 方法】原文:
架构权衡分析方法 (ATAM) 是在 SAAM 的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
ATAM 方法采用效用树 (Utility tree) 这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)。ATAM 主要关注 4 类质量属性:性能、安全性、可修改性和可用性。
得到初始的效用树后,需要修剪这棵树,保留重要场景(通常不超过 50 个),再对场景按重要性给定优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级。
ATAM 被分为 4 个主要的活动领域:场景和需求收集、架构视图和场景实现、属性模型构造和分析、折中。
【8.2.2 SAAM vs ATAM】原文:
SAAM 是 Kazman 等人于 1983 年提出的一种非功能质量属性的架构分析方法……可修改性是 SAAM 分析的主要质量属性。SAAM 分析包括 5 个步骤:场景开发、架构描述、单个场景评估、场景交互和总体评估。
ATAM 在 SAAM 基础上发展,分析多个相互竞争的质量属性,起步考虑可修改性、安全性、性能和可用性。
【8.3.2 风险点 / 非风险点】原文:
风险是架构中的一个问题点,后者不支持给定的优先级质量属性。非风险是体系结构的优势,后者实现特定的优先级质量属性。敏感点是一个或多个组件的属性,对于实现给定的质量属性至关重要。如果架构对多个属性敏感,那么该点称为权衡点。
三、系统解读(逐段讲透)
核心一句话总结:ATAM 不是 " 评架构美不美 ",而是用效用树把质量目标拆到可度量场景,再用敏感点/权衡点/风险点把 " 取舍与隐患 " 暴露出来——论文写 " 我做了架构评估 ",写清楚这四样就等于写了 ATAM。
四、工程实践举例(土木工程视角)
" 结构多目标优化设计 " 与 ATAM 几乎同构:
这跟软件 "1000 并发下响应时间\<200ms" 场景一模一样——都有可度量的响应。
知识点 ↔ 工程实践 对照表
| 教材知识点要素 | 你的实践场景对应 | 映射说明 |
|---|---|---|
| 运行期质量属性(性能/安全/可修改/可用) | 建筑适用性/安全性/可改造性/耐久性 | 都是 " 系统满足利益相关者需求的程度 " 的可度量维度 |
| 质量属性场景六要素 | 抗震设计场景(源/刺激/环境/制品/响应/度量) | 任何质量需求都要落到可度量场景,否则不成立 |
| 敏感点(影响单属性) | 单根关键梁截面 | 调它主要只动一个指标 |
| 权衡点(影响多属性、方向相反) | 混凝土强度等级 C30→C50 | 安全↑但造价↑、开裂风险↑,必须取舍 |
| 效用树(目标逐层分解 + 优先级) | 结构性能指标化设计分解 | 总效用→质量属性→分类→叶子场景,标优先级 |
| 风险点 / 非风险点 | 施工图审查意见(缺陷/优势) | 不支持优先级属性=风险;实现它=非风险 |
| ATAM 四阶段 | 设计策划→方案建模→性能分析→多方案比选 | 用模型分析暴露权衡与风险,再折中 |
当知识点涉及层级分解时,补充效用树结构(ATAM 招牌工具 ↔ 结构性能指标化分解):
流程图(结构化呈现)
运维视角提示:ATAM 暴露的 " 权衡点/风险点 " 直接决定运维成本。例如为性能把 " 加密级别 " 压低(权衡点向性能倾斜),后期安全事件频发、运维救火;而前期用效用树把 " 可用性 (MTTR)" 标为 H 并设计冗余,运维期故障自愈、停机最短。换句话说,架构评估做得好,运维就轻松——正是该补的认知。