DO-178标准概述
学术
科技
2023-10-04 23:24
山东
DO-178标准由航空电子业界及航空无线电技术委员会(Radio Technical Commission for Aeronautics, RTCA)编制而成,目的是为航空电子设备软件研制人员及审定机构提供指南。
第一版DO-178标准,内容包括了基本的航空电子设备软件生命周期,再随后的DO-178A标准中增加了软件关键等级,并为确保质量强调了软件测试。DO-178B标准完成重新编写,通过增加策划、对数据而不是文档提出要求,允许不同软件开发实践、允许商用货架产品(commercial off the shelf,COTS)和工具,以及在实际工作中持续的质量监控、验证测试等提高软件质量。
DO-178C明确标识了DO-178B标准中在正文中隐含的某些目标,标准再次强调,为了充分理解各项建议,欢迎考虑文件的全部正文。例如,附录A在修订后包含对每项活动、每项目标的索引。标准的编制解决了DO-178B标准中已知的“软件问题列表”,其中包括一些琐碎的文本修订,两个新目标,并明确了两个新的生命周期数据项。DO-178标准名为指南,事实上已经成为工程实践中的默认要求。在短短的百页篇幅中,要说明所有相关人员的工作,其内容必然宽泛。应用DO-178标准的关键是要深入理解其目的,为了做到恰如其分的应用,基于DO-178标准的认证必然伴随着大量文字工作以及最终系统的实例分析。谈到DO-178必须联系DO-254标准,DO-254针对硬件,是机载航空电子硬件设计保证的正式标准,标准给出了项目概念定义、计划、设计、实现、测试和确认相关信息,DO-254和DO-178类似,均由具有软件过程经验的人员编写。当今绝大多数航空电子项目都要进行DO-254标准认证或强制遵从DO-178标准的要求。DO-178标准带来除了合格审定之外的诸多益处,包括可验证的软件质量、更高的可靠性和一致性、更多的重用性、更底的生命周期成本、较低的维护工作量、更快速的软硬件集成及更多在开发阶段发现问题的可能性。
(1)能否将DO-178标准中有关逆向工程规定运用于现有软件当中?可以!DO-178标准虽然主要适用于新研软件,但其中也包含了将逆向工程应用于以前开发软件的规定,并可保留大部分已完成的工作。软件开发需要各种工具用于设计代码生成、编译链接、程序库和结构化测试覆盖。在DO-178标准当中,工具鉴定适用于开发和验证/测试工具。鉴定准则因工具不同而异,并且大多数工具并不需要鉴定。如确实需要工具鉴定,应用DO-178标准的子集,以确保工具的正确使用。差距分析是评估当前软件工程过程和输出,与DO-178标准的要求进行比较,以寻求差距。DO-178标准规定了航空电子设备软件的开发,同时并不否认以前开发软件可能符合标准或已通过合格审定。在许多情况下,特别是军用航空电子设备软件合格审定常被标准符合性所代替。标准符合性几乎等同合格审定,但不需要联邦航空管理局的介入。差距分析通常由经过培训的顾问或委任工程代表承担,结果就是对软件过程及输出与差距分析通常由经过培训的顾问或委任工程代表承担,结果就是对软件过程及输出与DO-178标准要求之间差距的分析,并提供详细的说明,用于弥补与合格审定或符合性要求的差距。修正的条件判定覆盖(Modified condition /design coverage,MC/DC)。要求每个程序的入口和出口至少调用过一次,判定中每一个条件的值至少调用一次,并且每一个条件独立的影响输出结果。MC/DC分析和测试的关键是分析代码结构,确定MC/DC的适用性。然后开发充分的测试用例以确保每一个条件能够按照MC/DC定义独立验证。目前绝大多数MC/DC分析和测试都是在经过工具鉴定的结构覆盖分析工具辅助下完成。死码(dead code)是在运行时永远不会被执行的可执行(二进制)码。DO-178标准通常不允许死码存在,必须予以清除。由于死码不能追溯至任何软件需求,因此也不能实现任何所需功能。未被任何其他程序调用的变量或函数一般可通过编译程序或链接程序予以清除,由于他们没有存在二进制可执行加载映像文件当中,因此按照DO-178标准的要求,他们不属于死码范畴。非激活码(extraneous code)是在航空电子设备某一配置或版本中,不会被执行的可执行(二进制)码,不过这些代码在维护、特殊操作或不同软件配置下可执行。与死马不同,非激活码可以留在源码和二进制基线之中。需求可追溯性要求每一条需求追溯至相应的设计、代码和验证/测试以便于需求实现和验证,需求可追溯性可以是多对一和一对多模式。最好使用高级语言(同时要求具有复杂语法解析能力的编译器),因为它们更安全。什么是安全的航空电子设备软件?DO-178标准强调代码的一致性、可视性、确定性、防御性、鲁棒性、设计可追溯性,强调按照检查单进行软件同行评审,以及通过结构覆盖分析和各种试验对软件彻底测试。因此,航空电子设备代码最好采用Ada、C和C++语言编写,对所有语言应使用编码的安全子集。Ada事实上是航空电子设备语言标准,Ada95进一步改进了面向对象的能力。不过,目前的趋势是Ada已经落伍于C和C++,并不是因为C和C+十性能更优越,而是因为C和C++具有更多的开发工具及更广泛的程序设计群体。DO-178标准要求对所有软件生命周期产品进行配置管理(configuration management,CM),包括需求、设计、代码、测试和文档。DO-178标准不指定特定工具,对配置管理亦是如此。因此,配置管理可以通过人工或纸质文档完成。事实上,配置管理工具的应用使航空电子设备开发及DO-178软件项目受益颇多。简单的配置管理工具(免费工具或在每用户200美元以下的低成本工具)可以提供基本的版本控制、检入/检出及文档管理。高成本工具能够提供更复杂和自动化程度更高的功能。至今市场上尚无能够执行所有DO-178标准要求的配置管理过程步骤的商用工具。特别地,对数据安全、异地备份、每次变更的同行评审及确保无未授权变更等方面,均为DO-178标准软件配置管理步骤所要求,但通常都不是通过配置管理工具完成的,这些要求可通过配置管理过程的扩展加以实现。检查单用于跟踪DO-178标准的符合性。DO-178标准附录中提供了对目标的检查单,不过,这些检查单是不被接受的,实际的检查单是根据项目实际而定。许多第三方机构提供的DO-178和DO-254标准检查单,覆盖研制的各阶段,包括计划、开发、正确性、质量保证和委任工程代表(designated engineering representative,DER)活动等。独立性是要求在DO-178标准生命周期的各个步骤中将开发和评审分离,开发指所要求产品(需求、设计、代码、测试等)的产生,评审指对产品的正确性及与DO-178标准符合性的审查。DO-178标准将软件分为五个关键等级,A级关键等级最高,E级最低。软件关键等级基于软件对潜在失效状态的影响。每一项航空电子设备功能或每一个系统都具有确定的关键等级(关键等级必须经审定机构的批准);当然,一个系统中不同的部件可具有不同的关键等级,关键等级越高,软件开发工作量就越大。A级软件指软件异常行为将导致系统功能失效进而产生航空器灾难性的失效情况,典型情况是人员伤亡。20%~30%的航空电子系统和40%的软件代码必须符合A级要求。B级软件指软件异常行为将导致系统功能失效进而产生航空器危险的失效情况,典型情况是部分人员伤亡。大约20%的航空电子系统和30%的软件代码必须满足DO-178标准B级的要求。C级软件指软件异常行为将导致系统功能失效进而产生航空器重大的失效情况,典型情况是人员重伤。大约25%的航空电子系统和20%的软件代码必须满足 DO-178标准C级的要求。D级软件指软件异常行为将导致系统功能失效进而产生航空器轻微的失效情况。大约20%的航空电子系统和10%的航空软件代码必须满足DO-178 标准 D级的要求。E级软件指软件异常行为虽然将导致系统功能失效,但不会影响航空器的工作性能或增加驾驶员工作负荷。E级软件对飞机及乘客安全无任何影响。大约10%的航空电子系统和5%的软件代码必须满足DO-178标准E级的要求。伴随机载客舱娱乐系统及互联网通讯的发展,E级软件代码量近些年不断增长,由于需要和其他更高关键等级软件集成,因此E级软件也面临关键等级提升之势。工具鉴定用于评估软件开发及验证工具,以确定其是否需要正式鉴定。软件工具鉴定分为开发工具鉴定和验证工具鉴定。由于DO-178标准开发工具的输出用于机载嵌入式软件之中,因此这种工具必须符合DO-178标准软件生命周期各个方面的要求以保证其完整性。验证工具辅助DO-178标准验证。满足以上准则的工具,并用于减少、替代或自动实现DO-178标准中所涉及过程步骤的工具必须通过工具鉴定。结构覆盖用于证明正式的软件验证用例是否完全覆盖软件结构(条件及路径)。DO-178标准的E级和D级软件不要求进行结构覆盖。自C级、B级至 A级,结构覆盖要求不断提高。可认证性指一个航空电子设备部件仅满足DO-178标准子集的要求,而其他合格审定要求后续才能满足。DO-178标准合格审定适用于单独的系统,因此需要该系统所有的软件部件都已完成,并且每个部件和整个系统均完全满足 DO-178 标准的要求。不过,在系统并不完整的情况下,一个单独的软件部件(如实时操作系统、图形库、通信协议等)可通过证明该部件满足DO-178 标准的全部要求而认为该部件是可认证的。