Daxia Blog
Uncategorized | CyberSecurity | KB | Rust | WebUI | FHIR | Javascript | EA

TOGAF核心概念辨析:交付物、制品与构建块——以数据库设计为例

引言

在企业架构框架TOGAF的学习与应用中,交付物(Deliverable)制品(Artifact)构建块(Building Block) 是三个最基础也最容易被混淆的概念。很多架构师在实践中难以清晰区分它们,导致沟通效率低下,文档结构混乱。

本文将通过一个具体的例子—— 客户关系管理(CRM)数据库设计文档,来逐一解析这三个概念的本质、区别和相互关系。读完本文,你将能像区分“设计图纸”、“汽车零部件”和“整车交付”一样,轻松理解这些架构核心概念。

核心定义:一句话抓住本质

在深入例子之前,让我们用一句话抓住每个概念的核心:

  • 交付物:“要交给别人的正式成果”——一份完整的、可签核的文档或报告。
  • 制品:“用来描述架构的工作产物”——构成文档的各种图表、模型和列表。
  • 构建块:“架构中可复用的功能组件”——最终要被实现或采购的实际部件。

下面,我们进入具体的数据库设计场景。

场景设定:CRM系统数据库设计项目

假设我们正在执行一个TOGAF ADM周期,目标是为公司构建一个新的CRM系统。目前处于阶段C:信息系统架构(数据架构),核心任务之一是设计支撑CRM业务的数据库。

一、交付物:正式的契约性成果

它是什么?

交付物是项目创建并交付给利益相关者(如项目委员会、客户、开发团队)的正式工作成果。它标志着一个里程碑的完成,通常需要评审和批准。

在我们的例子中:

项目团队在数据架构设计阶段结束时,会产出一份完整的文档:

《CRM系统逻辑数据模型与物理数据库设计说明书(V1.0)》

这份文档就是典型的交付物。

它的特点包括:

  • 完整性:包含摘要、正文、附录,是一个自包含的成果。
  • 正式性:有封面、版本号、修订历史、批准页。
  • 契约性:一旦签署,就成为后续开发工作的依据。
  • 可交付性:会被正式提交给数据治理委员会、系统开发团队等。

简单说,交付物就是最终那份“你要交上去的东西”。

二、制品:描述架构的描述性工具

它是什么?

制品是架构师在工作过程中创建的描述性工作产品,用于捕捉、定义和交流架构的各个方面。它们是构成交付物的“原材料”或“组件”。

在我们的例子中:

为了编写上述《设计说明书》,架构师和设计师需要创建一系列具体的工作产出:

  1. 概念数据模型图:展示“客户”、“订单”、“联系人”等高层次业务实体及其关系。
  2. 逻辑数据模型图(第三范式):详细定义实体、属性、主外键关系,如 Customer 实体包含 CustomerIDNameStatus 等属性。
  3. 物理数据模型图:针对选定的Oracle数据库,设计具体的表结构(如 T_CUSTOMER 表)、索引、分区方案。
  4. 数据字典/元数据清单:一个Excel或表格,列出所有字段的物理名称、逻辑名称、数据类型、业务规则。
  5. 数据迁移影响分析报告:描述从旧系统迁移数据到新结构的影响和策略。

所有这些图、表和报告,都是制品。

关键理解:

  • 制品是描述工具。逻辑数据模型这个“制品”,是用来描述“客户数据应该长什么样”这个概念的。
  • 一个交付物(完整设计文档)是由多个制品组合、编排而成的。
  • 制品是过程性的,它们在整个ADM阶段被不断创建和精炼。

三、构建块:可复用的架构组件

它是什么?

构建块是构成架构或解决方案的功能组件。它代表了架构中一个可以独立定义、可复用、可替换的部分。构建块本身是“东西”,而制品是描述这个东西的“图纸”。

在我们的例子中:

构建块出现在两个层面:

  1. 架构构建块

