案例研究:在航空航天软件开发中执行DO-178C与架构控制
行业:航空航天与国防客户简介:全球航空航天承包商(未公开)领域:飞行控制与导航系统的航空电子软件团队规模:100多名分布在各地的工程师语言:C和C++关键标准:DO-178C、MISRA C/C++、 JSF++ AV
挑战
一家领先的航空航天技术公司正在为下一代航空电子系统开发嵌入式软件。该软件必须符合DO-178C A级安全标准——机载系统的最高保证等级——同时还要遵循严格的内部编码规范和MISRA C、 JSF++ AV.
尽管拥有高素质的团队和严格的V&V流程,他们仍面临以下反复出现的挑战:
- 缺乏架构可见性:团队难以验证设计分层策略并检测模块间的意外依赖。
- 手动合规负担:MISRA等标准的代码审查耗时且易出错,尤其是在遗留模块中。
- 审计复杂性:为DO-178C目标(尤其是A-5、A-6、A-7)准备证据需要大量人工且缺乏可追溯性。
- 软件生命周期长:当前项目中的更改必须在至少15-20年内保持可维护和安全。
他们需要一种可扩展的自动化解决方案,以监控架构一致性、确保编码标准的遵守并简化认证文档工作。
解决方案:CppDepend
在经过三款候选工具的内部试点后,他们选择了CppDepend。决定性因素如下:
- 能够使用CQLinq自定义规则以匹配 JSF++ AV和MISRA的解释
- 用于跨团队和时间监控架构的可视化依赖图
- 支持长期可维护性跟踪(技术债务、代码变更率、指标趋势)
- CI/CD集成,可在不降低生产力的情况下执行规则
CppDepend被定位为其验证与确认(V&V)策略中的核心分析引擎,特别用于结构覆盖和设计规则执行。
实施
第1阶段——试点(4周)
- 分析了用于飞行稳定控制的遗留航空电子子系统(约40万行代码)
- 检测到1,200多处规则违规(许多源于隐藏的include链和意外的跨层调用)
- 创建了基线架构图和仪表板
第2阶段——策略定义(6周)
- 定义了约80条自定义CQLinq规则,对应内部架构和JSF++ AV约束
- 针对不安全的类型转换、动态内存使用和分层违规创建了警报
- 定制报告以匹配DO-178C文档结构(SOI-2 / SOI-3)
第3阶段——CI集成与团队赋能(8周)
- CppDepend集成到基于Jenkins的CI流水线中
- 所有构建均生成合规报告和技术债务指标
- 开发人员在拉取请求中收到关于代码违规的实时反馈
3个月后的结果
| 指标 | 使用CppDepend之前 | 3个月后 |
|---|
| 架构规则违规 | 1,220+ | < 150 |
| V&V检查表平均完成时间 | 12-14小时 | < 3小时 |
| 手动MISRA/JSF++遗漏问题 | 常见 | 接近零 |
| 结构复杂性警报 | 85 | 21 |
| 生成认证可追溯报告的时间 | 5天以上 | < 6小时 |
成果与收益
- DO-178C支持:CppDepend通过自动化验证编码标准、控制流复杂性和架构结构,帮助达成A-5(设计)、A-6(实现)和A-7(代码标准)目标。
- 长期代码健康:通过持续跟踪代码变更率、耦合度和债务等指标,团队可以更好地规划重构而不危及认证。
- 减轻审计负担:CppDepend生成的报告直接用于SOI-2和SOI-3文档,省去了数天的手工工作。
- 开发速度提升:有了质量门,开发人员可以专注于功能开发,同时合规性在后台得到保障。
为什么选择CppDepend?
CppDepend不仅因其静态分析能力脱颖而出,还因其可扩展性和可视化工具而备受青睐。在每一个变更都需要文档、可追溯性和论证的安全关键领域,CppDepend已成为软件工程工作流不可或缺的一部分。
结论
CppDepend为这个航空航天团队提供了一种可扩展的自动化方式,用于执行架构策略、持续跟踪代码质量并降低认证负担。通过将代码分析左移——并让结构和标准在每个步骤中可见——他们能够构建更安全、更简洁、更易认证的航空电子软件。
← 返回航空航天与国防概览
了解CppDepend在您的代码库中揭示了什么
在您自己的项目上运行分析:编码标准、架构验证、技术债务和质量门——几分钟内完成。