您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
   
MBSE从理论方法到工作实践
8月26-27日 北京+线上
大模型核心技术RAG、MCP与智能体实践
8月14-15日 厦门
图数据库与知识图谱
8月28日-29日 北京+线上
     
   
 
 订阅
体系工程中ICD接口控制文件的自动化流水线
 
作者:与子同袍
  151  次浏览      4 次
 2025-8-5
 
编辑推荐:
本文主要介绍如何通过“把技术文档当作代码来管理”,构建ICD文档流水线, 希望对你的学习有帮助。
本文来自于微信公众号软件定义战争 ,由火龙果软件Alice编辑、推荐。

今天介绍基于“文档即代码”理念的ICD文档的自动化流水线。

这篇研究通过“把技术文档当作代码来管理”,通过构建ICD文档流水线,解决了大型复杂体系中接口文件长期存在的“说不清、对不齐、改不动”的老大难问题。

ICD文档流水线 = 把接口文件当作“代码”来管理,自动检查、自动生成、自动同步、自动通知。

ICD文档流水线,把ICD接口文件从“静态文本”升级为“活的文档”,实现了:

  • 一致性 :接口需求与代码等制品之间的信息保持一致;

  • 可追溯性 :每个文档的部件都可跟踪历史版本和依赖关系;

  • 可维护性 :变更自动传播,减少人为错误;

  • 可扩展性 :适配不同领域(航天、汽车、医疗等)。

1. 背景知识

1.1 研究背景与目的

这项研究聚焦于“体系(SoS)”架构过程中, 接口控制文件(ICD)管理 这一长期存在的痛点问题。

  • 体系定义 :多个独立系统协作完成单一系统无法完成的复杂任务(如军用系统、能源、铁路、医疗等)。
  • 核心痛点 : ICD(描述系统间接口的技术文档)常因跨学科协作导致 信息不完整、术语歧义、更新滞后 等问题,进而引发集成失败、运行故障。
  • 研究目标 :将软件工程中的“文档即代码”理念引入ICD管理,解决上述问题,并验证其在不同领域的适用性。

1.2 管理 ICD时遇到的典型问题

这项研究总结出 管理 ICD时经常出现的典型问题及具体表现:

问题类别 具体表现(症状举例)
1. 信息不清晰 跨学科术语歧义(如“寄存器”在硬件/软件中含义不同)
2. 信息不完整 缺失硬件默认值、字节对齐规则、超时时间等关键细节
3. 缺乏一致性 不同ICD格式混乱,同一术语缩写不一致
4. 更新滞后 接口变更未通知相关开发人员,开发者使用过时版本的接口开发
5. 重复工作 同一接口信息在文档、代码、工具中重复维护,容易出错

1.3 破局思路:文档即代码

把ICD接口控制文件当代码来构建(build)和管理——轻量标记语言 + Git 版本控制 + CI/CD(持续集成/持续交付)流水线,让 ICD 从静态文档变成“活的基础设施”。

核心思想:按照“文档即代码 (Docs-as-Code,DaC) ”的思想,把ICD文件当做源代码进行管理 ——用轻量级标记语言(如 Markdown、Asciidoc)写作,用 Git 做版本控制,用 CI/CD 完成自动构建、测试和发布。 。

“文档即代码” 是一种将技术文档的创建、维护、发布等流程完全软件工程化的方法论。

采用文档即代码可以带来如下效果:确保信息的一致性,减少重复工作量和出错概率;提高文档和代码质量;需求和开发人员更好地协作。

2. ICD接口控制文件流水线

2.1 接口文件管理到底出了哪些问题?

这项研究梳理出几类高频的ICD管理的问题:

  • 缺乏清晰性和跨领域可理解性: ICD通常包含的术语对于参与其原始版本的人员来说可能是清楚的,但几年后可能会有不同的解释。当涉及多个学科(例如,硬件和软件工程)时也是如此,因为在许多情况下,这些学科之间有相似的术语,但含义不同。
  • 信息不完整: 在ICD文档中, 一些关键的细节经常被省略,特别是在接口的硬件方面的描述。这会导致做出错误的假设,或容易出错的非形式化的信息交换。此外,接口的时间行为和状态相关方面很少包含在ICD中。尤其是包括导致故障状态的场景。
  • ICD之间缺乏一致性: 在涉及许多接口的体系中,不同ICD之间缺乏一致性会导致混淆和误解。

  • ICD更新后 缺乏及时的通知 : ICD 文档改了后,相关人员不知情。要等到他们出现问题(比如开发人员发现接口调用失败,原因是ICD中的接口变了,而开发人员不知道,所以C语言头文件和实现都没改)。
  • 重复的工作: 在ICD和基于ICD生成的制品中, 与接口相关的信息需要在不同地方重复(接口需求、接口API文档、接口源代码等)。保持所有这些信息源同步,需要投入许多时间和精力。而这些工作原本可以投入到接口的实际工程/开发活动中。

2.2 基于 “文档即代码”的 ICD管理工具链需要哪些重要功能?

这项研究筛选出 4 个高优先级的“文档即代码”的功能:

1.文档级质量门控 :通过集中管理的可自动检查的质量规则,对ICD文档进行质量门控制。把文档问题对应的各种问题症状,翻译成可自动检查的质量规则,例如“寄存器必须写默认值”。

2.嵌入式机器可读规范 :用轻量级的形式化语言描述ICD文档中的技术元素,例如 SystemRDL 描述寄存器、YAML 描述 帧格式