代表一个业务或功能需求,独立于具体技术。

  • 例如:“客户主数据管理功能” 或更具体的 “客户实体”。它定义了从业务角度看,“客户”必须具备哪些核心属性(唯一标识、名称、分类等),而不关心是用Oracle还是MySQL实现。
  1. 解决方案构建块

代表一个具体的实现选择。

  • 软件产品:如 “Oracle 19c 数据库管理系统”。这是一个可以采购的、现成的SBB。
  • 具体实现:在Oracle中创建的物理表 T_CUSTOMER,以及为了支持快速查询而在 CUSTOMER_NAME 字段上创建的索引 IDX_CUST_NAME。这些都是根据ABBs定义,在具体技术环境中实现的SBBs。

关键理解:

  • 构建块是最终要落地的东西。T_CUSTOMER 表是未来数据库中真实存在的对象。
  • 制品(物理数据模型)描述了构建块(T_CUSTOMER表)。
  • ABBs(需求侧)驱动了SBBs(供给侧)的选择和定义。

三者关系图解与工作流程

让我们用一张图和一个流程来串联以上概念:

[ 制品: 逻辑数据模型 ]
        ↓ (描述)
[ 架构构建块: “客户实体” (ABB) ]
        ↓ (作为输入和依据)
[ 交付物: 《数据库设计说明书》 ]
        | (包含)
[ 制品: 物理数据模型、数据字典... ]
        ↓ (描述)
[ 解决方案构建块: `T_CUSTOMER`表 (SBB) 和 Oracle DBMS (SBB) ]

典型工作流程:

  1. 需求分析:识别出需要 “客户主数据实体” (ABB)。 架构设计:创建 逻辑数据模型(制品) 来详细定义这个ABB。
  2. 文档汇编:将逻辑模型与其他相关制品(如治理策略)整合,形成正式的 《数据库设计说明书》(交付物)。
  3. 详细设计:基于已批准的交付物,创建 物理数据模型(制品),明确指定使用 Oracle 19c (SBB) 并设计出 T_CUSTOMER 表 (SBB) 的具体结构。
  4. 实施:DBA根据物理模型这份“制品”,在Oracle中创建出真实的“构建块”(表、索引)。

总结:用汽车制造来类比

如果还是觉得抽象,可以把这个过程想象成汽车制造:

| TOGAF概念 | 在数据库例子中的体现 | 汽车制造类比 | | -----| ---------| --------| | 交付物 |《CRM数据库设计说明书》| 《整车交付与使用手册》 (交给客户的一整套文件)| | 制品 | ER图、数据字典、物理模型 | 发动机图纸、零件清单、装配流程图 (构成手册的具体内容)| | 构建块 | 客户实体(ABB)、T_CUSTOMER表(SBB)、Oracle DBMS(SBB) | 真实的发动机、轮胎、变速箱 (构成汽车的标准化零部件)|

给架构师的实践建议

  • 明确产出层次:在启动一项工作时,先想清楚你在创造的是制品(过程文档)还是交付物(最终成果)。这有助于管理利益相关者的期望。
  • 以构建块为中心思考:架构设计的核心是识别和定义正确的ABBs,并为它们匹配合适的SBBs。制品只是描述它们的手段。
  • 理解交付物、制品和构建块的区别,是掌握TOGAF结构化思维方式的基石。希望这个数据库设计的例子能帮助你清晰地区分它们,并在你的企业架构实践中更加得心应手。

(本文根据TOGAF®标准第10版内容进行解读,TOGAF®是The Open Group的注册商标。)

About Daxia
我是一名独立开发者,国家工信部认证高级系统架构设计师,在健康信息化领域与许多组织合作。具备大型卫生信息化平台产品架构、设计和开发的能力,从事软件研发、服务咨询、解决方案、行业标准编著相关工作。
我对健康信息化非常感兴趣,尤其是与HL7和FHIR标准的健康互操作性。我是HL7中国委员会成员,从事FHIR培训讲师和FHIR测评现场指导。
我还是FHIR Chi的作者,这是一款用于FHIR测评的工具。