NASA软件标准和体系研究
2021-12-25薛恩刘金燕沈岭
薛恩 刘金燕 沈岭
(中国航天标准化研究所,北京,100071)
鉴于软件在项目中的重要性,近年来NASA陆续修订并发布了新的软件标准,主要包括:2019年8月NASA总工程师办公室(OCE)负责的《NASA软件工程要求》 (NPR7150.2C),2020年6月NASA安全和任务保证办公室(OSMA)制定的NASA-STD-8739.8A《软件保证和软件安全》等技术标准,2020年4月NASA发布了修订的NASA-HDBK-2203《NASA软件工程与保证手册》(以下简称《手册》),该手册为软件要求的实现提供了指导。以上软件标准的结构和内容互相关联、保持一致,形成了科学有效的NASA软件标准体系。
新发布的NASA软件标准与相关NASA政策指令(NPD)保持一致,并支持相应NPD的实施。NASA软件标准的修订在解决已知问题的同时,对一些标准进行了整合。例如NASA新版软件保证和软件安全标准NASA-STD-8739.8A合并了NASA软件安全标准NASA-STD-8719.13,并与NPR7150.2的更新保持一致。
与以往的标准发布不同, 《手册》采用了基于wiki的电子格式。这种形式便于随时发布最新资料和内容搜索,简化了更新方式。为促进软件相关人员参与,以wiki形式存在的《手册》提供了共享最佳实践案例和分享项目开发经验教训的访问方式, 《手册》内容处于动态更新状态中。
可见近年来NASA对软件工作非常重视,已经形成从政策指令、程序要求到工程实施的规范软件标准体系,并持续更新。对于NASA的软件管理和工程实施人员,有助于持续地改进软件工程和软件保证过程,研制安全可靠的软件产品。
对比NASA,我国航天软件标准和标准的系列化有一定差距,为更好地学习借鉴NASA最新软件经验,获得启示以支撑我国航天软件能力提升,有必要对近两年最新发布的NASA软件标准和标准体系进行系统深入研究。
1 NASA软件分类
1.1 NASA范围内软件分类
NASA范围内软件分为6类:A~F,详见表1。其中,A至E类涵盖与工程相关的软件,F类涵盖商业和信息技术(IT)基础架构软件。
表1 NASA软件分类
NASA对每个软件类别的定义给出了详细描述,例如针对发射、在轨飞行、地面等阶段,或针对测试、试验、演示等用途,或针对推进系统、电力系统、制导导航和控制、热系统等各组成系统等的软件都给出了详尽的定义说明。另外详细说明了每个类别的软件示例和排除项。对软件分类的工程可操作性非常强,值得我们借鉴。
1.2 安全关键软件
为保证系统和软件安全,NASA对安全关键软件的实施规定了特定的活动和要求,可通过软件危害分析确定是否是安全关键软件,其确定标准如下:①引起系统危险情况/事件;②为系统危险情况/事件提供控制或缓解措施;③控制安全关键功能;④如果发生危险情况/事件,可减轻损害;⑤如果系统达到潜在的危险状态,则检测、报告并采取纠正措施。目前安全关键特性合并在软件分类中。
1.3 软件分类和安全关键软件对应关系
NASA在软件工程与保证指导实施工作中,将软件分类和安全关键程度对应,讨论了每项要求对各类软件的适用性,对应关系如下:A、B类软件始终为安全关键软件;C、D类软件有时为安全关键软件;E、F类软件永远不是安全关键软件,详见表1。
NASA规定每个软件的类别唯一,NASA工程部门和安全保证部门(SMA)使用双重授权确定软件的类别,当软件分类存在争议时由NASA首席工程师裁决。完成软件分类后,可以针对不同类别的软件制定相应的软件工程要求。
2 软件工程要求
NASA软件工程要求是通过不断总结经验教训制定的,适用于完整的软件开发生命周期,包括软件计划、开发、测试、维护、淘汰、运营、管理、购买和保证活动。可供NASA和其承包商使用,并建立了通用要求框架,使工程师能够在NASA各个中心之间进行有效地沟通。
2.1 定制相关角色、职责和原则
为维护和提高软件工程实践中的组织能力,NASA规定了角色、职责与制度要求。明确了软件工程管理、软件开发和管理过程和软件生命周期管理过程中主要人员的角色和职责,详见表2。
表2 定制软件要求相关角色和职责
为了更好地适应各种软件系统和特定软件的开发,NASA建立了技术授权管理机构,对软件要求 “量身定制”。工程主管、首席信息官和SMA主管部门根据需求映射矩阵授予的权限,审查批准软件工程要求的裁剪。当软件等级变更时,软件需求裁剪也随之更新以满足修改后的要求。
2.2 项目软件要求
为减少NASA项目和计划上的软件工程风险,NASA编制了项目软件基本要求,包括以下3方面内容:软件管理要求、软件工程生命周期要求和支持软件生命周期要求,具体框架结构见表3。
表3 NASA项目软件要求框架结构表
2.3 软件需求映射矩阵
对照NASA项目软件要求,可以用需求映射矩阵简明表示特定软件在实施时需要开展工作的要求集,需求映射矩阵根据软件分类制定,其内容和结构示例见表4。特定软件的要求集可以基于软件工程工作的关键特征(例如规模和复杂性等) “量身定制”, 详细说明和指导见文献。对于特定软件的项目软件要求,还需为其制定软件保证和软件安全任务要求。
3 软件保证和软件安全
为实现软件保证(SA)、软件安全和独立验证与确认(IV&V),NASA标准定义了软件保证和软件安全要求,确保软件过程、程序和产品符合要求和标准,确保遵守安全关键软件要求和过程,确保系统和软件安全。以项目经理为例,他需按表4所示执行相关软件保证和软件安全活动,具体内容见表5。
表4 软件需求映射矩阵示例
表5 软件保证和软件安全要求映射矩阵示例
NASA独立验证和确认的要求涵盖软件概念开发、需求、设计、实现、测试、运维期间的IV&V工作。具体软件保证和软件安全任务要求参见文献。
特定软件定制裁减软件保证、软件安全和IV&V要求的原则是:①根据软件分类;②依据项目的“软件需求映射矩阵”;③与项目的“软件需求映射矩阵”相对应的软件保证和软件安全要求。
值得一提的是新标准对安全关键软件有2个新要求:①测试安全关键软件时,实现100%的代码覆盖率(如果无法实现,则必须提供为什么无法实现的理由);②安全关键软件的环复杂度必须为15或更低。
4 软件工程与保证手册
NASA-HDBK-2203《NASA软件工程与保证手册》是一份信息性文件,旨在为NASA项目中实现安全可靠的软件提供“最佳实践”指导。作为指导性文件,其内容包含工程信息、经验教训、技术问题的可能方案、相关材料或过程的分类;解释性方向和技术;以及在系统、产品、流程或服务的设计、建造、选择、管理、支持或操作方面可能有助于政府或其承包商的任何其他类型的指导信息。
《手册》中每个典型软件需求包含7部分内容。①需求:软件工程要求相关内容,包括相关注释等内容,还提供了各个软件等级是否适用于该需求的示意表格。②依据:软件需求的理由和依据,有时还包括该需求的历史信息和参考文献。③指南:提供有助于理解需求、范围、与其他软件需求的关系、最佳实践等参考资料。④小项目:提供小项目的实施帮助。⑤资源:参考文献和脚注文本列表,通常还包括附加阅读资料、工具列表。⑥经验教训:NASA以及其他工业和政府机构在软件开发方面的经验教训。⑦软件保证:包含保证每个工程需求所需的软件保证和软件安全步骤及要求,软件保证和软件安全产品,软件保证和软件安全度量,以及与每个软件保证和软件安全步骤和要求相关的软件保证和软件安全指南。
另外, 《手册》中还包含软件工程、保证和安全、软件设计原理方面的主题讨论,以方法指南和教程的形式编撰,为软件开发和采购提供额外的指导。
《手册》中的软件工具列表,列出了《手册》中链接的所有工具,其中包含NASA各中心在软件开发和保证中使用的工具列表,示例见表6。
表6 NASA软件工具表示例
需要说明的是: 《手册》中特有的NASA跨软件过程(SPAN)链接指向SPAN资源库,它是与《手册》一起使用的在线指南和资产库,仅供具有NASA访问权限的人使用。以上可见NASA的软件标准并不是独立存在的。
5 NASA软件标准体系研究
通过以上软件标准内容的研究和分析发现NASA软件标准间有着密切的关联,结合NASA项目工程技术文件体系,分析相关软件标准的关联关系,如图1所示。NASA程序要求(NPR)支撑NASA政策指令(NPD),以贯彻执行在相关的NPD中描述的NASA政策。如果把NPR 7150.2C看当做软件工程和保证的顶层文件,则NASA-STD-8739.8A和NASA-HDBK-2203共同支撑并指导了NPR7150.2C文件的实施,分别回答了NASA软件工作“做什么”和“怎么做”的问题。以上标准共同构成了NASA软件工程和软件保证的标准体系。
图1 NASA相关软件标准关联关系
NASA软件标准中,如果NPR和NPD标准之间发生冲突,则以NPD中提供的信息为准。如果NPR7150.2C与NASA的中心级指令之间发生冲突,则以NPR中提供的信息优先。
6 结论
研究和分析NASA软件标准和标准体系发现,NASA已建立了一套科学、规范、有效的软件工程和保证标准体系,具有很强的可操作性,为NASA项目中实现安全可靠的软件提供“最佳实践”指导,促进实现软件工程和软件保证过程的持续改进。
相比NASA,我国航天软件标准体系尚不健全,对我国航天软件研制的系统性指导力度不足,甚至一些软件标准面临过时的风险。NASA软件手册体量巨大,值得相关人员在软件工程实践中进一步深入研究,学习借鉴NASA软件的研究成果。我们提出以下建议:整合修订我国航天软件标准,配套编制工程可操作的手册或实施指南,将自顶向下的软件要求和自底向上的工程实施经验结合,系统性建立统一共享和科学规范的航天通用软件标准体系。另外建议建立航天软件工具范围细目,供航天工程师参考选用。