Appearance
考点清单
- [x] 六大质量属性:性能/可用性/安全性/可修改性/可测试性/易用性
- [x] 质量属性场景六要素
- [x] ATAM 架构权衡分析法
- [x] SAAM 软件架构分析方法
- [x] 敏感点、权衡点与风险决策
- [x] 效用树(Utility Tree)
- [x] 质量属性与架构策略对应关系
笔记
一、质量属性概述
软件系统质量属性(Quality Attribute)是一个系统的可测量或可测试的属性,用来描述系统满足利益相关者需求的程度。
质量属性场景六要素:
- 刺激源(Source)— 谁发出的刺激
- 刺激(Stimulus)— 触发系统的事件
- 环境(Environment)— 事件发生时的条件
- 制品(Artifact)— 被影响的系统组成部分
- 响应(Response)— 系统对刺激的反应行为
- 响应度量(Response Measure)— 可量化的评估指标
简化三要素(场景最小描述):刺激、环境、响应
二、六大核心质量属性 ★
性能(Performance):
- 系统的响应能力:响应时间(多久响应)、吞吐量(单位时间处理事件个数)
- 典型场景:"并发 10 万用户时,请求响应时间 < 3 秒"
- 架构策略:资源调度、引入并发、增加计算资源
可用性(Availability):
- 系统故障后恢复并继续提供服务的能力
- 指标:MTBF(故障间隔时间)、MTTR(修复时间)
- 典型场景:"主站宕机后,10 秒内自动切换至备用站点"
- 架构策略:心跳(故障检测)、主动冗余(主备切换)
安全性(Security):
- 抵御恶意攻击的能力
- 典型场景:"防止 99% 黑客攻击"、"对恶意操作进行报警和记录"
- 架构策略:追踪审计、检测攻击、权限控制
可修改性(Modifiability):
- 定位修改点并实施修改的难易程度
- 典型场景:"二次开发时间不超过 3 个月"、"功能调整不超过 1 人月"
- 包含:可维护性、可扩展性、结构重构、可移植性
- 架构策略:抽象接口、信息隐藏、接口-实现分离
可测试性(Testability):
- 验证系统行为的难易程度
- 架构策略:记录/回放、内置监控器
易用性(Usability):
- 用户使用体验
- 典型刺激:学习系统特性、有效使用系统、使错误影响最低、适配系统、对系统满意
- 注意区分:易用性聚焦 "用户使用体验",可用性聚焦 "系统在线时间"
三、质量属性-架构策略速查表 ★
| 质量属性 | 典型场景关键词 | 首选架构策略 |
|---|---|---|
| 性能 | 响应时间、并发用户数、时延 | 资源调度、引入并发 |
| 可用性 | 宕机切换、自动恢复、双机热备 | 心跳、主动冗余 |
| 安全性 | 防攻击、加密、入侵检测、报警记录 | 追踪审计、检测攻击 |
| 可修改性 | 二次开发、功能调整、替换中间件 | 抽象接口、接口-实现分离 |
| 可测试性 | 测试、验证 | 记录/回放、内置监控器 |
| 易用性 | 操作一致性、用户满意度、学习成本 | — |
四、敏感点、权衡点与风险决策 ★
| 概念 | 定义 | 关键特征 |
|---|---|---|
| 敏感点 | 一个或多个构件/关系的特性,其微小变化会对某个质量属性产生显著影响 | 影响单个质量属性 |
| 权衡点 | 影响多个质量属性的特性,是多个质量属性的敏感点 | 涉及多属性取舍 |
| 风险点 | 可能导致架构失败的决策 | 潜在负面结果 |
| 非风险点 | 对质量属性无显著影响的决策 | 可接受 |
典型考题:改变加密级别 → 权衡点(影响安全性 ↑ + 性能 ↓)
识别规律:
- 只涉及一个质量属性 → 敏感点
- 涉及两个及以上质量属性的取舍 → 权衡点
五、ATAM(架构权衡分析方法)
ATAM 主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。
四大活动阶段:
- 场景和需求收集
- 架构视图和场景实现
- 属性模型构造和分析(核心步骤)
- 折中(权衡分析)
效用树(Utility Tree):
- ATAM 的重要工具,树形结构从根到叶:树根 → 质量属性 → 属性分类 → 质量属性场景
- 用于系统化分析架构质量属性,从抽象目标到具体场景分解
核心概念: 整个评估过程强调以属性作为架构评估的核心概念。场景从**风险承担者(Stakeholder)**的角度描述。
六、SAAM(软件架构分析方法)
SAAM 是基于场景的架构分析方法。
三大输入:
- 问题描述
- 需求声明
- 体系结构描述(必需的分析对象)
ATAM vs SAAM 对比:
| 方法 | 核心特点 | 关键输入 |
|---|---|---|
| ATAM | 质量属性建模与折中 | 质量需求、场景 |
| SAAM | 场景驱动的架构评估 | 架构描述、问题声明 |