📐 架构描述与评估 · 考点笔记

软件架构设计师 · 中级 · 2026 考试备考
架构描述 4+1视图 ADL 质量属性 ATAM SAAM CBAM

一、软件架构基础

1.1 架构的本质

软件架构为系统提供结构、行为和属性的高级抽象。架构风格是特定领域的惯用模式,定义一个词汇表和一组约束

架构风格与架构模式的区别:架构风格是一种系统组织方式(如C/S、B/S),是宏观层面的分类。架构模式是指特定的设计模式(如MVC、MVP、Pipeline等),是中观层面的解决方案。一种风格可以包含多种模式。考试中不要混淆这两个概念。

1.2 架构的作用

作用说明考点关联
交流手段项目干系人之间的沟通桥梁与4+1视图紧密相关,不同角色看不同视图
可传递可复用通过研究架构可预测软件质量架构一锤,质量可预测
原型设计有助于循序渐进的原型开发支持渐进式原型设计
架构设计是降低成本、改进质量、按时按需交付的关键因素。这是架构评估各方法的原则依据。

1.3 架构生命周期(SA流程)

需求分析 → 设计 → 实现 → 构件组装 → 部署 → 后开发 ⭐核心阶段
阶段核心要点考试指向
设计 ⭐SA研究最核心阶段,使用ADL和4+1视图是各主客观试题中出现最多的
需求分析根据需求构建SA模型,模型是否可追溯模型可追溯性是检验架构的重要指标
实现根据设计进行代码实现代码实现与架构设计应一致
构件组装高层次实现系统,强调效率根据架构设计的构件制应可复用性
部署SA提供高层视图指导部署物理视图有助于部署规划
后开发系统结构动态变化,支持结构恢复与重建运行期属性相关

1.4 常用架构模型(考试高频拓展)

架构模型实质上是一种系统组织方式,考试中与架构风格紧密关联。常用的架构模型包括:

二、架构描述

2.1 4+1视图模型 ⭐⭐

从5个视角描述软件架构,不同角色关注不同视图。

视图面向对象关注点核心内容典型产出物
逻辑视图用户/设计者功能需求类、对象类图、对象图、状态图
开发视图程序员代码结构配置、装配包图、组件图
进程视图系统集成人员运行时行为并发、性能、吞吐量活动图、序列图
物理视图系统工程师部署结构硬件节点、网络拓扑部署图、网络拓扑图
用例视图(场景)分析/测试人员功能场景驱动其他4个视图用例图
核心考点:用例视图是核心,驱动其他4个视图。考试常问"哪个视图驱动其他视图"或"哪个视图是核心"。
不要把用例视图与其他视图并列看待。用例视图是驱动者,不是被描述的对象之一。其他4个视图各自描述架构的一个侧面。

视图间关系

用例视图(驱动核心) ├──→ 逻辑视图(功能需求驱动) ├──→ 进程视图(性能需求驱动) ├──→ 开发视图(代码实现) └──→ 物理视图(部署实现)

各视图对应的UML图(拓展)

视图推荐UML图说明
逻辑视图类图、对象图、状态图描述系统的静态结构和对象状态变化
开发视图组件图、包图描述系统的物理代码组织
进程视图活动图、序列图描述系统的动态行为和并发
物理视图部署图描述软硬件映射和拓扑
用例视图用例图描述功能需求和使用场景

2.2 ADL(架构描述语言)⭐⭐

一种形式化语言,为软件系统的概念体系结构提供具体的语法和概念框架。

三个基本要素(必考)

要素定义类比关键特性
构件计算或数据存储单元房间的墙壁具有独立功能的计算/存储单元
连接件构件之间交互的构造块及规则房间的门和走廊定义构件间的交互协议和规则
架构配置构件与连接件的链接图房间的平面图描述构件和连接件的拓扑关系

三者关系:构件通过连接件进行交互,多个构件和连接件共同组成架构配置。

常见ADL详细对比

ADL特点适用场景核心机制
C2基于组件和消息,支持分层GUI系统、分布式系统顶层组件、底层组件、消息总线
Wright基于CSP通信理论,形式化分布式和并发系统建模通信协议的形式化验证
Acme通用架构互换格式不同ADL之间的转换桥梁架构互换描述、工具互操作
UniCon基于组件和连接器通用系统描述组件、连接器、协议声明
Rapide基于事件驱动实时系统、事件驱动架构事件模式匹配、因果约束
SADL形式化语义,支持分析需要形式化验证的系统Z语言注解、形式化规格说明
AADLSAE标准,嵌入式实时系统航空、汽车等嵌入式领域线程、进程、处理器绑定
xADL可扩展,基于XMLWeb环境、工具集成XML Schema、可扩展插件
ADL的评判标准:一个好的ADL应具备:①形式化语法和语义 ②支持抽象 ③支持组合 ④支持架构演化 ⑤提供分析能力。考试中可能问"ADL应具备哪些能力"。

