DO-178C中的软件生命周期过程如下图所示:
下面逐一描述各个过程的目标,活动和输出。
计划过程
目标1: 定义软件生命周期过程
描述: 明确软件生命周期中各个过程及其活动。
活动:
4.2.a: 定义软件生命周期的活动。
4.2.c: 选择适用的软件生命周期模型。
4.2.d: 确定生命周期活动之间的依赖关系。
4.2.g: 定义反馈机制。
4.2.i: 确定过渡标准。
4.3.c: 协调与其他过程的关系。
输出:
PSAC(合格审定计划)
SDP(软件开发计划)
SVP(软件验证计划)
SCM计划(软件配置管理计划)
SQA计划(软件质量保证计划)
目标2: 定义软件生命周期的关系
描述: 确定软件生命周期中各过程之间的相互关系。
活动:
4.2.i: 细化生命周期活动之间的相互关系。
4.3.b: 确定过程间的输入与输出。
输出:
PSAC(合格审定计划)
SDP(软件开发计划)
SVP(软件验证计划)
SCM计划(软件配置管理计划)
SQA计划(软件质量保证计划)
目标3: 选择和定义软件生命周期环境
描述: 确定支持软件生命周期的环境。
活动:
4.4.1: 定义软件开发环境。
4.4.2.a: 定义软件验证环境。
4.4.2.b: 定义配置管理环境。
4.4.2.c: 定义质量保证环境。
4.4.3: 确定工具和方法。
输出:
PSAC(合格审定计划)
SDP(软件开发计划)
SVP(软件验证计划)
SCM计划(软件配置管理计划)
SQA计划(软件质量保证计划)
目标4: 处理额外的考虑事项
描述: 处理计划过程中需要额外考虑的事项。
活动:
4.2.f: 确定其他必需的支持过程。
4.2.h: 考虑交付和维护阶段的要求。
4.2.j: 评估风险管理需求。
4.2.k: 确定培训和支持需求。
输出:
PSAC(合格审定计划)
SDP(软件开发计划)
SVP(软件验证计划)
SCM计划(软件配置管理计划)
SQA计划(软件质量保证计划)
目标5: 定义软件开发标准
描述: 确定适用于项目的软件开发标准。
活动:
4.2.b: 定义软件需求标准。
4.2.g: 定义软件设计标准。
4.5: 定义编码标准。
输出:
软件需求标准
软件设计标准
软件编码标准
目标6: 确保软件计划的合规性
描述: 确保软件计划符合所有适用的要求和标准。
活动:
4.3.a: 确保计划满足DO-178C标准的要求。
4.6: 监控计划执行情况,确保符合要求。
输出:
软件验证结果
目标7: 协调软件开发与修订计划
描述: 协调开发计划与后续计划的修订。
活动:
4.2.g: 调整和更新计划以应对项目变更。
4.6: 跟踪计划实施的效果,必要时进行修订。
输出:
软件验证结果
开发过程
目标1: 开发高层需求
描述: 开发符合系统需求的高级别软件需求。
活动:
5.1.2.a: 确定并分析系统需求。
5.1.2.b: 将系统需求转换为软件需求。
5.1.2.c: 确保需求的准确性和一致性。
5.1.2.d: 确保每个需求都是可验证的。
5.1.2.e: 评估需求与标准的符合性。
5.1.2.f: 跟踪系统需求。
5.1.2.g: 确保需求文档的完整性。
5.5.a: 完成需求文档的审核。
输出:
软件需求数据(Software Requirements Data)
跟踪数据(Trace Data)
目标2: 派生的高层需求
描述: 定义并提供给系统过程的派生高层需求,包括系统安全评估过程。
活动:
5.1.2.h: 确定和记录派生的高层需求。
5.1.2.i: 确保派生需求与系统安全分析一致。
输出:
软件需求数据(Software Requirements Data)
目标3: 开发软件架构
描述: 开发符合高层需求的软件架构。
活动:
5.2.2.a: 定义软件架构。
5.2.2.b: 确保架构设计满足高层需求。
5.2.2.c: 记录软件架构的设计说明。
输出:
软件设计说明(Design Description)
目标4: 开发低层需求
描述: 开发低级别软件需求。
活动:
5.2.2.g: 将高层需求细化为低层需求。
5.2.3.a: 确保低层需求的准确性和一致性。
5.2.3.b: 确保低层需求的可验证性。
输出:
软件设计说明(Design Description)
跟踪数据(Trace Data)
目标5: 派生的低层需求
描述: 定义并提供给系统过程的派生低层需求,包括系统安全评估过程。
活动:
5.2.2.b: 确定和记录派生的低层需求。
5.2.2.c: 确保派生需求与系统安全分析一致。
输出:
软件设计说明(Design Description)
目标6: 源代码的开发
描述: 开发符合软件架构和设计说明的源代码。
活动:
5.3.2.a: 编写源代码。
5.3.2.b: 确保源代码符合编码标准。
5.3.2.c: 进行代码审查以确保质量。
输出:
源代码(Source Code)
跟踪数据(Trace Data)
目标7: 可执行代码和参数数据项文件的开发
描述: 生成可执行的目标代码和参数数据项文件。
活动:
5.4.2.a: 确保目标代码符合低层需求。
5.4.2.b: 记录目标代码生成过程。
输出:
可执行目标码(Executable Object Code)
参数数据项文件(Parameter Data Item File)
软件需求过程
目标1: 高层需求符合系统需求
描述: 确保高层需求与系统需求的一致性。
活动:
6.3.1.a: 检查高层需求是否符合系统需求。
输出:
软件验证结果(Software Verification Results)
目标2: 高层需求准确且一致
描述: 确保每个高层需求准确、清晰,并且不相互矛盾。
活动:
6.3.1.b: 检查高层需求的准确性和一致性。
输出:
软件验证结果(Software Verification Results)
目标3: 高层需求与目标计算机兼容
描述: 确保高层需求与目标计算机的功能兼容。
活动:
6.3.1.c: 验证高层需求与目标计算机的兼容性。
输出:
软件验证结果(Software Verification Results)
目标4: 高层需求可验证
描述: 确保每个高层需求都可以进行验证。
活动:
6.3.1.d: 确认高层需求的可验证性。
输出:
软件验证结果(Software Verification Results)
目标5: 高层需求符合标准
描述: 确保在软件需求过程中遵循相关标准。
活动:
6.3.1.e: 检查高层需求是否符合制定的标准。
输出:
软件验证结果(Software Verification Results)
目标6: 高层需求可追溯至系统需求
描述: 确保高层需求与系统需求之间具有可追溯性。
活动:
6.3.1.f: 确认高层需求与系统需求的追溯关系。
输出:
软件验证结果(Software Verification Results)
目标7: 算法准确
描述: 确保软件中使用的算法是正确的。
活动:
6.3.1.g: 验证算法的准确性。
输出:
软件验证结果(Software Verification Results)
软件设计过程
目标1: 低层需求符合高层需求
描述: 确保低层需求与高层需求的一致性。
活动:
6.3.2.a: 检查低层需求是否符合高层需求。
输出:
软件验证结果(Software Verification Results)
目标2: 低层需求准确且一致
描述: 确保每个低层需求准确、清晰,并且不相互矛盾。
活动:
6.3.2.b: 检查低层需求的准确性和一致性。
输出:
软件验证结果(Software Verification Results)
目标3: 低层需求与目标计算机兼容
描述: 确保低层需求与目标计算机的功能兼容。
活动:
6.3.2.c: 验证低层需求与目标计算机的兼容性。
输出:
软件验证结果(Software Verification Results)
目标4: 低层需求可验证
描述: 确保每个低层需求都可以进行验证。
活动:
6.3.2.d: 确认低层需求的可验证性。
输出:
软件验证结果(Software Verification Results)
目标5: 低层需求符合标准
描述: 确保在软件设计过程中遵循相关标准。
活动:
6.3.2.e: 检查低层需求是否符合制定的标准。
输出:
软件验证结果(Software Verification Results)
目标6: 低层需求可追溯至高层需求
描述: 确保低层需求与高层需求之间具有可追溯性。
活动:
6.3.2.f: 确认低层需求与高层需求的追溯关系。
输出:
软件验证结果(Software Verification Results)
目标7: 算法准确
描述: 确保软件中使用的算法是正确的。
活动:
6.3.2.g: 验证算法的准确性。
输出:
软件验证结果(Software Verification Results)
目标8: 软件架构与高层需求兼容
描述: 确保软件架构符合高层需求。
活动:
6.3.3.a: 验证软件架构是否兼容高层需求。
输出:
软件验证结果(Software Verification Results)
目标9: 软件架构一致性
描述: 确保软件架构内部一致。
活动:
6.3.3.b: 验证软件架构的一致性。
输出:
软件验证结果(Software Verification Results)
目标10: 软件架构与目标计算机兼容
描述: 确保软件架构与目标计算机的兼容性。
活动:
6.3.3.c: 验证软件架构与目标计算机的兼容性。
输出:
软件验证结果(Software Verification Results)
目标11: 软件架构可验证
描述: 确保软件架构可以被验证。
活动:
6.3.3.d: 验证软件架构的可验证性。
输出:
软件验证结果(Software Verification Results)
目标12: 软件架构符合标准
描述: 确保软件架构遵循制定的标准。
活动:
6.3.3.e: 检查软件架构是否符合标准。
输出:
软件验证结果(Software Verification Results)
目标13: 软件分区完整性确认
描述: 确保软件分区的完整性。
活动:
6.3.3.f: 确认软件分区的完整性。
输出:
软件验证结果(Software Verification Results)
软件编码与集成过程
目标1: 源代码符合低层需求
描述: 确保源代码满足低层需求。
活动:
6.3.4.a: 验证源代码是否符合低层需求。
输出:
软件验证结果(Software Verification Results)
目标2: 源代码符合软件架构
描述: 确保源代码与设计软件架构的一致性。
活动:
6.3.4.b: 验证源代码是否符合软件架构。
输出:
软件验证结果(Software Verification Results)
目标3: 源代码可验证
描述: 确保源代码能够进行验证。
活动:
6.3.4.c: 确认源代码的可验证性。
输出:
软件验证结果(Software Verification Results)
目标4: 源代码符合标准
描述: 确保源代码遵循相关编程标准。
活动:
6.3.4.d: 检查源代码是否符合标准。
输出:
软件验证结果(Software Verification Results)
目标5: 源代码可追溯至低层需求
描述: 确保源代码与低层需求之间具备可追溯性。
活动:
6.3.4.e: 验证源代码与低层需求的追溯关系。
输出:
软件验证结果(Software Verification Results)
目标6: 源代码准确且一致
描述: 确保源代码的准确性和一致性。
活动:
6.3.4.f: 验证源代码的准确性和一致性。
输出:
软件验证结果(Software Verification Results)
目标7: 软件集成过程的输出完整且正确
描述: 确保软件集成过程的输出完整且符合要求。
活动:
6.3.5.a: 确认软件集成过程的输出。
输出:
软件验证结果(Software Verification Results)
目标8: 参数数据项文件正确且完整
描述: 确保参数数据项文件的正确性和完整性。
活动:
6.6.a: 验证参数数据项文件的准确性和完整性。
输出:
软件验证案例及程序(Software Verification Cases and Procedures)
软件验证结果(Software Verification Results)
目标9: 参数数据项文件的验证
描述: 确保参数数据项文件通过验证。
活动:
6.6.b: 验证参数数据项文件是否符合要求。
输出:
软件验证结果(Software Verification Results)
集成过程
目标1: 可执行目标代码符合高级需求
描述: 确保集成的代码完全符合已定义的高级需求。
活动:
6.4.2.1: 对高级需求与可执行代码进行一致性检查。
6.4.3: 在整合过程中进行持续的测试来保证需求的实现。
6.5: 使用自动化测试工具验证高级需求的覆盖率。
输出:
软件验证案例和程序
软件验证结果
跟踪数据
目标2: 可执行目标代码与高级需求结构稳健
描述: 确保代码的结构和设计能够稳健地支持高级需求的实现。
活动:
6.4.2.2: 通过模块化和封装确保代码的结构清晰和维护性。
6.4.3: 进行结构分析以评估代码的健壮性。
6.5: 定期代码审查和重构以提高代码质量。
输出:
软件验证案例和程序
软件验证结果
跟踪数据
目标3: 可执行目标代码符合低级需求
描述: 确保代码实现详细且准确地反映了所有的低级需求。
活动:
6.4.2.1: 对低级需求进行详细的实现检查。
6.4.3: 实施单元测试以验证每个低级需求。
6.5: 利用代码覆盖工具确保低级需求的充分测试。
输出:
软件验证案例和程序
软件验证结果
跟踪数据
目标4: 可执行目标代码结构与低级需求稳健
描述: 保证代码的结构能够有效支持低级需求的实现,并确保其稳健性。
活动:
6.4.2.2: 分析和测试代码结构以评估其对低级需求的支持能力。
6.4.3: 结构和压力测试,确保代码的稳定性和性能。
6.5: 代码评审和重构,以强化代码质量和响应性。
输出:
软件验证案例和程序
软件验证结果
跟踪数据
目标5: 可执行目标代码与目标计算机兼容
描述: 确保集成后的代码能在目标计算机上有效运行,且与硬件环境兼容。
活动:
6.4.1.a: 在目标硬件上运行测试,确认软件与硬件的兼容性。
6.4.3.a: 使用硬件抽象层 (HAL) 测试,确保接口一致。
6.5: 模拟环境测试以预测实际运行情况。
输出:
软件验证案例和程序
软件验证结果
验证过程
目标1: 测试程序是正确的
描述: 确保所有测试程序正确无误,适应于验证高级和低级软件需求。
活动:
6.4.5.b: 审查测试程序以确保它们能准确测试软件需求。
输出:
软件验证结果
目标2: 测试结果正确,差异得到解释
描述: 验证测试结果的准确性,并对任何差异进行适当的解释和记录。
活动:
6.4.5.c: 对测试结果进行分析,确保结果的可靠性,并对发现的任何差异进行详细说明。
输出:
软件验证结果
目标3: 实现高级需求的测试覆盖
描述: 确保测试覆盖所有高级需求,没有遗漏。
活动:
6.4.4.a: 执行详细的测试以覆盖所有高级需求。
输出:
软件验证结果
目标4: 实现低级需求的测试覆盖
描述: 确保测试能够完全覆盖所有低级需求。
活动:
6.4.4.b: 进行系统和集成测试来验证低级需求的实现。
输出:
软件验证结果
目标5: 实现软件结构的测试覆盖(修改条件/决策覆盖)
描述: 测试软件结构以确保修改条件和决策点都被完全覆盖。
活动:
6.4.4.c: 通过详细的条件和决策覆盖测试来验证软件结构的完整性。
输出:
软件验证结果
目标6: 实现软件结构的测试覆盖(决策覆盖)
描述: 保证所有决策路径都经过测试,确保软件逻辑的正确执行。
活动:
6.4.4.c: 执行决策覆盖测试,确保所有逻辑分支都被验证。
输出:
软件验证结果
目标7: 实现软件结构的测试覆盖(语句覆盖)
描述: 执行语句覆盖测试来验证代码中的每条语句都至少执行一次。
活动:
6.4.4.c: 通过语句覆盖测试确保没有代码被遗漏。
输出:
软件验证结果
目标8: 实现数据耦合和控制耦合的测试覆盖
描述: 验证软件中的数据耦合和控制耦合,确保它们按照设计正确运作。
活动:
6.4.4.d: 分析和测试数据与控制流之间的相互作用,确认它们的正确性。
输出:
软件验证结果
目标9: 验证可以追踪到源代码的附加代码
描述: 确保所有新增代码都可以追踪回源代码,且其功能和需求得到正确实现。
活动:
6.4.4.c: 对新增代码进行详细审查和测试,验证其与原有代码的一致性和功能实现。
输出:
软件验证结果
配置管理过程
目标1: 识别配置项
描述: 确定软件开发过程中的所有配置项,确保在项目生命周期中能够有效管理。
活动:
7.1.a: 识别所有的配置项,包括软件需求、设计文档、源代码等,以便进行有效管理。
输出:
SCM记录
目标2: 建立基线和可追溯性
描述: 确保所有配置项都有明确的基线,并建立可追溯性以支持后续变更管理。
活动:
7.1.b: 创建并维护软件配置基线,确保能够追溯每一项配置。
输出:
软件配置索引
SCM记录
目标3: 建立问题报告、变更控制、变更审查和配置状态核算
描述: 确保项目中的任何问题或变更都能被记录、审核和控制。
活动:
7.1.c: 记录所有问题并进行跟踪。
7.1.d: 执行变更控制程序以评估、批准或拒绝变更请求。
7.1.e: 审查变更,确保所有变更都经过适当的审核流程。
7.1.f: 维护配置状态核算记录,确保所有配置项状态可知。
输出:
问题报告
SCM记录
目标4: 建立归档、检索和发布程序
描述: 确保所有重要的项目文档和配置项都能被适当地归档和检索。
活动:
7.1.g: 建立有效的归档和检索程序,确保所有配置项可以在需要时迅速取回。
输出:
SCM记录
目标5: 建立软件负载控制
描述: 确保软件版本的控制和管理,避免未授权的更改。
活动:
7.1.h: 确保在软件加载和配置中进行有效的控制和管理。
输出:
SCM记录
目标6: 建立软件生命周期环境控制
描述: 确保软件开发、测试和生产环境的控制,以保障软件的完整性和一致性。
活动:
7.1.i: 确定和维护软件生命周期环境的控制措施,确保所有环境符合规定要求。
输出:
软件生命周期环境配置索引
SCM记录
质量保证过程
目标1: 确保软件计划和标准的开发及审查
描述: 确保软件开发计划和标准已被开发和审查,以符合文档要求和一致性。
活动:
8.1.a: 确保所有的软件计划和标准都经过审查,以确保与规定的标准和文件一致。
输出:
SQA记录
目标2: 确保软件生命周期过程的合规性
描述: 确保软件生命周期中的所有过程都符合批准的软件计划。
活动:
8.1.b: 验证所有软件生命周期过程是否遵循批准的软件计划。
输出:
SQA记录
目标3: 确保软件生命周期过程符合软件标准
描述: 确保软件生命周期中的所有过程都符合批准的软件标准。
活动:
8.1.b: 确保所有的软件生命周期过程符合软件标准。
输出:
SQA记录
目标4: 确保满足软件生命周期过程的过渡标准
描述: 确保软件生命周期过程中各阶段的过渡标准得以满足。
活动:
8.1.c: 验证软件生命周期过程的各个阶段的过渡标准是否得到满足。
输出:
SQA记录
目标5: 确保软件符合性审查
描述: 确保进行软件符合性审查,以验证软件的合规性。
活动:
8.1.d: 进行软件符合性审查,确保最终软件满足所有的要求。
输出:
SQA记录
审定联络过程
目标1: 建立申请者与认证机构之间的沟通与理解
描述: 确保申请者与认证机构之间建立有效的沟通和理解。
活动:
9.1.a: 进行初步的沟通与讨论,确保双方对认证过程的理解一致。
9.1.b: 定期沟通进展,确保信息共享。
9.1.c: 记录所有的沟通和理解,以备将来参考。
输出:
软件认证方面的计划(Plan for Software Aspects of Certification)
目标2: 提出合规手段并获得协议
描述: 提出如何满足DO-178C的合规性要求,并与认证机构达成一致。
活动:
9.1.a: 提交合规性方案,并与认证机构进行讨论。
9.1.b: 与认证机构讨论并确认合规手段的有效性。
9.1.c: 确保所有的合规手段在计划中得到文档记录。
输出:
软件认证方面的计划(Plan for Software Aspects of Certification)
目标3: 提供合规性证明
描述: 确保提供必要的文档,以证明软件满足认证标准。
活动:
9.2.a: 编制软件完成总结,以展示符合标准的所有要求。
9.2.b: 准备软件配置索引,确保所有文档的可追溯性。
9.2.c: 确保所有相关文档得到认证机构的认可。
输出:
软件完成总结(Software Accomplishment Summary)
软件配置索引(Software Configuration Index)