S1000D 实施示例:从 DMRL、DMC、SNS 到校验交付
本文用一个虚构的“液压泵更换程序”小项目,演示需求如何进入 DMRL,如何通过 SNS 和 DMC 建立身份,再经过 Schema、BREX、引用完整性和出版物检查,最后进入交付基线。示例专门压缩了范围,便于理解各对象之间的关系。
先确认示例边界
“示例通过”也不等于“项目符合标准”。这里的通过只表示:在这个简化场景中,需求、身份、内容、规则、引用和交付之间的关系可以被追溯。真实项目还要增加安全、专业内容、配置管理、语言、媒体、权限、目标设备和最终用户验收。
项目假设:一个维修程序模块
假设项目为“ABC-100”装备建立一份液压泵更换程序。用户需要在型号 A 构型下完成拆卸、安装、泄漏检查和功能测试。项目决定用一个程序类数据模块承载步骤,用一个安全信息模块提供前置警告,用一张图形说明接口位置,并将它们编入一个小型出版物模块(PM)。
| 对象 | 示例内容 | 在链路中的作用 |
|---|---|---|
| 原始需求 | TA-0237:液压泵更换任务分析 | 说明为什么需要这个模块,并提供可回溯的来源。 |
| 目标数据模块 | 液压泵更换程序;类型暂定为 procedural | 承载可执行的技术步骤和验收条件。 |
| 前置依赖 | 安全警告、泵组件 IPC、接口位置图、适用性条件 | 让程序能够安全、完整地被阅读和执行。 |
| 出版物 | PM-ABC100-MAINT-A(项目占位值) | 组织目录、DMRef、适用性和发布包。 |
从需求到交付的最小追溯链
可以把这个小项目理解为一条连续的证据链:
TA-0237 原始需求
↓
DMRL-0237 需求条目(要编什么、谁负责、如何验收)
↓
SNS 层级 + DMC 身份(模块属于哪个系统、如何唯一识别)
↓
数据模块 XML + 图形/模块引用(实际技术内容)
↓
Schema 结构校验 → BREX 业务规则校验 → 引用/媒体/适用性完整性
↓
PM / DMRef 组装 → 交付包与批准基线
DMRL 是管理和追溯入口,DMC 是模块身份的一部分,SNS 提供系统层级背景;Schema、BREX 和引用完整性检查则分别回答“结构是否能解析”“项目规则是否满足”“依赖对象是否真实可用”。任何一环缺失,都可能导致“文件生成了但不能交付”。
DMRL 条目示例:把需求变成可管理任务
下面的条目只展示字段关系。实际项目可以使用表格、数据库、CSDB 对象或项目工具维护,但需要保证稳定标识、责任、状态和证据可以持续追踪。
| 字段 | 示例值 | 检查重点 |
|---|---|---|
| DMRL 条目 | DMRL-0237 | 唯一、稳定,变更标题或负责人时不随意重用。 |
| 需求来源 | TA-0237;维修任务分析第 4.2 节 | 能回到原始需求、章节或批准的变更记录。 |
| 模块主题与类型 | 液压泵更换;程序类(procedural) | 主题边界、受众、模块类型和任务粒度一致。 |
| SNS | 29 / 10 / 05(示意码段) | 对应项目批准的系统、分系统和部件层级。 |
| DMC | ABC-29-10-05-040A-A(示意占位) | 应按项目 DMC 规则生成;不能把本示例值当作正式编码。 |
| 适用性 | 型号 ABC-100;构型 A;序列号范围待项目确认 | 与 ACT/PCT/CCT、模块状态和 PM 筛选逻辑一致。 |
| 责任与状态 | 编制:作者 A;技术审核:审核人 B;待审核,版本 1.2 | 状态有进入条件、退出证据、时间和责任人。 |
| 依赖 | 安全模块、IPC、接口图、适用性代码表 v2.1 | 每项依赖有标识、版本和可解析的引用。 |
| 验收证据 | Schema/BREX 日志、引用检查报告、PM 预览和批准记录 | 证据能与具体版本、配置和发布包对应。 |
如果模块暂时还没有正式 DMC,可以在 DMRL 中使用项目临时标识,但必须同时记录转正式编码的规则和责任人。临时标识不能悄悄进入最终发布包。
SNS 与 DMC:从层级到唯一身份
SNS 描述系统、分系统、组件等层级,帮助团队约定“这个模块讲的是哪一部分”;DMC 则按项目规则组合型号、系统层级、信息类型、变型等身份字段,用于唯一识别数据模块。SNS 和 DMC 有关联,但不是同一个对象,也不能把 SNS 路径直接当作完整 DMC。
| 概念 | 本示例的表达 | 不要这样使用 |
|---|---|---|
| SNS 层级 | 29 / 10 / 05:系统 / 分系统 / 组件的示意路径 | 不要脱离项目 SNS 规则,自行把数字解释成正式系统编码。 |
| DMC 字段 | ABC-29-10-05-040A-A:便于展示字段组合的占位值 | 不要复制到生产环境;正式字段、长度、分隔方式和允许值由项目基线决定。 |
| 模块标题 | 更换液压泵 | 标题、DMC 和实际内容主题不能互相矛盾。 |
| 适用性 | 型号 ABC-100 / 构型 A | 不要只写在标题中而不进入项目定义的适用性表达。 |
可先用一张映射表做评审:每个 DMRL 条目对应一个目标模块身份,每个 SNS 节点都有责任边界,每个正式 DMC 都能回到条目、需求和出版物引用。详细概念可参考DMC 数据模块代码和SNS 系统划分码。
三层校验:Schema、BREX 与引用完整性
三类校验解决的问题不同,不能用其中一类代替其他两类。实际工具可能合并报告界面,但项目验收时仍建议把范围、规则和证据分开记录。
| 校验层 | 回答的问题 | 本示例的检查 | 输出证据 |
|---|---|---|---|
| Schema 结构校验 | XML 是否符合采用的结构、元素顺序、属性和数据类型? | 程序模块的身份状态区、内容区和允许的步骤结构是否能解析。 | Schema 版本、校验日志、错误位置和修订记录。 |
| BREX 业务规则 | 是否满足项目额外的必填项、值域、命名、警告和内容规则? | 程序必须包含安全前置条件;模块状态和安全分类满足项目规则。 | BREX 版本、规则编号、通过/失败结果和豁免批准。 |
| 引用完整性 | 模块引用的对象是否存在、版本匹配并能进入交付包? | 安全模块、IPC、图形、代码表、适用性和 PM/DMRef 均可解析。 | 引用清单、媒体清单、断链报告、PM 预览和交付包清单。 |
若 Schema 通过但引用断链,模块仍不能交付;若引用完整但 BREX 失败,也不能用“文件可以打开”作为放行理由。三层结果应与同一版本和配置基线关联。
一个最小的关系示意
下方使用项目自定义的伪代码展示对象关系,不是 S1000D 正式 XML,也不会通过任何正式 Schema:
<project-example>
<dmrl-item id="DMRL-0237" source="TA-0237" status="待审核">
<topic>液压泵更换</topic>
<sns path="29/10/05" />
<dmc placeholder="ABC-29-10-05-040A-A" />
<depends-on ref="safety-warning-01" />
<depends-on ref="pump-ipc-01" />
<depends-on ref="pump-interface-icn-01" />
</dmrl-item>
<quality-gate>
<schema result="pass" baseline="project-schema-v1" />
<brex result="pass" baseline="project-brex-v2" />
<reference-integrity result="pass" />
</quality-gate>
</project-example>
真实数据模块应使用正式命名空间、元素结构、编码、状态和内容模型;真实质量门禁也应由项目工具和批准流程产生证据。这里的伪代码只适合培训、评审和需求沟通。
发布前最小检查清单
- 需求覆盖:原始需求、任务分析和变更记录是否都能追溯到 DMRL 条目?是否有遗漏或重复模块?
- 身份一致:每个条目的标题、SNS、DMC、模块类型、适用性和 PM/DMRef 引用是否指向同一个主题?
- 结构通过:使用项目批准的 Schema 和对应版本校验,错误是否全部处理并保留日志?
- 规则通过:BREX 必填项、值域、命名、警告和项目约束是否满足?例外是否有正式批准?
- 引用完整:被引用的数据模块、图形、媒体、代码表和外部资源是否存在、版本一致且会进入交付包?
- 适用性正确:ACT/PCT/CCT 或项目定义的条件组合是否筛选出正确型号、构型和序列号范围?
- 出版物可用:PM、DMRef、目录、搜索、交叉引用和离线交付是否能在目标环境中阅读?
- 基线可追溯:模块、规则、媒体、工具、发布包、批准记录和版本是否绑定到同一交付基线?
建议先用少量代表性模块走通这份清单,再批量编制。这样可以在投入大量内容前发现 DMC、Schema、BREX、引用和出版物规则之间的不一致。
常见问题
这个实施示例可以直接作为正式 S1000D 文件吗?
不可以。示例中的编码、字段和值是为了说明关系而设置的占位内容,不是可直接交付的 XML、DMC、Schema 或 BREX。正式项目必须使用合同和项目批准的 Issue、Schema、数据字典、代码表及业务规则。
DMRL、DMC 和 SNS 在示例中分别做什么?
DMRL 记录需要编制和交付哪些模块,DMC 为数据模块提供身份编码,SNS 表示系统和部件的层级。三者通过项目批准的映射和追溯关系连接,而不是互相替代。
Schema 通过后还需要做 BREX 和引用完整性检查吗?
需要。Schema 主要检查结构,BREX 检查项目业务规则,引用完整性检查模块、媒体、代码表、适用性和出版物引用是否存在且版本匹配。三类检查共同构成质量门禁。
这个示例采用哪个 S1000D 版本?
页面使用 S1000D Issue 5.0 的常见术语来帮助理解,但不提供某个项目可执行的 Schema 或完整 XML。实际项目应以合同和经批准的版本基线为准。
小项目也需要 DMRL 和三层校验吗?
范围可以按项目规模裁剪,但仍应保留需求覆盖、模块身份、结构规则、业务规则、引用完整性和交付验收的证据。用一张简化清单替代复杂工具可以,但不能让关键关系只存在于个人记忆中。