三、质量属性 ⭐⭐

3.1 四大质量属性(ATAM评估对象)

🎯 性能 (Performance)

定义:系统响应速度和处理能力。衡量指标:响应时间、吞吐率、延迟。

实现战术(Quality Tactics):

资源调度 负载均衡 并发处理 缓存 异步处理 资源池 数据压缩

🎯 可用性 (Availability)

定义:正常运行时间比例和故障恢复能力。衡量指标:MTBF(平均无故障时间)、MTTR(平均恢复时间)。

可用性计算: Availability = MTBF / (MTBF + MTTR)

实现战术:

冗余部署 故障转移 健康检查 心跳检测 降级服务 熔断机制 数据备份

🎯 安全性 (Security)

定义:阻止非授权访问和抵御攻击的能力。衡量指标:非授权访问阻止率、攻击抵御率。

实现战术:

认证授权 加密传输(HTTPS) 防火墙 入侵检测 审计日志 输入验证 最小权限

🎯 可修改性 (Modifiability)

定义:系统进行变更所需的代价。衡量指标:变更的代价(成本、时间)。

实现战术:

松耦合 模块化 配置化 抽象接口 封装变化 语义一致性 依赖管理

3.2 开发期 vs 运行期质量属性

开发期运行期
易理解性性能
可扩展性安全性
可重用性可伸缩性
可测试性互操作性
可维护性可靠性
可移植性可用性
鲁棒性
开发期:"理扩重测维移"(理解、扩展、重用、测试、维护、移植)
运行期:"性安伸互Rel可鲁"(性能、安全、伸缩、互操作、可靠性、可用性、鲁棒性)

3.3 质量效用树

树根(系统目标) / | \ 质量属性 质量属性 质量属性 / \ / \ / \ 分类 分类 分类 分类 分类 分类 | | | | | | 场景 场景 场景 场景 场景 场景

优先级确定方法:

  1. 先按场景的重要性定优先级(高/中/低)
  2. 再按场景实现的难易度定优先级(难/中/易)
考试技巧:效用树是ATAM评估的核心工具。每个场景都要标注 (H/M/L, H/M/L),即(重要性, 难度)。优先处理(H,H)的场景。

3.4 质量属性间的权衡关系(高频拓展)

冲突对冲突描述典型场景
性能 vs 安全性加密解密增加延迟HTTPS比HTTP慢,但更安全
性能 vs 可用性数据同步增加延迟强一致性要求同步复制,影响响应速度
可用性 vs 一致性CAP定理的核心矛盾分布式系统中,分区容错下只能选AP或CP
可修改性 vs 性能解耦引入中间层增加开销微服务间通过消息队列通信,增加网络延迟
安全性 vs 可用性安全措施可能成为瓶颈过于严格的风控可能阻断正常请求

四、评估核心概念 ⭐⭐⭐

这四个概念是案例分析题的必考点,必须准确区分。

4.1 四大概念精确定义

概念定义关键词识别方法
风险点潜在的、存在问题的架构决策带来的隐患隐患、问题找"可能出问题"的决策
非风险点不会带来隐患的可接受决策可接受、安全找"合理、成熟"的决策
敏感点实现某种特定质量属性,构件所具有的特性单一质量属性找只影响"一个"属性的构件特性
权衡点影响多个质量属性的特性多个质量属性找同时影响"多个"属性的特性

4.2 概念关系图

风险点 vs 非风险点:描述架构决策的【安全性】维度 ├── 风险点 = 有问题的决策(有隐患) └── 非风险点 = 安全的决策(无隐患) 敏感点 vs 权衡点:描述构件特性与质量属性的【影响范围】维度 ├── 敏感点 = 影响一个质量属性 └── 权衡点 = 影响多个质量属性 = 多个敏感点的交集 注意:两组概念维度不同,可以交叉组合 ├── 某个敏感点也可能是风险点 └── 某个权衡点也可能是非风险点
高频易错:
  • 敏感点 ≠ 权衡点:敏感点只影响一个属性,权衡点影响多个
  • 风险点 ≠ 敏感点:风险点是"隐患",敏感点是"特性",维度不同
  • 一个权衡点是由多个敏感点组成的(它是多个敏感点的交集)
  • 权衡点是ATAM方法的核心产出物,不是所有评估方法都有

