乐于分享
好东西不私藏

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

【软件系统架构】系列十三:系统架构设计——特定领域软件架构 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 的三个基本活动

阶段 目标 核心工作
领域分析
获取领域模型和需求
调研信息源(现有系统、文献、专家、用户、市场分析等)、提取领域共性需求
领域设计
构建 DSSA
基于领域模型生成高层次架构,定义构件、接口和复用策略
领域实现
开发可复用构件
将 DSSA 转化为实际可用的软件组件,支持多系统开发

关键特点:整个流程是迭代、螺旋式,在每个阶段都可能返回修改之前成果。

6. DSSA 的四种角色

角色 职责
领域专家
提供业务和技术知识,审查领域模型和 DSSA,确定样本系统
领域分析人员
获取知识,建立领域模型,控制分析过程
领域设计人员
根据领域模型设计 DSSA,验证设计准确性和一致性
领域实现人员
开发可复用构件,实现 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 稳定级、无弃用路线、无兼容策略,复用很快失效。