Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
CAN CSA ISO IEC TR 24718-06 是加拿大标准协会(CSA)正式采纳的国际技术报告,其基础文本为 ISO/IEC TR 24718:2006,中文标题为《信息技术 — 编程语言 — 高完整性系统中 Ada 编程语言使用指南》。该技术报告专为在航空航天、轨道交通、核电控制、医疗设备等安全苛求领域中使用 Ada 语言开发高完整性软件提供全流程指导。通过定义语言子集、编程约束、静态分析策略及测试要求,本报告帮助团队降低软件错误风险,提升系统可靠性和认证通过率。以下从标准概况、技术内容、实施要点及相关标准关系四个方面展开深度解析。
CAN CSA ISO IEC TR 24718-06 属于技术报告(Technical Report,TR)类别,并非具有强制力的国际标准,但它是公认的 Ada 语言高完整性应用最佳实践总结。标准发布于 2006 年,加拿大国家采纳版本为 2006 年(CAN/CSA-ISO/IEC TR 24718-06),适用于以下场景:
该技术报告的核心是提供一套分层的 Ada 语言使用建议,包括语言子集划分、禁止/推荐特性列表、精度要求、静态分析规则以及动态测试策略。其主要章节涵盖:
报告定义了多个完整性等级(Integrity Level),并针对每一等级推荐了相应的 Ada 语言子集。等级越高,允许使用的语言特性越少,约束越严格。下表给出了典型的对应关系:
| 完整性等级 | Ada 子集示例 | 禁止特性举例 | 最低验证要求 |
|---|---|---|---|
| Level 0(最低) | 完整 Ada | 受限任务结构等少数风险项 | 代码审核 + 语句覆盖 |
| Level 1 | 安全子集 A | 动态内存分配(allocators)、泛型实例的复杂组合 | 分支覆盖 + 静态分析 |
| Level 2 | 安全子集 B | 异常处理不能覆盖所有路径、Unchecked_Access、 Unchecked_Conversion | MC/DC 覆盖 + 模型检查 |
| Level 3(最高) | 极小子集 | 任务动态创建、非纯函数、递归 | 形式化验证 + 全路径覆盖 |
指南提炼出数十条规则,分为必需(shall)、推荐(should)和建议(may)三级。典型规则包括:
要求采用至少满足 SIL 要求的静态分析工具(如 SPARK 检查器)检测数据流、信息流和控制流异常。动态测试方面,根据等级确定覆盖率目标并配合随机测试。
要将 CAN CSA ISO IEC TR 24718-06 有效落地,团队需要从以下三个维度入手:
优先选用支持 Ada 高完整性分析的编译器与 IDE(如 GNAT Pro High-Integrity Edition),并配备 SPARK 或 similar 形式化验证工具。这些工具能自动检查大多数子集规则,降低人工审查成本。
根据项目所属行业标准的安全完整性等级,从技术报告中选择适用的完整性等级和对应子集,并撰写项目级的 Ada 编码标准文档。例如,DO-178C Level A 的项目可采用 Level 2 或 Level 3 要求。
开发团队必须理解 Ada 语言的安全特性以及技术报告中每条规则背后的动机。建议在开发流程中设置“Ada 安全特性”培训课程,并将规则检查纳入持续集成流水线,以确保每次提交都通过子集合规性检查。
CAN CSA ISO IEC TR 24718-06 并非孤立的文档,它与一系列国际/行业标准紧密关联:
注:版权信息 — 本文章基于 2026 年仍有效的 CAN/CSA-ISO/IEC TR 24718-06 版本撰写,实际应用时请确认最新采纳版本。