【软件系统架构】系列十三:系统架构设计——特定领域软件架构 DSSA

1. DSSA 概念
DSSA 是针对特定类型任务或问题领域的软件架构集合,它提供了一组可复用的软件构件、设计模式、参考架构和领域模型,目标是支持该领域中多个应用系统的开发。
-
作用:通过复用领域内共性的需求与设计,提高开发效率、降低成本、保证质量。 -
核心:领域模型 + 参考架构 + 可复用构件
核心价值
-
规模化复用:把一次性项目变为”产品线”方式复用,显著缩短交付周期。 -
质量可预期:在领域内沉淀过的结构/组件与非功能属性保障(安全、实时、可靠)。 -
可演化:通过变体管理与约束规则,在不失控的前提下快速定制。
与”通用架构”的区别:通用架构强调跨领域适配;DSSA 强调在一个领域内深耕,把经验固化为”可装配的标准件+装配规程”。
2. DSSA 的必备特征
-
严格定义的问题域和解域
确定 DSSA 适用的业务范围和技术范围。 -
普遍性
能够覆盖领域内大多数系统开发需求。 -
构件组织抽象
提供领域内组件的结构化模型。 -
固定的可复用元素
包括典型模块、服务、接口、设计模式等,可在开发中直接复用。
3. DSSA 的领域分类
-
垂直域(Vertical Domain) -
针对单一领域的完整架构 -
例如:银行核心系统、物流管理系统 -
水平域(Horizontal Domain) -
跨领域的共性模块 -
例如:支付系统、用户认证模块、报表生成系统
4. DSSA 的六大核心资产
– 领域模型(Domain Model)
统一领域概念、对象、关系、约束与词汇表(Ubiquitous Language)。
– 参考需求(Reference Requirements)
用例族(Use Case Family)+ 质量属性场景(QAS:安全性、实时性、可维护性等)。
– 参考架构(Reference Architecture)
在该领域内被验证过的架构风格组合(分层/消息驱动/事件溯源/DDD 等)以及构件-连接件清单。
– 构件与连接件目录(Component & Connector Catalog)
可复用的功能件(如”策略引擎””设备注册””E2EE 模块”)和标准连接件(MQTT、gRPC、WebSocket、BLE 等)。
– 变体与配置规则(Variability & Configuration Rules)
特性模型(Feature)到组件/参数/约束的映射,含绑定时机(编译时/部署时/运行时)。
– 生产与合规模板(Production & Compliance)
生成/装配脚本、基线项目、契约测试套件、合规清单(隐私/安全/行业标准)。
5. DSSA 的三个基本活动
| 阶段 | 目标 | 核心工作 |
|---|---|---|
| 领域分析 |
|
|
| 领域设计 |
|
|
| 领域实现 |
|
|
关键特点:整个流程是迭代、螺旋式,在每个阶段都可能返回修改之前成果。
6. DSSA 的四种角色
| 角色 | 职责 |
|---|---|
| 领域专家 |
|
| 领域分析人员 |
|
| 领域设计人员 |
|
| 领域实现人员 |
|
7. DSSA 的建立过程(5 阶段)
| 阶段 | 输入 | 输出 | 核心问题 |
|---|---|---|---|
| 定义领域范围 |
|
|
|
| 定义领域特定元素 |
|
|
|
| 定义设计与实现约束 |
|
|
|
| 定义领域模型和架构 |
|
|
|
| 产生可复用产品单元 |
|
|
|
特点:过程并发、递归、螺旋式,通过不断迭代,将用户需求映射为可实现的 DSSA 构件。
8. DSSA 的三层次系统模型
| 层次 | 参与者 | 主要内容 |
|---|---|---|
| 领域开发环境 |
|
|
| 领域特定的应用开发环境 |
|
|
| 应用执行环境 |
|
|
说明:领域架构师负责整体设计,应用工程师负责定制实例化,操作员负责执行和运维。
9. DSSA 建立过程与三层系统模型

图示说明:
-
角色与阶段关系: -
领域专家、分析人员参与前期需求分析和元素定义 -
设计人员负责架构设计 -
实现人员开发可复用构件 -
应用工程师和操作员分别对应应用开发和执行
– 建立过程:
-
5 个阶段呈螺旋迭代(Step5 → Step1 回环) -
每一阶段都有明确产出 -
三层系统模型: -
领域开发环境:核心架构和工具,由领域架构师管理 -
领域特定应用开发环境:应用工程师定制实例化 -
应用执行环境:操作员部署和运行

