架构方法与过程 · 知识点总结
知识图谱
架构方法与过程
├── 1. ABSD(基于架构的软件开发方法)⭐⭐⭐
│ ├── 核心思想:业务+功能+质量驱动
│ ├── 三大基础:功能分解/架构风格/软件模板
│ └── 总体流程:需求→设计→文档化→复审→实现→演化
├── 2. MDA(模型驱动架构)⭐⭐
│ ├── CIM(计算无关模型)
│ ├── PIM(平台独立模型)
│ ├── PSM(平台相关模型)
│ └── Code(代码)
├── 3. DSSA(特定领域软件架构)⭐⭐
│ ├── 领域分析→领域设计→领域实现
│ ├── 垂直域 vs 水平域
│ └── 四类人员角色
├── 4. 软件产品线 ⭐
│ ├── 核心资源库 + 产品集合
│ └── 成功因素
└── 5. 软件架构复用 ⭐
├── 复用类型:水平/垂直/机会/系统
└── 历史演进:函数库→类库→构件库→服务库
一、ABSD(基于架构的软件开发方法)⭐⭐⭐
这是架构方法与过程中的最核心考点。
1.1 核心思想
ABSD(Architecture-Based Software Design)是一种架构驱动的方法,强调由以下三个因素共同驱动架构设计:
业务需求(商业目标)
↓
功能需求 → 通过用例获取
↓
质量需求 → 通过场景获取(刺激+环境+响应)
↓
架构设计(ABSD)
1.2 三大基础
| 基础 | 说明 |
|---|---|
| 功能分解 | 将系统按功能拆分,模块化设计(高内聚低耦合) |
| 架构风格选择 | 选择合适的架构风格满足业务和质量需求 |
| 软件模板(模式) | 使用已有架构模板或设计模型,提高复用性 |
1.3 需求获取方式
| 需求类型 | 获取方式 | 示例 |
|---|---|---|
| 功能需求 | 用例(Use Case) | 用户登录、订单查询 |
| 质量需求 | 场景(Scenario) | 刺激+环境+响应 |
质量需求场景示例:
- 刺激:用户发起查询请求
- 环境:正常运行状态
- 响应:响应时间 ≤ 10ms
二、ABSD 总体流程 ⭐⭐⭐
2.1 六大阶段
架构需求 → 架构设计 → 架构文档化 → 架构复审 → 架构实现 → 架构演化
↑ |
└──────────────────── 可反馈迭代 ←──────────────────────┘
| 阶段 | 核心任务 | 一句话理解 |
|---|---|---|
| 架构需求 | 识别构件 | 找构件(从类到构件) |
| 架构设计 | 构建系统结构 | 组织构件(构件如何协作) |
| 架构文档化 | 记录架构 | 写文档(规格说明书+质量设计说明书) |
| 架构复审 | 发现问题 | 查问题(评审架构是否满足需求) |
| 架构实现 | 编码实现 | 落地构件(编码+测试+集成) |
| 架构演化 | 持续优化 | 优化构件(适应需求变化) |
2.2 ABSD 核心链条
需求 → 类 → 构件 → 架构
- 需求阶段: 从需求中识别类 → 对类分组 → 打包成构件
- 设计阶段: 选择架构模型 → 映射构件 → 分析交互 → 生成架构
2.3 架构文档化
输出文档:
| 文档 | 内容 |
|---|---|
| 架构规格说明书 | 系统结构 |
| 质量设计说明书 | 质量需求 |
关键要求:
- 面向用户编写
- 分发给相关人员
- 保证文档最新
- 文档质量直接影响架构成功
2.4 整体逻辑记忆
需求阶段 → 找构件
设计阶段 → 组织构件
实现阶段 → 落地构件
演化阶段 → 优化构件
三、MDA(模型驱动架构)⭐⭐
3.1 核心概念
| 术语 | 含义 |
|---|---|
| Model | 客观事物的抽象表示 |
| Architecture | 系统的部件、连接件及约束规则 |
| Model-Driven | 使用模型完成分析、设计、构建、部署、维护 |
3.2 三大目标
| 目标 | 英文 | 含义 |
|---|---|---|
| 可移植性 | Portability | 系统可在不同平台运行 |
| 互通性 | Interoperability | 系统间可互操作 |
| 可重用性 | Reusability | 模型和代码可重复使用 |
3.3 四层模型 ⭐⭐
CIM → PIM → PSM → Code
业务需求 平台无关 平台相关 源代码
| 模型 | 全称 | 含义 | 关注点 |
|---|---|---|---|
| CIM | Computation Independent Model | 计算无关模型 | 业务需求和系统功能需求 |
| PIM | Platform Independent Model | 平台独立模型 | 高抽象层次,独立于实现技术 |
| PSM | Platform Specific Model | 平台相关模型 | 为特定实现技术量身定做 |
| Code | Source Code | 源代码 | 每个PSM转换为代码 |
转换关系:
CIM(业务分析)
↓
PIM(平台无关设计)
↓ 可转换为多个
PSM1(Java平台) PSM2(.NET平台) PSM3(Python平台)
↓ ↓ ↓
Code1 Code2 Code3
记忆要点:
- CIM = 业务视角(不关心技术)
- PIM = 设计视角(不关心平台)
- PSM = 实现视角(绑定具体平台)
- Code = 编码视角(最终代码)
四、DSSA(特定领域软件架构)⭐⭐
4.1 定义
DSSA(Domain-Specific Software Architecture)以特定问题领域为对象,形成由领域模型、参考需求、参考架构组成的开发基础架构,支持一个特定领域中多个应用的生成。
4.2 领域类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 垂直域 | 某一狭小领域或某个行业的共性 | 金融风控、医疗影像 |
| 水平域 | 多个行业可通用的共性 | 用户管理、日志系统 |
4.3 三大活动
领域分析 → 领域设计 → 领域实现
↓ ↓ ↓
建立领域模型 获得DSSA 开发可复用信息
↑ |
└────── 逐渐求精 ←──────┘
| 活动 | 核心任务 | 输出 |
|---|---|---|
| 领域分析 | 建立领域模型 | 领域模型 |
| 领域设计 | 获得DSSA | 参考架构 |
| 领域实现 | 开发和组织可复用信息 | 可复用构件 |
4.4 四类人员角色 ⭐
| 人员 | 任务 |
|---|---|
| 领域专家 | 提供需求规约和实现知识,复审领域模型和DSSA |
| 领域分析人员 | 控制领域分析过程,知识获取,组织领域模型 |
| 领域设计人员 | 控制设计过程,开发DSSA,建立模型与DSSA联系 |
| 领域实现人员 | 开发可重用构件,提取构件,建立构件与DSSA联系 |
记忆口诀: “专家提需求,分析建模型,设计出架构,实现造构件”
4.5 建立过程
领域范围
↓
定义领域特定元素
↓
定义领域特定的设计和实现需求约束
↓
定义领域模型和架构
↓
生产、收集可复用的资产
↓
(递归、并发、螺旋)→ 回到领域范围
4.6 领域驱动设计(DDD)
定义: 通过将软件实现与持续进化的领域模型结合来处理复杂业务需求。
核心: 聚焦核心领域逻辑,强调业务与技术专家建立统一语言,利用分层架构分离业务与技术复杂度。
子域类型:
| 子域类型 | 定义 | 投入精力 | 示例 |
|---|---|---|---|
| 核心域 | 核心竞争力 | 70% | 直播、提问 |
| 支持域 | 核心必要的支撑 | 20% | 考勤、管理 |
| 通用域 | 行业通用,可复用 | 10% | 登录、通知、支付 |
限界上下文:
- 定义一个特定边界,在此边界内领域模型拥有明确、无歧义的含义
- 作用:解耦与内聚、消除歧义、明确集成关系
五、软件产品线 ⭐
5.1 概念
软件产品线 = 核心资源库(领域工程所有结果的集合)+ 产品集合
5.2 特点
| 特点 | 说明 |
|---|---|
| 核心资源 | 产品构造的基础 |
| 产品集合 | 基于核心资源构建的产品族 |
| 过程驱动 | 按照定义好的过程开发 |
| 特定领域 | 针对特定业务领域 |
| 技术支持 | 需要工具和基础设施支持 |
| 以架构为中心 | 架构是核心资产 |
5.3 成功因素
- 对该领域具备长期和深厚的经验
- 一个用于构件产品的好的核心资源库
- 好的产品线架构
- 好的管理
六、软件架构复用 ⭐
6.1 概念
系统化的开发过程,通过识别、分析、分类、获取和修改软件实体,以便在不同软件开发中重复使用。
6.2 复用历史演进
函数库 → 类库 → 构件库 → 服务库
6.3 复用类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 水平复用 | 不分行业领域,通用 | 日志工具、加密库 |
| 垂直复用 | 分行业领域,专用 | 金融风控模型 |
| 机会复用 | 开发中发现可复用资产就复用 | 临时复用已有代码 |
| 系统复用 | 开发前规划,决定哪些需要复用 | 有计划的复用策略 |
6.4 基本过程
- 构造/获取可复用资产
- 管理资产
- 选择可复用的部分
七、方法横向对比
7.1 ABSD vs MDA vs DSSA
| 维度 | ABSD | MDA | DSSA |
|---|---|---|---|
| 核心 | 架构驱动设计 | 模型驱动转换 | 领域特定架构 |
| 关注点 | 业务+功能+质量 | 模型层次转换 | 领域复用 |
| 驱动力 | 需求驱动 | 模型驱动 | 领域驱动 |
| 输出 | 架构设计文档 | CIM→PIM→PSM→Code | 领域模型+参考架构 |
| 适用场景 | 通用软件开发 | 跨平台系统开发 | 特定领域产品族 |
7.2 软件产品线 vs DSSA
| 维度 | 软件产品线 | DSSA |
|---|---|---|
| 核心 | 核心资源库 + 产品集合 | 领域模型 + 参考架构 |
| 范围 | 产品族开发 | 特定领域架构 |
| 关系 | DSSA 是产品线的技术基础 | 产品线是 DSSA 的应用形式 |
八、高频考点速记
8.1 选择题高频
- ABSD三大基础:功能分解、架构风格选择、软件模板
- ABSD核心链条:需求→类→构件→架构
- ABSD六大阶段:需求→设计→文档化→复审→实现→演化
- MDA四层模型:CIM→PIM→PSM→Code
- DSSA三大活动:领域分析→领域设计→领域实现
- DSSA四类人员:专家、分析人员、设计人员、实现人员
- 复用类型:水平/垂直/机会/系统
- 软件产品线 = 核心资源库 + 产品集合
8.2 案例分析高频
- ABSD流程的应用(识别构件→组织构件→实现构件)
- 质量需求的场景描述(刺激+环境+响应)
- MDA模型转换过程
- DSSA的领域分析和架构设计
- 架构复用策略的选择
8.3 论文写作素材
- ABSD方法在项目中的应用
- 基于DSSA的领域架构设计
- 软件产品线的实践经验
- 架构复用的策略和效果
九、速记口诀
“ABSD三驱动,六阶段找组落优;MDA四层转,CIM PIM PSM Code;DSSA三活动,分析设计实现走;产品线两资源,核心库加产品集”
分解记忆:
ABSD:
- 三驱动 = 业务 + 功能 + 质量
- 六阶段 = 需求→设计→文档化→复审→实现→演化
- 核心逻辑 = 找构件→组织构件→落地构件→优化构件
MDA:
- 四层 = CIM → PIM → PSM → Code
- 目标 = 可移植性 + 互通性 + 可重用性
DSSA:
- 三活动 = 领域分析→领域设计→领域实现
- 两域 = 垂直域(行业专用)+ 水平域(通用)
- 四人员 = 专家提需求,分析建模型,设计出架构,实现造构件