① 系统架构风险(风险点)
架构设计中潜在的、有问题的架构决策所带来的隐患。
按介词结构拆成四个要件:
| 要件 | 含义 | 常见考法 |
|---|---|---|
| 架构设计中 | 限定范围------只针对架构层面的决策,不是编码 bug、不是需求变更 | 出"代码里有空指针异常"当干扰项,❌ 不是架构风险 |
| 潜在的 | 尚未发生,是隐患而非已爆发的故障 | 已经宕机了叫"事故",不叫"风险" |
| 有问题的 | 带负面价值判断------这个决策是错的/不恰当的 | 与"非风险点"形成对立 |
| 决策所带来的隐患 | 因果:决策 → 隐患 → 质量目标可能落空 | 必须指向质量属性目标无法实现 |
一句话记 :风险点 = "架构决策 → 埋雷 → 质量目标可能落空"。
⚠️ 完整分类是四元组:风险点 + 非风险点(分析后认为没问题的决策)。只说"风险点"是不完整的。
② 敏感点
为了实现某种特定的质量属性,一个或多个构件所具有的特性。
三个关键字:
| 关键词 | 解读 |
|---|---|
| 为了实现某种特定的 | 目标是单一质量属性------这句是判定"敏感点而非权衡点"的关键 |
| 一个或多个构件 | 特性可以属于单个构件,也可属于多个构件(及其关系)。图里强调"一个或多个",别误以为只能是一个 |
| 具有的特性 | 是构件自身属性(如加密级别、缓存大小、副本数),不是某个决策结果 |
举例:
- "加密级别"是安全性的敏感点
- "缓存大小"是性能的敏感点
- "副本份数"是可用性的敏感点
注意它不带好坏评价------它只说"这个旋钮影响这个指标",不说该拧到几。
③ 权衡点
影响多个质量属性的特性,也是多个质量属性的敏感点。
这句官方表述直接印证了包含关系 ------注意后半句"也是多个质量属性的敏感点":
┌────────── 特性 ──────────┐
│ │
影响 1 个质量属性 影响多个质量属性
│ │
【敏感点】 【敏感点】
│ │
│ 属性间此消彼长?
│ ┌─────┴─────┐
│ 否 是
│ │ │
│ 仍是普通敏感点 【权衡点】★
**铁律:权衡点一定是敏感点,敏感点不一定是权衡点。** 官方定义用"也是"这个词,把子集关系写死了。
判定三条件(缺一不可):
| 条件 | 说明 |
|---|---|
| ① 本身是敏感点 | 会影响质量属性 |
| ② 影响多个质量属性 | ≥2 个 |
| ③ 属性间此消彼长 | 一个变好另一个变差------有冲突 |
⚠️ 条件 ③ 最容易漏 。影响多个属性但都变好 (如加大缓存:性能↑、单机故障率↓),只是"多个属性的敏感点",不构成权衡点。
二、三者的维度差异(最关键的认知)
这是绝大多数人混淆的根源------它们不在同一条轴上:
轴 A(客观影响分析):特性 → 质量属性
影响 1 个 = 敏感点
影响多个且有冲突 = 权衡点(敏感点的子集)
轴 B(主观风险评价):决策 → 是否有隐患
有隐患 = 风险点
无隐患 = 非风险点
| 敏感点 | 权衡点 | 风险点 | |
|---|---|---|---|
| 所在轴 | 轴 A | 轴 A | 轴 B |
| 涉及属性数 | 1 | ≥2 | 不固定 |
| **带好坏评价?** | ❌ | ❌ | ✅ |
| 对立面 | --- | --- | 非风险点 |
| 回答的问题 | 改哪里影响它? | 冲突在哪? | 哪里埋雷了? |
同一个架构特性可以同时挂两轴的标签 ------比如"加密级别"是权衡点(安全↔性能冲突),若当前取值过低达不到安全要求,它同时又是风险点。
三、紧扣这三段定义的典型判断题
题 1
"构件 X 的某特性同时影响性能和安全性,因此它一定是权衡点。"
❌ 错 。漏了"冲突"条件。若该特性让性能和安全性同时提升,只是多个属性的敏感点,不是权衡点。
题 2
"权衡点是影响多个质量属性的敏感点,因此所有的敏感点都是权衡点。"
❌ 错 。子集关系反了。权衡点 ⊆ 敏感点,不是反过来。
题 3
"某敏感点只有一个构件的特性构成。"
❌ 错 。定义明确写的是"一个或多个构件",多个构件间的关系特性也算。
题 4
"架构风险是指已经发生的系统故障。"
❌ 错 。定义强调"潜在的......隐患",是未发生的问题。已发生的是故障/事故。
题 5
"开发团队某人写了段有 bug 的代码,这属于架构风险。"
❌ 错 。定义限定"架构设计中 ......架构决策",编码缺陷不是架构层面的决策问题。
题 6(综合)
"加密级别既影响安全性又影响性能,当前设定为最低级别,而客户要求金融级安全。"
✅ 它是权衡点 (安全↔性能冲突),同时是风险点(当前取值使安全性目标无法实现)。------这正是两轴交叉的典型。
四、一句话总结
这张图的三段定义,把三个概念的关系彻底钉死了:
- 敏感点 = 为某一特定质量属性,一或多个构件具有的特性(1 对 1)
- 权衡点 = 影响多个 质量属性的敏感点(1 对多 + 有冲突,官方用"也是"明确了它是敏感点的子集)
- 系统架构风险 = 架构决策中潜在的、有问题的 隐患(带价值判断,与非风险点成对出现)
记住两句话就够了:
权衡必敏感,敏感非权衡;风险另起一行评。