图示解析:
-
泳道对应角色: -
每条泳道表示一个参与 DSSA 的角色。 -
流程顺序: -
从左到右、从上到下,依次展示角色在各阶段的活动。 -
关键活动: -
领域专家:提供知识,参与分析与约束定义 -
领域分析人员:建立领域模型 -
领域设计人员:设计 DSSA -
领域实现人员:开发复用构件 -
领域架构师:提供核心参考架构 -
应用工程师:实例化架构 -
操作员:执行部署
10. 方法论:从”领域工程”到”应用工程”
领域工程(Domain Engineering)
-
领域调研 → 范围圈定(Scoping) -
特性建模(Feature Modeling)与术语本体 -
参考需求 & 质量属性场景库 -
参考架构 + 组件目录 + 接口契约 -
变体模型、约束与装配流水线(脚手架、模板、代码生成)
应用工程(Application Engineering)
-
选特性 → 解约束 → 绑定变体 -
从脚手架/模板快速出项目 -
合规/契约/性能基准自动校验 -
持续回收可泛化资产,反哺领域库(Governance)
11. DSSA 与产品线(SPL)& 质量属性
-
产品线:DSSA 是 SPL 的”架构心脏”;SPL 还包含市场/商业/运维等策略层。 -
质量属性的落地(举例) -
安全:威胁建模、零信任边界、E2EE、最小权限、密钥轮换、硬件根信任。 -
性能/实时:消息优先级、背压控制、资源隔离、断续网容忍。 -
可靠性:幂等接口、事件溯源、重试/补偿、WDT、降级与自愈。 -
可运维:可观测性规范(日志/指标/链路)、灰度/金丝雀、版本基线。
12. 变体管理:怎么控”灵活不失控”
-
变体类型:存在/不存在(可选特性)、多值选择(通信协议)、参数化(超时、窗口)、策略可插拔(鉴权/路由)。 -
绑定时机:编译时(宏/生成)、部署时(配置/容器化)、运行时(策略/插件)。 -
实现手段:策略模式、插件架构、依赖注入、特性标记(Feature Flags)、模板与代码生成、DSL/元模型。 -
一致性约束:特性间依赖/互斥、资源约束(如”离线模式必须启用本地缓存”)。
13. 评估与度量
-
架构评估:QAW → ATAM(权衡分析)→ CBAM(成本收益)→ 变体覆盖率评估。 -
合规评估:安全基线、隐私与合规条款(数据最小化、可追踪性、审计)。 -
度量:复用率、缺陷密度、变体装配时间、上线 Lead Time、平均恢复时间、SLO 达标率、架构侵蚀率。
14. DSSA 交付物模板
-
《领域词汇表与领域模型》 -
《参考用例族与 QAS 库》 -
《参考架构说明书 + 视图集(C&C、部署、运行时、数据视图)》 -
《组件与接口契约(OpenAPI/gRPC/IDL/消息契约)》 -
《特性模型与约束规则(含绑定时机)》 -
《生成脚手架与项目模版 + 契约/安全基线测试》 -
《治理与版本策略(API 稳定级别、弃用政策)》 -
《度量与验收标准》
15. 示例:IoT 智能锁领域 DSSA(参考实现)
(1)领域模型(类图)

(2)参考架构(组件-连接件视图)

(3)远程开锁序列(含安全控制点)

(4)部署视图(边云协同)

(5)变体模型片段
-
连接性:{BLE, Wi-Fi, LTE-CatM1(可选)} -
认证方式:{PIN, 指纹, NFC, WebAuthn/Passkey(可选组合)} -
访问模式:{一次性密码、时间窗密码、远程开锁、离线开锁} -
安全级别:{基础 TLS、E2EE(必选)、硬件密钥(可选/依芯片)} -
供电:{电池、太阳能、外接供电} -
边侧策略:{本地PDP 开/关;Tamper 触发锁死/告警/录像联动}
变体→实现映射(示例)
-
WebAuthn ⇒ App 启用 WebAuthn Client、服务端 Auth Service 支持 FIDO2;设备侧启用公钥凭据校验路径。 -
离线开锁 ⇒ 设备启用本地 Policy Engine 子集 + 时间窗缓存 + 失败队列;App 必须实现 离线一次性码 生成。 -
硬件密钥 ⇒ 设备 Crypto Engine 走硬件安全单元(HSM/SE);KMS 管理主密钥派生策略。
16. 把 DSSA 落到团队的 12 条”动作清单”
-
选定领域范围与产品线边界(支不支持 LTE?是否包含门禁联动?)。 -
出一版领域词汇表与类图,冻结术语。 -
组织质量属性研讨(QAW),形成可评估的场景库。 -
选择架构风格组合(如分层 + 事件驱动 + DDD)并确定通信基准(MQTT/REST/WebSocket)。 -
列出核心组件目录与接口契约(含安全/鉴权/幂等约定)。 -
定义特性模型、约束与绑定时机。 -
建立脚手架与模板仓库(多变体可一键生成骨架)。 -
引入契约测试与合规基线(安全、隐私、加密、审计)。 -
设计观测性规范(日志、指标、Trace)+ SLO。 -
制定版本与弃用策略(API 稳定级、兼容窗口)。 -
跑一次ATAM/CBAM,记录权衡与决策日志。 -
建立度量面板(复用率、Lead Time、故障率、覆盖率)。
17. 常见坑与规避
-
只画图不固化规则:没有变体约束与绑定时机,后期爆炸式分叉。 -
把 DSSA 当框架:DSSA 是方法 + 资产 + 规程,不仅是代码库。 -
质量属性”口号化”:必须转为可测场景与合规条目。 -
缺少治理:无 API 稳定级、无弃用路线、无兼容策略,复用很快失效。
夜雨聆风