NASA航天软件产品保证方法研究
2023-03-28隗合建陈嘉凯中国运载火箭技术研究院
隗合建、陈嘉凯 /中国运载火箭技术研究院
软件产品是航天工程任务的重要组成部分。自20 世纪80 年代以来,NASA 发布了一系列关于软件产品保证方面的文件要求。该要求紧密围绕航天工程任务保成功需要,将技术与管理进行有机结合,突出了航天软件产品安全性、系统性、规范化、专业性和独立性等特点,是对不断发展、探索的工程实践经验的系统总结与提炼,对我国航天软件产品保证具有极大的参考意义。
NASA 航天软件产品保证通过建立分级分类的软件标准体系,配合软件安全性、全生命周期过程管理与改进等具体指导性文件,构建出了全系统、全要素、全过程的可操作执行的软件产品保证框架。同时,NASA 建立了专业的软件产品保证支撑机构和独立的验证确认中心,以确保整个框架的有效执行,并在工程实践中指导软件产品保证框架不断自我完善、持续改进。
从NASA 软件工程和产品保证的实践来看,软件工程作为航天系统工程的重要组成部分,需要进行顶层规划,紧密围绕航天软件“安全关键”的本质特性,将技术与管理相结合,准确把握任务风险识别与控制,加强产品保证与过程改进的融合,以实现航天任务圆满成功的目标。同时,要加强产品保证专业支撑机构的建设和作用发挥,支撑机构要注重信息化建设,以提高产品保证工作的执行效率和质量。
一、NASA软件工程和产品保证
1.NASA 的软件标准体系
NASA 软件标准体系文件共包括程序文件、标准、手册和指南4 个部分。其中,程序文件《软件工程要求》是顶层文件,定义了软件分类,对软件产品研制、维护、退役、操作和管理提出了最低保证要求;《软件安全标准》规定了安全关键软件的研制流程和技术要求;《软件安全指南》描述了工程实践中具体流程和技术的实施方法;《软件保证和软件安全标准》阐述了软件产品保证计划的制定要求;《软件形式检查标准》建立了软件形式检查过程的框架模型,以便尽早检测和消除软件产品缺陷;《软件工程和保证手册》用于指导持续的软件工程实施和过程改进;《可编程逻辑器件手册》对可编程逻辑器件的产品设计、验证和维护提供了实施指南;《复杂电子保证专业人员手册》包含可编程设计的复杂集成电路相关的设计过程、保证活动及应用实例。
2.NASA 软件工程和保证手册
2020 年,NASA 发布了《软件工程和保证手册》。该手册为《软件工程要求》《软件保证和软件安全标准》的使用提供了实施指南,是NASA 软件工程和产品保证实施的关键组成部分,为有效开展可持续的软件工程和产品保证及过程改进提供支撑。
《NASA 软件工程和保证手册》共包括6 部分内容,其中最关键的B、C、D 3 个部分描述了软件工程和产品保证需要开展的具体活动。B 部分针对每个机构提出要求,提供有关顶层要求实施的独立说明和解释性信息;C 部分针对每个软件项目提出要求,从软件管理、软件生命周期过程和软件生命周期支持3 方面,为软件项目提供适宜的软件产品保证步骤以及软件安全性要求;D 部分则对软件工程实施提出了更高标准要求,具体包括编程清单、保证和安全、软件设计原理等。该手册以“操作方法”“指导材料”的形式提供给用户,为用户在软件工程、软件保证和软件安全方面提供具体可行的指导,以帮助用户实现不断超越。
3.发射场软件产品保证
戈达德空间飞行中心(GSFC)作为NASA 航天任务飞行中心,其软件产品保证实质是一种型号研制管理模式,通过将运载火箭、航天飞机等各类飞行任务管理要求进行集成,成体系地细化了各项软件产品保证要求,并将这些要求融入到研制单位的质量管理体系,系统安全性、可靠性、维修性设计要求和风险管理程序中,以实现软件产品的安全可靠。
该系列软件产品保证要求主要包括4 个部分内容:一是软件保证。包括软件质量、安全性、可靠性、鉴定和批准、独立验证和确认。二是评审,包括软件需求评审、初步设计评审、关键设计评审、测试就绪评审、验收评审。三是软件配置管理。承研单位需开发、使用配置管理系统,对软件需求、源代码、数据和文档提供管理和控制。四是软件问题报告和纠正措施,包括不合格品检测和报告、追溯和管理、影响评估和纠正。
4.安全与任务保证办公室
为保证各项任务、计划的顺利完成,NASA 专门设立了安全与任务保证办公室(OSMA),将管理与工程有机结合起来。作为NASA 统管质量、可靠性和安全性的重要职能部门,下设独立验证和确认中心、任务保障部门、安全与保证要求部门、工程与安全中心和资源管理办公室5 个部门。主要负责NASA 的安全性与任务保证战略、政策和标准的制定与实施,对NASA 所属机构的安全性、可靠性及维修性设计贯彻落实起到重要作用。主要职责包括:保证NASA 安全性与任务保证的各项方针在全生命周期内得到有效落实;分析并独立评估各项目以保证各任务能够安全完成;为安全性、可靠性设计等领域部门提供资助,确保该类技术、过程、方法得到创新及快速转化;制定并实施安全与任务保证一系列指导文件、标准、手册等。
针对软件产品保证,其下设的独立验证与确认中心、工程与安全中心发挥了重大作用。
(1)独立验证与确认中心
1993 年,“挑战者”航天飞机事故后NASA 成立了常设性支撑机构独立验证与确认中心(IV&V)。该机构行政上隶属于戈达德空间飞行中心,在安全与任务保证办公室的指导下运作,主要承担NASA的软件产品保证、关键飞行软件独立验证与确认的管理工作。该中心采用系统工程方法,汇集领域专业人才、软件工程最佳实践案例和综合各类验证与确认工具等,对关键软件开展独立验证与确认,给出飞行任务软件产品专家意见。同时,该机构致力于不断改进独立验证和确认的方法、工具和实践。
(2)工程与安全中心
工程与安全中心(NESC)核心是一个成熟的知识库,由来自NASA 各个飞行中心以及业界、学术界和其他政府机构的技术专家组成。通过汇集业内最优秀工程师的思想,不断优化研制流程,深化知识基础,增强技术能力,以履行对卓越工程的承诺。NESC 以书面形式出具技术评估和咨询报告,对咨询内容提供预防性和纠正性建议。该机构通过经验教训系统对经验教训开展数据挖掘、趋势分析等工作,将分析结果传达给领导层和一线工程师,以求在潜在问题成为重大问题之前解决。
二、NASA软件产品保证方法的借鉴意义
1.技术和管理密不可分
软件产品保证不仅仅是质量管理、标准化等管理工作,而是在软件生命周期中开展的各项管理和技术工作的综合,具有明显的技术特征。产品保证队伍应独立于产品设计、生产、试验、质量管理队伍,同时强化产品保证工程师识别技术状态变化、把握产品关键特性的职责,实现对软件产品全生命周期质量和技术监督把关。
软件产品保证工作的机制是全过程管控,从设计到试验、从自研至外协外购都应实现全覆盖。在软件产品研制不同阶段,要针对不同类别产品采取差异化管控方法,将传统的粗放式质量管理转向精细化、集成化、一体化管控模式,确保软件产品质量的一致性和稳定性。
软件产品保证工作的配套建设主要是通过人员的专业化、文件体系的规范化、制度标准的齐备化,将工程经验式研制转变为知识型研制。以风险型、精细化、技术性优化管理过程,兼顾多接口、全过程、全要素的管理。
2.关注风险识别与控制
要实现软件产品保证过程中技术和管理的有效结合,最重要的方法是采用风险管理,对型号研制过程中的技术风险进行充分的鉴别、评价、预防和控制,保证航天软件产品安全、可靠、可用,能够完成规定的任务目标。
软件产品保证的工作基础是科学配套的产品保证标准、制度体系,细致严谨的产品保证文件体系(策划、实施、总结),技术和管理融合的专业技术人员队伍。在专业技术人员准确识别技术风险的基础上,提出有针对性、差异化的管理控制措施,并通过技术和管理的双重手段,确保产品风险得到有效控制。
3.持续开展过程改进
软件产品保证和过程改进,是出于“高质量的过程产生高质量的产品”这一理念,加以有效的方法使安全关键软件零缺陷。前者评判一个产品是否合格,后者评判一个组织的能力,两者是密不可分的。对于一个组织而言,更关注组织本身能力的提升;对于一项航天重大工程而言,更关注各研制单位提供的产品是否满足质量要求。因此,软件过程改进适合各研制单位开展,软件产品保证适合型号工程研制推进。
虽然实施软件产品保证和过程改进会牺牲一些“发挥”的空间,要严格按照标准规范、流程文件、质量要求等实施,但是更强的可依据性、易判定性将避免产品研制过程中不少疑问和争议,有效识别、防止、去除错误,切实提高软件产品的质量。
4.专业机构独立支撑
NASA 工程实践表明,为充分发挥软件产品质量与可靠性保障作用,需要建立集技术和管理于一体的技术支撑机构工作体系,完整体现各级组织、型号及技术支撑机构相互结合的关系,并能发挥技术支撑机构的独立监督、服务作用。
技术支撑机构需统一部署,形成专业、技术上的优势,全面参与型号研制的策划与过程的管理和监督,制定覆盖型号研制各阶段的软件产品保证工作策划,发挥好独立把关作用,将控制点前移,把“预防为主”方针落到实处,推动型号软件产品保证工作切实有效实施。
同时,技术支撑机构作为前沿性和基础性专业技术研究机构,应该总体掌控型号中的软件质量与可靠性技术基础研究需求,制定专业技术发展路径,提前筹划基础研究与能力建设工作,以满足型号软件研制需要。
技术支撑机构应对积累的故障数据进行深入分析,建立软件质量问题举一反三基线,将新技术、新方法、新工具融入管理过程,融入型号研制过程,为型号研制流程优化、研制能力提升提供决策支撑。
5.依托信息化实现高效、高质量
软件产品保证工作应依托信息化手段,构建软件研制、管理人员便于使用的信息化管理平台。该平台要与各类知识管理系统相结合,统计分析研制过程数据、质量数据,获取软件设计准则、测试规范等知识,从设计源头提升软件产品质量。
软件产品保证从基础建设到融合发展,是一个不断深化的过程,提升信息化平台技术水平、扩大应用规模、纳入业务流程是发展重点。将数据采集、信息传递、知识使用等环节有效嵌入科研生产流程,实现软件产品保证要素的闭环管理。通过经验知识的传递、使用、沉淀和持续积累,打造组织知识管理、项目协同推进、员工能力提升的一体化平台,实现知识型研制。