本页目录 · 12 节
- 一、分值定位
- 二、概念关系图(先理清"谁包含谁")
- 三、ABSD / ABSDM
- 3.1 ABSD 的三个理论基础
- 3.2 ABSDM 六个子过程(必背,顺序不能乱)
- 3.3 体系结构演化 6 步(论文高频,必背)
- 四、DSSA(特定领域软件架构)
- 4.1 定义与三活动
- 4.2 四类参与角色
- 4.3 垂直域 vs 水平域(最高频辨析)
- 4.4 DSSA 建立过程(5 步)
- 五、软件复用与软件产品线
- 5.1 复用的层次与类型
- 5.2 软件产品线
- 5.3 构件分类方法(三种,常考匹配)
- 六、构件与构件组装
- 6.1 构件的三个基本特征(教材原话)
- 6.2 构件模型三要素
- 6.3 构件组装三层次(必背)
- 6.4 主流构件技术对照
- 七、逆向工程与再工程
- 7.1 逆向工程的四个抽象层次(由低到高)
- 7.2 重构 / 逆向工程 / 再工程
- 7.3 遗留系统演化策略(四象限,必考)
- 八、跨年真题定位索引
- 九、典型陷阱
- 十、答题模板
- 模板 A:综合知识"某活动属于哪个子过程"(10 秒)
- 模板 B:案例/论文"构件化改造"论述骨架
- 模板 C:论文"论软件体系结构演化"
- 十一、自测清单
- 十二、来源与可信度
知识域 03 · 架构设计方法、构件复用与演化
题号指向
../01-年份索引/<年份>-套卷.md。标记:〔核〕/〔推〕/〔存疑〕。
一、分值定位
| 科目 | 频率 | 形态 |
|---|---|---|
| 综合知识 | 每套 4—8 题 | ABSD 六子过程、DSSA 三活动/角色/垂直域、构件特征与组装、逆向工程、演化 6 步、遗留系统策略 |
| 案例分析 | 中低频(2018 下案例五 SOA 属 05 域;本域多在综合知识考) | 偶见"构件化改造"类问 |
| 论文 | 高频备选(2022 下论文一"论基于构件的软件开发方法"、2018 下论文二"论软件体系结构演化") | 必须准备一套"构件化"项目素材 |
本域最大的特点是:名词密集、极易张冠李戴(ABSD / ABSDM / DSSA / 领域工程 / 产品线 五个概念互相套娃)。复习策略是画一张关系图,而不是逐条背。
二、概念关系图(先理清"谁包含谁")
软件复用
├─ 水平式复用(跨领域通用:标准函数库、中间件)
└─ 垂直式复用(特定领域:医学词汇表、电子商务标准)
└─ 领域工程(领域分析 → 领域设计 → 领域实现)
├─ DSSA(特定领域软件架构):产出领域参考架构
└─ 软件产品线:核心资源 + 产品集合 + 生产方式
基于架构的软件设计(ABSD)
└─ ABSDM 六子过程:需求 → 设计 → 文档化 → 复审 → 实现 → 演化
└─ 演化 6 步
构件化开发:构件(可独立部署)→ 构件模型(构件/容器/接口)→ 组装(定制/集成/扩展)
逆向工程 → 再工程(重构 + 逆向 + 前向)
三、ABSD / ABSDM
3.1 ABSD 的三个理论基础
- 功能的分解——用模块化把功能拆开;
- 通过选择体系结构风格来实现质量属性与商业需求;
- 软件模板的使用——复用架构骨架(对应产品线思想)。
3.2 ABSDM 六个子过程(必背,顺序不能乱)
| 序号 | 子过程 | 主要工作 | 产出 |
|---|---|---|---|
| 1 | 体系结构需求 | 从需求中提取质量属性与商业需求,确定优先级 | 需求列表、质量属性场景 |
| 2 | 体系结构设计 | 选择风格、划分构件、定义接口与连接件 | 体系结构模型 |
| 3 | 体系结构文档化 | 编写体系结构文档、视图 | 架构文档、多视图 |
| 4 | 体系结构复审 | 由外部人员评审,识别风险与潜在问题 | 复审报告 |
| 5 | 体系结构实现 | 按架构开发构件、组装、测试 | 可运行系统 |
| 6 | 体系结构演化 | 需求变化后按 6 步调整架构 | 新版本架构 |
真题:2023 下 52(ABSD 六阶段)、2024 下 36、2025 下 40、2022 下 46—47、2021 下 44—45、2026 上 59—60、2019 下 51—53(ABSDM 六子过程)。
3.3 体系结构演化 6 步(论文高频,必背)
- 需求变动归类——把新需求与已有构件对应,找不到对应的做标记;
- 制订体系结构演化计划——作为后续工作的指南;
- 修改、增加或删除构件——并对改动的构件做功能测试;
- 更新构件的相互作用——更新控制流与接口;
- 构件组装与测试——组装成新架构,做整体功能与性能测试;
- 技术评审——确认新架构反映需求变化;不符合则在 2—6 步间迭代。
真题:2018 下论文二(原题直接问"系统演化的 6 个步骤")、2024 上 20、2025 下 11(变更分类)、2024 下 61。
四、DSSA(特定领域软件架构)
4.1 定义与三活动
DSSA:在一个特定应用领域中,为支持一组应用系统的生成而开发的、具有普遍适用性的软件架构。
| 活动 | 目标 | 主要产出 |
|---|---|---|
| 领域分析 | 获得领域模型 | 领域模型、领域需求 |
| 领域设计 | 获得DSSA(领域参考架构) | 参考架构 |
| 领域实现 | 开发和组织可重用信息,对基础架构进行实现 | 可复用构件、领域实现 |
母题(2018 下 45—46,〔推〕答案 B、C):领域设计的目标是获得特定领域软件架构;领域实现是为了开发和组织可重用信息、对基础软件架构进行实现。
4.2 四类参与角色
| 角色 | 职责 |
|---|---|
| 领域专家 | 提供领域知识、需求与经验,确认领域模型 |
| 领域分析师 | 领域建模、提炼共性与可变性 |
| 领域设计人员 | 设计 DSSA 参考架构 |
| 领域实现人员 | 开发可复用构件、实现架构 |
4.3 垂直域 vs 水平域(最高频辨析)
| 概念 | 含义 | 举例 |
|---|---|---|
| 垂直域 | 限定在一个特定领域内的共性 | 银行清算系统的共性架构 |
| 水平域 | 多个领域共享的共性部分 | 日志、安全、通信中间件 |
真题:2026 下 24、2021 下 49—50、2023 下 37。
4.4 DSSA 建立过程(5 步)
- 定义领域范围;
- 定义领域特定的元素;
- 定义领域特定的设计和实现需求约束;
- 定义领域模型和体系结构;
- 产生、搜集可重用的产品单元。
真题:2026 下 28、2025 下 13、2022 下 53。
五、软件复用与软件产品线
5.1 复用的层次与类型
| 维度 | 类型 | 例子 |
|---|---|---|
| 范围 | 水平式复用 | 标准函数库、中间件、通用框架 |
| 范围 | 垂直式复用 | 医学词汇表、电子商务标准、网银支付接口 |
| 层次 | 代码复用 < 设计复用 < 架构复用 < 领域复用 < 产品线复用 | 层次越高收益越大、难度越大 |
母题(2018 下 35,〔推〕答案 B):标准函数库是典型的水平式复用(医学词汇表、电子商务标准是垂直式)。
5.2 软件产品线
- 三个基本成分:核心资源(架构 + 可复用构件)、产品集合、生产方式(框架/设计模式/构件)。
- 与 DSSA 的关系:DSSA 提供参考架构,产品线在此之上批量生产产品。
- 真题:2025 上 27、2024 上 31—32。
5.3 构件分类方法(三种,常考匹配)
| 方法 | 机制 | 特点 |
|---|---|---|
| 关键字分类法 | 按层次化关键字(术语表)组织 | 简单,受限于术语表 |
| 刻面分类法(Faceted) | 用多个"刻面"(如功能、对象、算法)描述,每刻面有术语空间 | 灵活、支持多维检索,最常用 |
| 超文本组织方法 | 用链接把构件文档连成网 | 适合浏览、不利于精确检索 |
真题:2019 下 35—37、2020 下 35、2023 下 62(构件库管理)。
六、构件与构件组装
6.1 构件的三个基本特征(教材原话)
- 独立部署单元——可独立打包、部署;
- 作为第三方组装单元——由第三方按契约组装,不需了解内部实现;
- 没有外部可见状态——对外只暴露接口,不暴露内部状态。
真题:2024 上 35、2023 下 61(外部可见性)、2022 下 35、2021 下 35。
6.2 构件模型三要素
构件(Component)+ 容器(Container)+ 构件接口(Interface)。
- 接口分离原则:构件对外只暴露接口,实现细节隐藏。
- 契约式接口:用前置条件/后置条件(契约)描述构件行为,是"设计即文档"的手段。真题 2023 下 67。
6.3 构件组装三层次(必背)
| 层次 | 含义 |
|---|---|
| 定制(Customization) | 通过参数/配置调整构件行为 |
| 集成(Integration) | 通过胶水代码/适配器把构件连接 |
| 扩展(Extension) | 通过继承/包装增加新能力 |
母题(2018 下 39,〔推〕答案 C):定制、集成和扩展。
组装失败的常见原因(2024 上 34):接口不匹配、语义不一致、构件版本冲突、质量属性不达标。
6.4 主流构件技术对照
| 技术 | 构件形态 | 关键概念 |
|---|---|---|
| EJB | 会话 Bean(业务交互)/ 实体 Bean(持久化)/ 消息驱动 Bean(异步) | 容器管理事务与生命周期 |
| CORBA | 伺服对象(Servant)是对象的真正实现,负责完成客户端请求 | ORB、对象适配器 |
| COM/DCOM | 对象复用:包容(containment)/ 聚合(aggregation) | 接口 IUnknown |
| J2EE | 五种构件:Applet、Servlet、JSP、EJB、Application Client | 多层应用 |
真题:2018 下 36—41(EJB 三类、CORBA Servant、J2EE 五构件)、2021 下 37—38(COM 组装)、2022 下 37(服务端构件模型)。
七、逆向工程与再工程
7.1 逆向工程的四个抽象层次(由低到高)
| 层次 | 恢复的信息 |
|---|---|
| 实现级 | 语法树、符号表、过程设计表示 |
| 结构级 | 构件间调用关系、依赖关系、程序结构 |
| 功能级 | 程序段与功能(语义)的对应 |
| 领域级 | 程序实体与领域概念的对应 |
真题:2025 下 23、2025 上 39、2019 下 39—41(常问"恢复调用关系属于哪一级"→结构级)。
7.2 重构 / 逆向工程 / 再工程
| 概念 | 定义 | 是否改变架构 |
|---|---|---|
| 重构(Refactoring) | 不改变外部行为,改善内部结构 | 否 |
| 逆向工程(Reverse Engineering) | 从代码恢复设计与需求信息 | 否(只产出信息) |
| 再工程(Reengineering) | 逆向 + 重构 + 前向工程,重建系统 | 是 |
7.3 遗留系统演化策略(四象限,必考)
| 高业务价值 | 低业务价值 | |
|---|---|---|
| 高技术质量 | 改造(Evolution) | 继承(Maintenance) |
| 低技术质量 | 集成(Integration) | 淘汰(Elimination) |
真题:2022 下 43、2023 下(遗留系统)、2024 下 12(软件维护)。
八、跨年真题定位索引
| 年份 | 题号 | 考点 |
|---|---|---|
| 2026 下 | 24 / 27 / 28 | DSSA 垂直域/水平域、软件动态性、DSSA 建立过程 |
| 2026 上 | 46 / 59—62 | 软件复用、ABSD、领域工程 |
| 2025 下 | 11 / 13 / 23 / 40 / 60 | 架构演化变更分类、DSSA 领域分析、逆向工程、ABSD、软件复用 |
| 2025 上 | 27 / 39 | 软件产品线、逆向工程 |
| 2024 下 | 12 / 36 / 53 / 61 | 软件维护、ABSD、软件复用、体系结构演化 |
| 2024 上 | 20 / 31—35 | 体系结构演化、可复用资产、领域模型、构件组装方式、组装失败原因、构件基本特征 |
| 2023 下 | 21 / 37 / 43—44 / 52—54 / 61—64 / 67—69 | 架构复用、DSSA、ABSD、ABSD 六阶段、领域工程、构件外部可见性、构件库、构件类型、契约式接口、构件质量特性 |
| 2022 下 | 35—38 / 43 / 46—47 / 50—53 | 构件特征/接口/服务端模型/构件演化、遗留系统、ABSD、架构复用、DSSA |
| 2021 下 | 35—38 / 44—45 / 49—50 | 构件特征、构件交互问题、COM 组装、ABSD、DSSA 垂直域/水平域 |
| 2020 下 | 35 | 构件分类 |
| 2019 下 | 35—41 / 51—53 | 构件分类方法、构件组装、逆向工程、ABSDM 六子过程 |
| 2018 下 | 35—41 / 45—46 | 软件重用、EJB、构件组装层次、CORBA、J2EE、DSSA |
| 2018 下 | 论文二 | 体系结构演化 6 步 |
| 2022 下 | 论文一 | 基于构件的软件开发方法 |
九、典型陷阱
- ABSD ≠ ABSDM:ABSD 是"方法",ABSDM 是其"模型/过程"(六子过程)。
- DSSA 三活动的产出:领域分析→领域模型;领域设计→DSSA;领域实现→可复用构件。三者错位是最高频失分点。
- 垂直域 vs 水平域:垂直=领域内共性,水平=跨领域共性。别按"上下"字面理解。
- 逆向工程四层次顺序:实现级 < 结构级 < 功能级 < 领域级。"恢复调用关系"是结构级,不是功能级。
- 构件"没有外部可见状态":这是教材原话,选项若改成"构件必须无状态"则是错误表述(构件内部可有状态,只是不对外可见)。
- 组装三层次是"定制/集成/扩展",不是"初始化/互连/集成"(后者是干扰项)。
- 遗留系统四象限:技术质量高+价值低→继承;技术质量低+价值高→集成(不是"改造")。
- 产品线 ≠ DSSA:DSSA 产出参考架构,产品线是"批量生产产品"的组织方式。
- 演化 6 步的第 1 步是"需求变动归类",不是"制订计划";第 6 步是"技术评审",不是"部署上线"。
十、答题模板
模板 A:综合知识"某活动属于哪个子过程"(10 秒)
出现"提取质量属性/优先级" → 体系结构需求
出现"选风格/划分构件/定义接口" → 体系结构设计
出现"写文档/视图" → 文档化
出现"外部专家评审/风险识别" → 复审
出现"按架构开发构件/组装" → 实现
出现"需求变化后调整架构" → 演化
模板 B:案例/论文"构件化改造"论述骨架
① 现状痛点:单体系统、模块耦合、复用率低(给量化:复用率 <20%,新增功能平均 X 人日)
② 领域分析:识别共性(水平域:日志/权限/通信)与可变性(垂直域:业务规则)
③ 参考架构:按 DSSA 定义分层与构件边界,明确契约式接口(前置/后置条件)
④ 组装策略:定制(配置化)→ 集成(适配器/ESB)→ 扩展(插件)
⑤ 治理:构件库 + 刻面分类 + 版本管理 + 质量认证
⑥ 效果:复用率提升至 X%,新业务上线周期从 X 周降到 Y 周
模板 C:论文"论软件体系结构演化"
一、项目背景(300 字)
二、演化 6 步逐条展开(600 字,每步给一句"我们做了什么")
三、重点讲 2 步(600 字):建议选"需求变动归类"和"构件组装与测试",
前者体现需求—构件映射能力,后者体现工程落地能力
四、效果与不足(300 字)
十一、自测清单
- [ ] 默写 ABSDM 六子过程并各说一句主要工作
- [ ] 默写体系结构演化 6 步
- [ ] 说出 DSSA 三活动、四角色、垂直域/水平域区别
- [ ] 说出构件三个基本特征、构件模型三要素、组装三层次
- [ ] 说出三种构件分类方法及各自优缺点
- [ ] 说出逆向工程四层次并举例
- [ ] 画出遗留系统四象限并给出四种策略
- [ ] 区分水平式复用与垂直式复用,各举两例
十二、来源与可信度
- 概念表述以《系统架构设计师教程》"基于架构的软件设计""软件复用""构件技术"章节为准。
- 2018 下 35/39/45/46 题为〔推〕,已与教材定义交叉验证;EJB/CORBA/J2EE 三题为常识性技术事实,可信度高。
- 部分年份(2018 下、2024 上、2023 下)为考点还原而非完整题面,细节以套卷标注为准。