架构描述与评估 · 知识点总结
综合整理自: 软件架构的概念、4+1视图、ADL、架构评估、软件评估方法 以及 llm-wiki 中的 ATAM、SAAM、CBAM、质量属性、敏感点、权衡点、风险点、非风险点
知识图谱
架构描述与评估
├── 1. 软件架构基础
│ ├── 架构的概念与作用
│ └── 架构生命周期(SA流程)
├── 2. 架构描述
│ ├── 4+1视图模型
│ └── ADL(架构描述语言)
├── 3. 质量属性
│ ├── 四大质量属性
│ ├── 开发期 vs 运行期
│ └── 质量效用树
├── 4. 评估核心概念
│ ├── 风险点 / 非风险点
│ ├── 敏感点
│ └── 权衡点
└── 5. 评估方法
├── SAAM(可修改性)
├── ATAM(多属性权衡)⭐重点
└── CBAM(成本效益)
一、软件架构基础
1.1 架构的本质
- 软件架构为系统提供结构、行为和属性的高级抽象
- 架构风格是特定领域的惯用模式,定义一个词汇表和一组约束
- 架构设计 = 按需分配,将满足需求的职责分配到组件上
1.2 架构的作用
| 作用 | 说明 |
|---|---|
| 交流手段 | 项目干系人之间的沟通桥梁 |
| 可传递可复用 | 通过研究架构可预测软件质量 |
| 原型设计 | 有助于循序渐进的原型开发 |
一句话: 架构设计是降低成本、改进质量、按时按需交付的关键因素。
1.3 架构生命周期(SA流程)
需求分析 → 设计 → 实现 → 构件组装 → 部署 → 后开发
| 阶段 | 核心要点 |
|---|---|
| 需求分析 | 如何根据需求构建SA模型,模型是否可追溯 |
| 设计 ⭐ | SA研究最核心阶段,使用ADL和4+1视图 |
| 实现 | 根据设计进行代码实现 |
| 构件组装 | 高层次实现系统,强调效率 |
| 部署 | SA提供高层视图指导部署 |
| 后开发 | 系统结构动态变化,支持结构恢复与重建 |
二、架构描述
2.1 4+1视图模型 ⭐⭐
从5个视角描述软件架构,不同角色关注不同视图。
| 视图 | 面向对象 | 关注点 | 核心内容 |
|---|---|---|---|
| 逻辑视图 | 用户/设计者 | 功能需求 | 类、对象 |
| 开发视图 | 程序员 | 代码结构 | 配置、装配 |
| 进程视图 | 系统集成人员 | 运行时行为 | 并发、性能、吞吐量、可伸缩性 |
| 物理视图 | 系统工程师 | 部署结构 | 硬件节点、网络拓扑、部署方式 |
| 用例视图 (场景)⭐ | 分析/测试人员 | 功能场景 | 驱动其他4个视图 |
关键考点:
- 用例视图是核心,驱动其他4个视图
- 不同角色看不同视图,这是多视图存在的原因
视图间关系:
用例视图(驱动)
├──→ 逻辑视图(功能需求驱动)
├──→ 进程视图(性能需求驱动)
├──→ 开发视图(代码实现)
└──→ 物理视图(部署实现)
2.2 ADL(架构描述语言)⭐⭐
定义: 一种形式化语言,为软件系统的概念体系结构提供具体的语法和概念框架。
三个基本要素(必考):
| 要素 | 定义 | 类比 |
|---|---|---|
| 构件 | 计算或数据存储单元 | 房间的墙壁 |
| 连接件 | 构件之间交互的构造块及规则 | 房间的门和走廊 |
| 架构配置 | 构件与连接件的链接图 | 房间的平面图 |
三者关系: 构件通过连接件进行交互,多个构件和连接件共同组成架构配置。
常见ADL类型:
| ADL | 特点 |
|---|---|
| C2SADL | 基于组件和消息 |
| Wright | 分布式和并发系统建模 |
| ACME | 架构互换(通用描述) |
| UniCon | 基于组件和连接 |
| Rapide | 基于事件 |
三、质量属性 ⭐⭐
3.1 四大质量属性(ATAM评估对象)
| 质量属性 | 定义 | 衡量指标 | 实现手段 |
|---|---|---|---|
| 性能 | 系统响应速度和处理能力 | 响应时间、吞吐率 | 缓存、负载均衡、异步处理 |
| 可用性 | 正常运行时间比例和故障恢复能力 | 运行时间比例、恢复速度 | 冗余部署、故障转移、健康检查 |
| 安全性 | 阻止非授权访问和抵御攻击的能力 | 非授权访问阻止率 | 认证授权、加密传输、防火墙 |
| 可修改性 | 系统进行变更所需的代价 | 变革的代价 | 松耦合、模块化、配置化 |
3.2 开发期 vs 运行期质量属性
| 开发期 | 运行期 |
|---|---|
| 易理解性 | 性能 |
| 可扩展性 | 安全性 |
| 可重用性 | 可伸缩性 |
| 可测试性 | 互操作性 |
| 可维护性 | 可靠性 |
| 可移植性 | 可用性 |
| 鲁棒性 |
记忆口诀:
- 开发期:“理扩重测维移”(理解、扩展、重用、测试、维护、移植)
- 运行期:“性安伸互Rel可鲁”(性能、安全、伸缩、互操作、可靠性、可用性、鲁棒性)
3.3 质量效用树
树根(系统目标)
/ | \
质量属性 质量属性 质量属性
/ \ / \ / \
分类 分类 分类 分类 分类 分类
| | | | | |
场景 场景 场景 场景 场景 场景
优先级确定方法:
- 先按场景的重要性定优先级
- 再按场景实现的难易度定优先级
四、评估核心概念 ⭐⭐⭐
这四个概念是案例分析题的必考点,必须准确区分。
4.1 四大概念对比
| 概念 | 定义 | 关键词 | 示例 |
|---|---|---|---|
| 风险点 | 潜在的、存在问题的架构决策带来的隐患 | 隐患、问题 | 单点故障、不成熟技术 |
| 非风险点 | 不会带来隐患的可接受决策 | 可接受、安全 | 采用Spring Boot、使用MySQL |
| 敏感点 | 实现某种特定质量属性,构件所具有的特性 | 单一质量属性 | 数据库索引设计(影响性能) |
| 权衡点 | 影响多个质量属性的特性(多个敏感点的交集) | 多个质量属性 | 数据一致性(影响性能+可用性) |
4.2 记忆技巧
风险点 = 有问题的决策(隐患)
非风险点 = 没问题的决策(安全)
敏感点 = 影响"一个"质量属性
权衡点 = 影响"多个"质量属性 = 多个敏感点的交集
易混淆点:
- 敏感点 ≠ 权衡点:敏感点只影响一个属性,权衡点影响多个
- 风险点 ≠ 敏感点:风险点是”隐患”,敏感点是”特性”
- 权衡点是ATAM方法的核心产出物
4.3 案例分析答题模板
题目问”识别风险点、敏感点、权衡点”时:
-
风险点: 找描述中”可能出问题”的架构决策
- 例:“系统采用单台数据库服务器” → 风险点(单点故障)
-
非风险点: 找描述中”合理、成熟”的决策
- 例:“系统采用成熟的微服务框架” → 非风险点
-
敏感点: 找只影响”某一个”质量属性的构件特性
- 例:“数据库索引策略” → 敏感点(只影响性能)
-
权衡点: 找同时影响”多个”质量属性的特性
- 例:“缓存策略” → 权衡点(影响性能+一致性)
五、评估方法 ⭐⭐⭐
5.1 三大评估方法对比
| 方法 | 全称 | 侧重点 | 复杂度 | 关系 |
|---|---|---|---|---|
| SAAM | Software Architecture Analysis Method | 可修改性 | 低 | 最早的方法 |
| ATAM | Architecture Tradeoff Analysis Method | 多质量属性评价与折中 | 中 | 在SAAM基础上发展 |
| CBAM | Cost-Benefit Analysis Method | 成本效益分析 | 高 | 在ATAM基础上增加成本 |
发展关系: SAAM → ATAM → CBAM
5.2 ATAM(架构权衡分析方法)⭐⭐⭐ 重点中的重点
评估对象: 性能、可用性、安全性、可修改性
四个阶段(8个步骤):
| 阶段 | 步骤 | 内容 |
|---|---|---|
| 第一阶段:场景和需求收集 | ① 收集场景 | 从干系人获取使用场景 |
| ② 收集需求/约束/环境 | 明确系统约束条件 | |
| 第二阶段:架构视图和场景实现 | ③ 描述架构视图 | 用4+1视图等描述架构 |
| ④ 实现场景 | 将场景映射到架构上 | |
| 第三阶段:属性模型构造和分析 | ⑤ 特定属性分析 | 构造质量属性模型 |
| ⑥ 单一理论分析 | 评估单一质量属性 | |
| 第四阶段:折中 | ⑦ 标志敏感度 | 识别敏感点 |
| ⑧ 标志折中 | 识别权衡点 |
ATAM的核心产出:
- 敏感点列表
- 权衡点列表
- 风险点列表
- 非风险点列表
5.3 SAAM(软件架构分析方法)
- 最早的架构评估方法
- 最初只用于分析可修改性
- 方法相对简单,为ATAM/CBAM奠定基础
5.4 CBAM(成本效益分析方法)
- 在ATAM基础上引入成本效益分析
- 不仅评估质量属性,还考虑实现成本
- 帮助在多个架构方案中选择性价比最高的方案
- 复杂度最高
5.5 评估方式分类
| 方式 | 说明 |
|---|---|
| 基于调查问卷 | 通过问卷收集干系人意见 |
| 基于度量 | 通过量化指标评估 |
| 基于场景 ⭐ | 最常用,通过具体场景评估质量属性 |
5.6 性能场景六要素
场景 = 从风险承担者角度与系统交互的简短描述
| 要素 | 定义 | 示例 |
|---|---|---|
| 刺激源 | 生成刺激的实体 | 用户、外部系统 |
| 刺激 | 在某些条件下发生的事件 | 请求、故障、攻击 |
| 制品 | 被刺激的对象 | 整个系统或某个组件 |
| 响应 | 刺激到达后采取的行动 | 处理请求、记录日志 |
| 响应度量 | 可度量的响应指标 | 响应时间、恢复时间 |
| 环境 | 刺激发生时系统所处状态 | 正常操作、降级操作 |
可用性场景示例:
| 要素 | 内容 |
|---|---|
| 刺激源 | 系统内部 / 系统外部 |
| 刺激 | 疏忽、错误、崩溃、时间 |
| 环境 | 正常操作 / 降级操作 |
| 制品 | 系统处理器、通信信道、持久存储器、进程 |
| 响应 | 检测事件 → 记录并通知 → 禁止错误源 |
| 响应度量 | 系统必须可用的时间间隔 |
六、高频考点速记
6.1 选择题高频
- 4+1视图中用例视图驱动其他视图
- ADL三要素:构件、连接件、架构配置
- SAAM最早用于可修改性评估
- ATAM针对性能、可用性、安全性、可修改性
- CBAM在ATAM基础上增加成本效益分析
- 权衡点 = 影响多个质量属性的特性
6.2 案例分析高频
- 识别风险点、敏感点、权衡点、非风险点
- ATAM的四个阶段和8个步骤
- 质量效用树的构建和优先级确定
- 根据场景描述判断质量属性类型
- 选择合适的架构评估方法
6.3 论文写作素材
- ATAM方法的实际应用过程
- 如何在项目中进行架构评估
- 质量属性之间的权衡决策
七、速记口诀
“4+1视图用例驱,ADL有三件,ATAM四阶段,敏感权衡要分清”
- 4+1视图 → 用例视图驱动
- ADL → 构件+连接件+架构配置
- ATAM → 场景收集→视图实现→属性分析→折中
- 敏感点 → 影响一个属性
- 权衡点 → 影响多个属性