3.文档宏用于自动内容生成 :为减轻文档编写工作量和避免重复和出错,开发相应的轻量级的形式化语言编辑器的扩展插件,用于自动生成不同地方相同的重复内容。比如,在 Asciidoc 里写 reg:: 宏,一键展开寄存器表、术语表、版本差异,减少复制粘贴。

4.集中化文档跟踪 :跟踪记录项目和组织的ICD文档的发布记录、文档当前状态和依赖关系。

功能 作用 技术实现
1. 质量门控制 自动检查ICD的完整性和规范性 用CI/CD工具(如GitLab)设置规则,例如“所有缩写必须定义”
2. 嵌入式机器可读规范 用标准化语言(如SystemRDL)描述硬件细节 自动生成接口头文件(如C语言代码中的硬件寄存器定义)和可视化文档
3. 文档宏 自动填充重复内容 自定义标记语言(Asciidoc)宏,例如自动插入版本历史
4. 集中化文档跟踪 管理ICD版本及依赖关系 开发API追踪文档变更,例如“当接口A更新时,自动提醒依赖它的接口B”

2.3 ICD 的自动检查的CI/CD流水线到底长什么样?

研究团队把 4 个功能映射到一条 GitLab-CI 流水线,形成下图所示的六步闭环:
① 管理人员/架构师 定义ICD文档的质量规则检查清单;并将这些质量检查清单中的检查规则转成CI/CD平台中的自动化检查动作;

② ICD 文档写作人员 在 VS Code 之类的编辑器中,用 Asciidoc 撰写 ICD文件;写好后 push 到 GitLab;

③ GitLab CI/CD工具自动触发质量门控,自动跑所有的质量检查规则;

④ 如果所有质量规则的检查都通过后,运行相应的形式化语言工具的扩展插件。例如自动生成接口描述的 HTML/PDF 文档和接口的 C语言头文件;然后提交到 版本控制系统 中;

⑤ 文档状态跟踪 API 接口更新文档状态,并给版本控制系统中的接口文件和制品(接口的 C 语言头文件)打 tag。 GitLab Pages 把结果发布到固定 URL;向相应开发人员发送通知提醒;

⑥ 开发人员收到相应通知后访问ICD文档,查看接口变化情况,然后拉取最新版本的接口的C语言头文件进行开发。

通过上图中的流程,ICD 文档也能像代码一样被“编译、测试、发布、消费” ,全流程自动化,把“人盯文档”变成“机器盯文档”。

2.4 文档状态跟踪API

对于每一份ICD接口文件,为了保持需求文档之间的一致性,需要搞清楚到底谁依赖它,什么时候必须进行修改等问题。

这项研究通过文档状态跟踪API,向可视化界面提供每个ICD文件的文档状态。

上图中,icd-b文件的v0.5版本,因为依赖引用了( refs )老版本(最新版未v1.5)的icd-a文件( v1.1)。

所以在上图中,icd-b文件上面有黄色的 标记,意思是依赖的相关文件已经不是最新的了,所以icd-b文件的状态就变成了 “需要修订”。

下图为ICD的文档状态转换图。文档状态跟踪API根据这个图中的状态机,调整各个ICD文件的

下表为ICD文档的重要字段:

字段 含义 示例(来自图)
src Git 仓库里的源码文件 icd-a.adoc
refs 它引用依赖的其他 ICD 及版本 icd-b v0.5 引用 icd-a v1.5
build 生成的正式文档 URL /icd-a/v1.1/index.html

 

2.5 “文档即代码”的ICD管理与传统ICD管理的对比

维度 传统方式 ICD文档流水线
格式 Word/PDF,人工维护 Asciidoc/SystemRDL等轻量级形式化语言,代码化文档信息
版本控制 文件名+日期 Git版本+tag
检查 人工检查,易遗漏 基于CI/CD流水线的自动质量门控
一致性管理 手动更新多个文档和代码 一键生成所有下游制品
通知 邮件/口头 自动通知+仪表盘

3. 总结

3.1 创新性

首次将“文档即代码”引入体系的接口管理,打破传统人工维护文档的低效模式。

3.2 未来方向

1.扩展动态描述 :增加对时间约束、错误恢复等动态行为的建模。

2.用户体验优化 :开发一键式工具链配置向导,降低非开发者使用门槛。

3.跨领域案例研究 :在自动驾驶(协作型SoS)等场景中测试这一方案的适应性。

   
151 次浏览       4
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践

最新活动计划
大模型RAG、MCP与智能体 8-14[厦门]
图数据库与知识图谱 8-28[北京]
OCSMP认证:OCSMP-MBF 8-29[北京]
基于 UML 和EA进行分析设计 9-9[北京]
软件架构设计方法、案例实践 9-24[北京]
需求分析师能力培养 10-30[北京]
 
 
最新文章
架构设计-谈谈架构
实现SaaS(软件及服务)架构三大技术挑战
到底什么是数据中台?
响应式架构简介
业务架构、应用架构与云基础架构
最新课程
软件架构设计方法、案例与实践
从大型电商架构演进看互联网高可用架构设计
大型互联网高可用架构设计实践
企业架构师 (TOGAF官方认证)
嵌入式软件架构设计—高级实践
更多...   
成功案例
某新能源电力企业 软件架构设计方法、案例与实践
中航工业某研究所 嵌入式软件开发指南
某轨道交通行业 嵌入式软件高级设计实践
北京 航天科工某子公司 软件测试架构师
北京某领先数字地图 架构师(设计案例)
更多...