刘岩、温泉、陈温成、穆贺强、丁宇 /北京无线电测量研究所
随着航天装备体系化、体系智能化、智能实战化的发展,“软件定义装备”改变了软件以往附属于硬件的形态,可以脱离硬件而独立演化,通过软件和算法的快速迭代实现装备能力的持续提升。软件已逐渐成为装备的灵魂,在信息化和智能化进程中发挥基础性、决定性作用。本文对航天装备软件面临形势、北京无线电测量研究所过往发生的软件质量问题进行了深入分析,识别出当前航天装备软件研制过程中亟待解决的问题,并对软件质量综合能力的提升提出了较为有效的途径和方法,对于提高航天企业软件质量管理水平具有一定的借鉴及指导作用。
近年来,航天企业型号软件质量问题一直困扰着装备研制工作,涉及型号软件研制的全寿命周期并呈多样化。型号软件质量综合能力提升成为装备研制中亟待开展的重要工作。
随着装备体系化、体系智能化、智能实战化的发展,软件新技术、新应用正对军工行业进行全方位、多角度、全链条的改造,在装备转型的重要节点,应充分发挥软件对装备发展的驱动力,快速突破软件行业发展瓶颈,打造软件发展良好生态。
装备软件规模进一步增加、软件逻辑更加复杂、软件交付周期压缩、软件质量要求提升、软件密集型特征日益凸显、协同化特征不断加强。装备高度集成化、智能化、软硬件相互渗透化,复杂场景下的要求使得软件的算法和处理日趋复杂,传统的单一平台向体系化、网络化转变,软件规模呈指数级增长,如单套装备的软件规模,20 年间增长100 倍。软件研制周期压缩一半以上,要求立项后快速形成能力。装备软件的高质量大规模快速交付的新需求,对加强型号软件质量可靠性工作、提升型号软件保证能力提出了新的挑战。
国家军用标准GJB 5000B-2021《军用软件能力成熟度模型》,2022 年3 月起正式实施。GJB 5000B 标准的贯彻实施,是建立健全、有效运行、持续改进软件质量管理体系的有力抓手,是提升军用软件质量总体水平的有效途径,对于推动装备“三化”融合高质量发展具有重要意义。需着力开展GJB 5000B 体系建设、运行和评价,持续提升软件能力成熟度。
近年来,研究所型号软件质量问题一直是装备研制工作中重点关注问题之一,涉及型号软件研制的全寿命周期。针对以往发生的各层级多个软件问题,从多维度统计并进行分析。
软件设计缺陷是导致故障发生的主要因素,需求缺陷、编码缺陷是次要因素,如图1 所示。这反映出在软件设计评审、软件成熟构件的使用比率等方面仍存在不足。同时应提升需求条目化的粒度,在进场前充分开展需求一致性检查等工作。
图1 软件质量问题原因示意图
软件质量问题大多发生在系统联调阶段,暴露出软件在参加正式系统联调前的需求理解不一致、内部自测试不充分,导致软件问题在后期集中发生的情况,如图2 所示。
在传统中央处理器(CPU)软件问题相对较多的基础上,FPGA 软件问题占有比较高的比重,如图3 所示。这反映出装备所属FPGA 软件的软件工程化管理应进一步加强。
图3 软件质量问题按软件类型示意图
基于对当前形势及质量问题的深入分析,航天企业应继续坚持问题导向和目标导向,以GJB 5000B 标准认证和软件工程化能力提升为抓手,重塑型号软件产品实现过程,找准关键点和薄弱点,精准发力、标本兼治,提高软件重用率,降低软件缺陷率,从根本上解决影响型号软件产品质量的瓶颈问题,提升软件过程管控能力和系统预防能力。
结合GJB 5000B 新标准的正式发布,重新进行体系文件梳理,强化标准中成果形式、实施要点、裁剪指南的指导作用。深入理解GJB 5000B 标准,发挥领导作用,组织协调、资源保障,全方位落实GJB 5000B 标准要求。依据GJB 5000B 标准,结合业务特点、工作目标、内外审过程中发现的问题,修改完善相关体系文件,做好体系的本地化,进一步实现强化工程、优化管理的总目标。落实推广实施项目,做到领域、部门覆盖,结合工程实际,按GJB 5000B 标准要求开展实施,并持续过程改进。
深入学习理解GJB 5000B 新标准中的基于模型的软件开发GJB 5000 实施指南、基于敏捷方法的GJB 5000 实施指南、基于软件产品线方法的GJB 5000 实施指南、FPGA 软件GJB 5000 实施指南等优秀实践方法,结合新技术、新方法,形成符合软件研制的标准规范、作业指南,并在试点项目中开展应用,实现成果的固化。如强化软件配套表管理,型号软件的技术状态控制;加强软件静态分析测试管理,规范软件代码入受控库要求,明确相关人员职责和审批流程;制定并发布软件三单编制指南,逐条细化三单编写模板,强化影响域分析等要求,规范三单的编写要求。
强化研究所各领域、各型号软件产品配套表管理,将其符合性作为系统/分系统方案报告通过准则之一。同时依据软件产品配套表,纵向型号应在试验进场、型号转阶段、产品鉴定等重要节点开展型号软件产品基线的配置管理审核,其他型号应在型号所检、靶场交付等重要节点开展配置管理审核。进一步加强对软件接口文件、系统工作过程、算法模型等设计输入文件的控制,将其纳入型号产品基线进行有效管控。
各专业研究室需加强软件评审专家库建设,系统开展年度软件专业评审策划。同时应高度重视对专业评审问题的分类归纳、评审问题组织资产库建立。进一步改进同行评审检查单,分型号领域、分专业开展检查单定制,使检查项更具有针对性。各型号应识别其负责软件中的核心关键模块,组织软件项目组,会同同行专家开展代码审查,形成代码审查记录,对检查发现的问题实施闭环处理,实现在设计阶段把问题提前定位及解决,减少缺陷修复代价。
基于专业领域特点开展CPU、数字信号处理(DSP)、FPGA 等各专业软件测试人员队伍建设,扎实推进系统级、配置项级软件测试工作,总结归纳典型软件测试用例,逐步建立健全软件测试用例库,提升测试效率效果。为规避代码早期缺陷,强化采用自动化测试工具开展代码规则检查、缺陷检查等静态测试要求,将静态测试问题报告单作为提交软件入库的前提条件。识别型号研制中的通用软件及应用软件,加强对通用软件的工程化管理,通用软件必须经过充分测试,尤其是覆盖性、适用性、边界、异常处理等测试。建设各专业领域软件的仿真测试平台,建立高逼真度系统模型、构建软件真实运行的多种场景,使软件验证摆脱对装备的依赖,提升软件调试验证能力,缩短软件研制周期。型号总体人员应依据系统方案报告或软件系统规格说明等相关等效文件,针对典型工作场景、异常应急场景等设计系统测试用例,开展基于场景的系统测试,将测试结果纳入到系统测试报告中。建立各级测试中的测试不到位以及测试条件不具备的测试项目清单,并在下一级测试中予以重点关注并闭环处理。
按照GJB 8000《军用软件研制能力等级要求》,严格对外协软件承研单位的资质审查。强化外协软件产品需求和设计过程的监控,对识别出的重要软件应提供测试报告等测试记录文件、软件配置管理情况记录文件。在需求和设计评审中,重点关注外协软件功能性能,以及与其他软件间接口设计的正确性。强化外协软件产品测试验证过程的监控。在测试评审中,重点关注外协软件功能性能,以及与其他软件间接口测试的充分性。加强外协软件与相关系统其他软件的集成测试,重点关注软件间接口测试验证的充分性、正确性、调用关系等;关注外协软件在所属系统中功能性能的正确性、安全性设计的正确性、异常处理的正确性、边界处理的正确性等。
强化所级、部门级两级软件组织资产建设,提升各级软件产品成熟度。不断完善组织资产库的管理及激励制度,构建完整的组织资产库的建立、管理、维护以及使用制度。通过激励制度充分调动广大设计师的积极性,促进组织资产的有效积累及使用。逐步构建统一的组织资产管理平台,通过平台构建资产与使用方的追溯关系,实现工具化的组织资产的发布、升级及维护,按年度对组织资产库的增长率及使用率进行统计。
建立标准的软件开发环境、集成环境、测试环境、部署环境等,对标准工作环境进行有效控制。构建各专业组织级设计规范、流程、指南,提供专业领域软件设计文档模板、测试文档模板等。推动各专业软件型谱建设,开展软件需求库、软件架构库、软件通用构件等不同层级基础能力构建,完善通用构件进入及退出机制,提升软件复用率。建立过往软件质量问题案例库,开展问题统计分析,形成典型故障模式,推动共性问题培训、举一反三,完善软件设计规范。
持续推进敏捷开发方法在各单位本地化的落地实施,制定基于敏捷开发模式要求并形成相应的软件生存周期模型,在确保软件产品质量的前提下,优化管理流程,提高研制效率。
不断强化模型驱动开发方法在各部门本地化的落地实施。应用基于模型的软件开发工具,开展系统建模、软件需求建模、软件设计建模、模型仿真、代码自动生成、测试验证、文档自动生成等工作。加强前期需求分析过程,开展需求验证与设计验证;注重基于模型重用的软件架构设计;建立基于模型的重用资产库,加强模型重用管理;加强基于模型的测试方法研究,提升验证与测试的自动化水平。