4.3 案例分析答题模板

题目问"识别风险点、敏感点、权衡点"时:

  1. 风险点:找描述中"可能出问题"的架构决策
    ▸ 例:"系统采用单台数据库服务器" → 风险点(单点故障)
  2. 非风险点:找描述中"合理、成熟"的决策
    ▸ 例:"系统采用成熟的微服务框架" → 非风险点
  3. 敏感点:找只影响"某一个"质量属性的构件特性
    ▸ 例:"数据库索引策略" → 敏感点(只影响性能)
  4. 权衡点:找同时影响"多个"质量属性的特性
    ▸ 例:"缓存策略" → 权衡点(影响性能+一致性)

4.4 案例实战举例

案例描述分类分析
"系统只有一台应用服务器"风险点单点故障,无法保证可用性
"使用Spring Boot 3.x框架"非风险点成熟框架,社区活跃,风险可控
"主键采用自增ID"敏感点影响数据库写入性能(单属性)
"读写分离 + 数据同步延迟100ms"权衡点影响性能(读分离加速)+ 可用性(异步容灾)+ 一致性(延迟不一致)
"用户密码使用MD5加密"风险点MD5已被证明不安全,应使用bcrypt
"接口采用RESTful风格"非风险点业界标准做法,成熟可靠
"JVM堆内存设置为固定4G"敏感点影响GC性能(单属性)
"采用消息队列解耦服务"权衡点影响可修改性(解耦)+ 性能(异步提升)+ 可用性(削峰)

五、评估方法 ⭐⭐⭐

5.1 三大评估方法总览

方法全称侧重点复杂度发展关系
SAAMSoftware Architecture Analysis Method可修改性最早的方法
ATAMArchitecture Tradeoff Analysis Method多质量属性评价与折中在SAAM基础上发展
CBAMCost Benefit Analysis Method成本效益分析在ATAM基础上增加成本
发展关系:SAAM → ATAM → CBAM,后一个方法在前一个基础上增强。ATAM在SAAM基础上增加了多属性权衡分析,CBAM在ATAM基础上增加了成本维度。

5.2 ATAM(架构权衡分析方法)⭐⭐⭐

ATAM概述:ATAM是目前应用最广泛的架构评估方法,由SEI(软件工程研究所)提出。评估对象涵盖性能、可用性、安全性、可修改性四大质量属性。核心思想是通过场景驱动,识别架构中的敏感点、权衡点、风险点和非风险点。

ATAM评估团队

角色人数职责
评估小组负责人1人组织整个评估活动,负责报告撰写
评估小组/书记员1-2人记录评估过程中的关键信息
架构设计师1-2人描述和讲解架构,回答架构相关问题
风险承担者/干系人5-10人提供场景,参与评估讨论

ATAM四个阶段与8个步骤(详细版)

阶段步骤内容关键产出
第一阶段
场景和需求收集
① 收集场景从干系人获取使用场景场景列表
② 收集需求/约束/环境明确系统约束条件需求约束文档
第二阶段
架构视图和场景实现
③ 描述架构视图用4+1视图等描述架构架构视图文档
④ 实现场景将场景映射到架构上场景-架构映射表
第三阶段
属性模型构造和分析
⑤ 特定属性分析构造质量属性模型质量属性模型
⑥ 单一理论分析评估单一质量属性单属性评估结果
第四阶段
折中
⑦ 标志敏感度识别敏感点敏感点列表
⑧ 标志折中识别权衡点权衡点列表

ATAM的核心产出(必背)

5.3 SAAM(软件架构分析方法)

SAAM的四个步骤:
  1. 场景开发:根据用户需求开发一组场景
  2. 架构描述:根据场景描述当前架构
  3. 场景评估:将每个场景映射到架构上,评估所需修改
    直接场景:架构无需修改即可支持的场景
    间接场景:架构需要修改才能支持的场景
  4. 场景分类与评估:按修改代价分类,识别架构问题
SAAM与ATAM的区别:SAAM最初只关注可修改性,方法简单。ATAM在SAAM基础上扩展为多质量属性权衡分析。考试中常考"SAAM主要评估什么属性"——答案是可修改性。

5.4 CBAM(成本效益分析方法)

CBAM的核心思想:在ATAM评估结果的基础上,引入成本维度进行决策。帮助在多个架构方案中选择性价比最高的方案。

