科目 综合知识/案例分析 · 考频 ★★★★★ · 场景:知识域→一、架构风格:先会分类再谈选择,刷真题→五、架构评估(ATAM/SAAM/CBAM),案例答题→八、案例分析怎么用这张表
一句话:这是全卷分值最大的一块(软件架构设计 16~28 分,见 重点分布与分值),也是案例必答题和论文的地基。这篇把「风格 → 模式 → 质量属性 → 评估 → 视图 → 构件」这条主线一次理清。
学习地图
| 你在哪一步 | 看哪节 |
|---|---|
| 分不清架构风格 | 一、架构风格:先会分类再谈选择 → 二、架构风格逐个拆 |
| 质量属性怎么答场景题 | 四、质量属性与战术 |
| 案例常考评估方法 | 五、架构评估(ATAM/SAAM/CBAM) |
| 4+1 视图与文档 | 六、4+1 视图与架构文档 |
| 构件/中间件/演化 | 七、构件、中间件与架构演化 |
| 临考冲刺 | 八、案例分析怎么用这张表 |
一、架构风格:先会分类再谈选择
架构风格(architectural style)是一组约束,限定了一类系统中构件的类型与组织方式。考题两种问法:给描述让你识别风格,或给需求让你选风格。
五大类(教科书分类):
| 大类 | 子风格 | 一句话特征 |
|---|---|---|
| 数据流 | 批处理、管道-过滤器 | 数据沿管道流动,每级过滤器变换后交给下一级 |
| 调用/返回 | 主程序-子程序、面向对象、层次结构 | 显式调用,控制流清晰 |
| 独立构件 | 进程通信、事件驱动(隐式调用) | 构件独立运行,通过消息/事件松耦合 |
| 虚拟机 | 解释器、规则系统 | 把「语义」参数化,程序=数据+解释引擎 |
| 仓库 | 数据库系统、黑板系统 | 共享数据中心,构件围绕仓库协作 |
考点直觉:
- 数据流 → 强调可重用、可扩展,性能瓶颈在管道
- 事件驱动 → 强调松耦合、新增构件不改旧构件,但执行顺序难保证、调试难
- 虚拟机 → 灵活、可移植,但性能差(解释器逐条翻译)
- 黑板 → 适合没有确定算法的问题(语音识别、专家系统)
二、架构风格逐个拆
| 风格 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 管道-过滤器 | 重用、易扩展、可并发 | 性能开销大、难以动态交互 | 编译、图像处理、数据流处理 |
| 主程序-子程序 | 简单直观 | 复用差、变化敏感 | 小型系统 |
| 面向对象 | 封装、继承、多态 | 对象间耦合、性能开销 | 业务系统 |
| 层次结构 | 每层职责单一、可替换 | 层间调用开销、层间耦合 | 网络协议栈、OS |
| 事件驱动 | 松耦合、易扩展 | 顺序不确定、调试难 | GUI、物联网 |
| 解释器 | 灵活、可移植 | 性能差 | 脚本、DSL |
| 规则系统 | 知识可增删 | 规则冲突、性能 | 专家系统 |
| 仓库/黑板 | 集中、适合复杂问题 | 中心瓶颈、并发控制难 | AI、编译器符号表 |
| C/S | 结构简单 | 客户端负担重、扩展性差 | 局域网应用 |
| B/S/三层 | 部署简单、集中管理 | 服务器压力、交互体验弱 | Web 系统 |
| SOA | 服务复用、松耦合 | 治理复杂、性能损耗 | 企业应用集成 |
| 微服务 | 独立部署、技术异构 | 分布式复杂度高 | 大型业务系统 |
三、架构模式与架构风格的关系
- 风格 = 粗粒度「体系结构级」;模式 = 细粒度「设计级」(MVC/MVP/MVVM、微内核、代理、Broker、管道等)
- 同一风格下可以套多个模式;考题会把两者混在一起让你区分
- 高频模式:MVC(视图/模型/控制器职责分离)、微内核(核心 + 插件热插拔)、代理/Broker(中间层透明转发)、客户端-服务器、分层
- 考点:MVC 的三层职责、微内核的插件机制、Broker 的透明调用
四、质量属性与战术
质量属性场景六要素(必考,案例必答题核心)
一个质量属性场景由六要素构成:刺激源(来源)、刺激、环境、构件(制品)、响应、响应度量。 真题问法:把一段描述拆成六要素,或判断「xx 与哪个质量属性相关、用什么战术」。
四大质量属性与战术
| 质量属性 | 战术方向 | 典型战术 |
|---|---|---|
| 性能 | 资源需求/资源管理/资源仲裁 | 引入并发、减少计算量、缓存、调度策略、负载均衡 |
| 可用性 | 错误检测/恢复/预防 | 心跳、冗余(主动/被动)、故障转移、重试、超时 |
| 安全性 | 抵抗/检测/恢复攻击 | 认证授权、加密、审计追踪、入侵检测 |
| 可修改性 | 局部化修改/防连锁反应/推迟绑定 | 高内聚低耦合、接口隔离、配置化、插件化 |
考点:给你场景让你选质量属性 + 战术(如「主站断电 20 秒内切换备用站点」→ 可用性 + 主动冗余)。
五、架构评估(ATAM/SAAM/CBAM)
- SAAM:最早的场景化评估,用场景衡量架构(以可修改性为主)
- ATAM:质量属性权衡分析方法——效用树 + 场景 + 敏感点/权衡点,识别架构决策对多个质量属性的影响(当前考试主力)
- CBAM:在 ATAM 基础上加成本/收益分析,从候选架构中选 ROI 最高的
- 四个概念必背:
- 敏感点:构件特性的变化会影响某个质量属性的点
- 权衡点:影响多个质量属性、需要权衡取舍的敏感点
- 风险点:存在潜在问题、可能导致质量属性不达标的决策
- 非风险点:被验证没有问题的决策
- 真题考法:给架构决策表,让你标出敏感点/权衡点/风险点,或问 ATAM 的步骤
六、4+1 视图与架构文档
- 4+1 视图(Kruchten/RUP):逻辑视图(功能)、进程视图(并发与同步)、开发视图(模块组织)、物理视图(部署)+ 场景(用例串联四个视图)
- 每个视图回答一类 stakeholder 的问题;场景是最小集成单元
- 架构文档(SAD):记录视图、架构决策与理由、质量属性场景;文档是评审与演化的基础
- 考点:给一组图判断属于哪个视图;UML 各图与视图的对应(类图→逻辑视图,部署图→物理视图,序列图→进程/场景)
ADL 与 ABSD
- ADL(架构描述语言):用形式化语言描述构件、连接件与配置(如 ACME/Wright/Darwin),把架构从「图」变成可分析、可验证的模型
- ABSD(基于架构的软件开发):以架构为核心驱动开发过程——架构需求 → 架构设计 → 架构文档化 → 架构复审 → 架构实现 → 架构演化,迭代进行
- 考点:ABSD 步骤排序、ADL 的作用(描述 + 分析,不只是画图)
七、构件、中间件与架构演化
构件技术
- 构件 = 可独立部署、接口明确、可复用的软件单元;三大特性:可重用、可替换、接口标准化
- 经典规范:COM/DCOM、CORBA、EJB、.NET(近年考得少,但概念题仍会出现)
- 构件与对象的区别:构件粗粒度、二进制级复用,对象细粒度、源码级
中间件分类(高频)
| 中间件 | 作用 |
|---|---|
| RPC(远程过程调用) | 透明调用远程函数 |
| MOM(消息中间件) | 异步解耦、削峰填谷 |
| ORB(对象请求代理) | 分布式对象透明调用(CORBA 核心) |
| TP Monitor(事务处理) | 事务管理、负载均衡 |
| 数据访问中间件 | 屏蔽异构数据库差异 |
架构演化
- 演化动机:需求变化、技术升级、质量缺陷
- 三类演化:修改(小改动)、重构(优化结构不改功能)、重新架构(推倒重来)
- 架构漂移/侵蚀:实现偏离架构决策 → 靠架构评审 + 文档 + 自动化约束拦截
八、案例分析怎么用这张表
- 必答题大概率是「质量属性场景 + 战术/评估」:先写六要素,再答战术,最后说权衡
- 风格识别题:找特征词(管道→逐级处理;事件→异步通知;黑板→无确定算法)
- 权衡题:答「敏感点/权衡点」而不是只列优点——阅卷看的是架构决策的权衡意识
- 与 重点分布与分值 的 P0 策略对应:这篇消化完,综合知识最大的分值块就稳了一半
相关
- 上篇:重点分布与分值 —— 分值分布与优先级
- 上篇:软考备考总览 —— 考试形式与备考路线
- 下篇:综合知识·计算机与软件工程 → 综合知识·信息安全与可靠性 —— 送分块