4. 开发计划(SDP):软件开发计划、标准与流程的定义

说实话,很多团队拿到DO-178C的认证要求,第一反应就是「先写个SDP吧」。

这个想法没错,但容易走偏。我见过不少项目,SDP写了几百页,结果开发团队根本不看——因为写得像天书,全是套话。

我个人习惯是:SDP不是写给别人看的,是写给自己团队用的。它应该像一张地图,告诉你每一步该怎么走,遇到坑怎么绕。

4.1 什么是SDP?它到底管什么?

SDP的全称是Software Development Plan,也就是软件开发计划。它是DO-178C里最顶层的一份计划文档。

你想想看,一个航空软件项目,少则几十人,多则几百人。如果没有一份统一的计划,每个人按自己的习惯来写代码、做测试,那最后肯定乱成一锅粥。

SDP要回答三个核心问题:

  • 做什么:软件的生命周期模型、开发活动、输出产物
  • 怎么做:用什么工具、遵循什么标准、怎么评审
  • 谁来做:角色分工、职责定义、沟通机制

核心要点:SDP必须与项目实际匹配。不要照搬模板,否则审核员一眼就能看出来。

4.2 软件开发流程:从需求到代码的路径

DO-178C并没有强制要求你用瀑布模型还是敏捷开发。但它要求你定义清楚流程,并且能证明这个流程是可控的。

我参与过一个项目,团队想用敏捷开发,结果被审核员质疑:「你们的Sprint迭代怎么保证需求追溯?」

后来我们花了很大力气去解释,才勉强通过。所以我的建议是:航空软件项目,老老实实用V模型或者增量模型,别整花活。

下面这张图是我常用的流程框架,你可以参考:

DO-178C 软件开发V模型流程 需求分析 概要设计 详细设计 编码实现 系统测试 集成测试 单元测试 代码审查 左侧:开发活动 → 右侧:验证活动 每个开发阶段都有对应的验证阶段,确保可追溯

4.3 软件开发标准:三条腿走路

DO-178C要求你定义三类标准,缺一不可。我称之为「三条腿的凳子」:

标准名称 管什么 常见问题
软件需求标准 需求怎么写、怎么编号、怎么追溯 需求描述模糊,无法测试
软件设计标准 架构设计、接口定义、数据结构 设计文档和代码脱节
软件编码标准 命名规范、注释规则、禁止使用的语法 违反MISRA-C规则

我的经验:编码标准里一定要明确「禁止使用动态内存分配」。航空软件里,malloc/free是禁区。我曾经在一个项目里发现有人偷偷用了,结果导致内存泄漏,差点让整个认证延期。

4.4 流程定义:别让流程成为摆设

很多团队把流程画得特别复杂,什么「变更控制流程」「问题报告流程」「配置管理流程」……画了十几张图,结果没人看得懂。

我的原则是:一个流程图,如果不能在30秒内看懂,那就是失败的

举个例子,变更控制流程其实就三步:

  1. 提交变更请求(谁都可以提)
  2. 评估影响(CCB评审,确定等级)
  3. 实施并验证(修改代码、回归测试、更新文档)

嗯,这里要注意:每个变更都必须有追溯。从变更请求到代码修改,再到测试用例,一条链不能断。

4.5 工具与环境的定义

SDP里还要明确用什么工具。DO-178C把工具分为三类:

  • 开发工具:编译器、链接器、代码生成器
  • 验证工具:静态分析工具、测试工具
  • 管理工具:需求管理、配置管理、问题追踪

我个人习惯是:工具越少越好。每多一个工具,就多一份 qualification(工具鉴定)的工作量。能用文本文件解决的问题,就别上数据库。

避坑指南:我曾经在一个项目里用了某个商业编译器,结果发现它对某些C99语法支持有问题。后来不得不打补丁,折腾了两个月。所以我的建议是:工具选型一定要提前做验证,别等到开发到一半才发现坑。

4.6 角色与职责:谁对什么负责

DO-178C要求明确每个角色的职责。常见的角色包括:

  • 软件经理:负责整体计划、资源、进度
  • 软件工程师:负责开发、编码、单元测试
  • 验证工程师:负责评审、测试、分析
  • 配置管理员:负责版本控制、基线管理
  • 质量保证人员:负责过程审计、符合性检查

这里有个关键点:开发和验证必须由不同的人来做。这是DO-178C的硬性要求,不能自己写代码自己测试。

4.7 计划文档的维护

SDP不是写一次就完事的。项目过程中,计划肯定会变。比如需求变了、进度调整了、工具换了……

我的做法是:每个季度至少评审一次SDP,看看有没有需要更新的地方。每次变更都要走正式的变更控制流程,并且更新版本号。

记住:审核员会检查SDP的版本历史。如果发现计划跟实际执行不一致,那就是严重不符合项。

4.8 小结

SDP是整个DO-178C认证的基石。它不只是一份文档,更是团队的工作指南。

写SDP的时候,多想想:这份计划能让一个新人看懂吗?能让审核员信服吗?能让项目顺利通过认证吗?

如果答案都是肯定的,那你的SDP就合格了。


公众号:蓝海资料掘金营,微信deep3321