CBAM的评估步骤

  1. 整理架构策略:从ATAM评估中提取架构策略列表
  2. 评估策略对质量属性的影响:为每个策略标注对各质量属性的改善程度
  3. 评估成本:估算每个策略的实施成本
  4. 成本效益排序:计算各策略的成本效益比,排序选择

CBAM计算示例

架构策略性能改善可用性改善实施成本综合效益
引入缓存高 (+30)中 (+10)中 (¥10万)40/10 = 4.0
数据库分片高 (+25)低 (+5)高 (¥30万)30/30 = 1.0
服务降级中 (+10)高 (+25)低 (¥5万)35/5 = 7.0 ⭐

结论:服务降级方案性价比最高(7.0),优先实施。

5.5 评估方式分类

方式说明优缺点
基于调查问卷通过问卷收集干系人意见优点:覆盖面广;缺点:主观性强
基于度量通过量化指标评估优点:客观精确;缺点:指标选取难
基于场景 ⭐通过具体场景评估质量属性优点:直观具体;缺点:场景选取需经验
基于场景的评估方式最常用,SAAM、ATAM、CBAM均采用场景驱动的方法。

六、场景六要素

场景 = 从风险承担者角度与系统交互的简短描述,是架构评估的基础分析单元。

要素定义示例提问技巧
刺激源生成刺激的实体用户、外部系统、定时器"谁触发了这个事件?"
刺激在某些条件下发生的事件请求、故障、攻击"发生了什么?"
制品被刺激的对象整个系统或某个组件"影响的是哪个组件?"
响应刺激到达后采取的行动处理请求、记录日志"系统做了什么?"
响应度量可度量的响应指标响应时间、恢复时间"怎么衡量好坏?"
环境刺激发生时系统所处状态正常操作、降级操作"当时系统在什么状态?"

性能场景示例

要素内容
刺激源终端用户
刺激提交一个查询请求
环境系统正常运行,并发用户1000
制品订单查询服务
响应从数据库检索并返回结果
响应度量响应时间 ≤ 2秒

可用性场景示例

要素内容
刺激源系统内部(进程崩溃)
刺激服务进程异常终止
环境正常运行状态
制品订单处理服务
响应检测事件 → 记录并通知 → 自动重启服务
响应度量3分钟内恢复服务,数据不丢失

安全性场景示例

要素内容
刺激源外部攻击者
刺激尝试SQL注入攻击
环境系统在线运行
制品用户认证服务
响应检测攻击 → 阻止请求 → 记录日志并告警
响应度量攻击拦截率 99.9%
六要素速记:"源刺制响度环"
  • 源(刺激源) + 刺(刺激) + 制(制品) + 响(响应) + 度(响应度量) + 环(环境)

七、高频考点速记

7.1 选择题高频

  1. 4+1视图中用例视图驱动其他视图
  2. ADL三要素:构件、连接件、架构配置
  3. SAAM最早用于可修改性评估
  4. ATAM针对性能、可用性、安全性、可修改性
  5. CBAM在ATAM基础上增加成本效益分析
  6. 权衡点 = 影响多个质量属性的特性
  7. 架构设计的核心阶段是设计阶段
  8. 基于场景的评估方式最常用

7.2 案例分析高频

  1. 识别风险点、敏感点、权衡点、非风险点(详见4.3答题模板)
  2. ATAM的四个阶段和8个步骤
  3. 质量效用树的构建和优先级确定
  4. 根据场景描述判断质量属性类型
  5. 选择合适的架构评估方法(SAAM vs ATAM vs CBAM)
  6. 场景六要素的识别

7.3 评估方法选择决策树

问题:需要评估什么? ├── 只关注可修改性 → SAAM ├── 关注多个质量属性 → ATAM └── 还需要考虑成本 → CBAM

7.4 论文写作素材

八、速记口诀汇总

"4+1视图用例驱,ADL有三件,ATAM四阶段,敏感权衡要分清"
  • 4+1视图 → 用例视图驱动其他4个视图
  • ADL → 构件 + 连接件 + 架构配置
  • ATAM → 场景收集 → 视图实现 → 属性分析 → 折中
  • 敏感点 → 影响一个属性;权衡点 → 影响多个属性
"三法递进记心间,SAAM可改ATAM权,CBAM再加钱"
  • SAAM → 可修改性(最简单、最早)
  • ATAM → 多属性权衡(中间)
  • CBAM → 加成本效益(最复杂)
"风险隐患非险安,敏感单一权衡多"
  • 风险点 = 有隐患的决策;非风险点 = 安全的决策
  • 敏感点 = 影响一个质量属性;权衡点 = 影响多个质量属性