钱 航,颜廷贵,李世鹏
(北京宇航系统工程研究所,北京,100076)
运载火箭型号软件是指属于型号的组成部分、纳入配套表进行管理的软件产品,包括运载火箭系统中制导、控制、通讯、安全控制、遥测、遥控、外测、地面管理、维护和测试等型号配套用软件。中国的运载火箭型号软件研制开始于20 世纪60 年代初,首先用于弹道计算设计和控制算法仿真,并开始逐步应用于远程火箭的箭上飞行控制系统和地面测试发射控制系统[1]。早期软件开发严格来说是程序开发,现在的软件指程序与其相关文档或其他依赖项的集合,程序为软件的组成部分。在开发过程中,程序主要围绕硬件为核心进行设计与编码,代码规模小,编程工具简单,开发者和使用者无明确分工甚至身份重叠;开发者力图节省内存空间和编程设计技巧,却无需编写相关文档资料(除程序清单外)[2]。
随着数字计算机技术的发展、计算速度的提高,运载火箭型号研制越来越多地采用功能越来越复杂的软件来进行设计、仿真,具备使用方便和精度高的优点。无论箭载还是地面越来越多采用软件实现相应功能。到20 世纪80 年代早期,计算机及其软件已广泛应用于运载火箭系统中许多领域,如导引、控制、导航、数据处理、遥测、遥控和地面指挥控制。
随着信息化战争的发展趋势,火箭的研制模式已经发生了较大的变化,从试验走向应用,从单纯的型号走向系统交付,从交付即完成工作走向体系化寿命周期的全程服务,这些变化给软件带来了极大的发展空间。诸元准备系统走向快速、作战任务规划系统领域、指挥信息系统要走向实用,综合保障信息系统、产品全寿命周期管理需求迫切。图1 为运载火箭型号软件系统核心业务。
图1 运载火箭型号软件系统 Fig.1 Launch Vehicle Software System
由图1 分析可知,型号软件系统在发展过程中凸显的重要性:
a)一套切实可用的作战任务规划系统,必是基于数据实时驱动的集成系统,它应以对诸元的实时计算为基础,具备基于态势的实时指挥能力和对各方数据的集成应用能力,其核心是一套“高端”的软件系统。
b)为了提升远程火箭的快速化性能。软件计算响应的实时性和计算结果的可靠性,均成为型号亟待解决的关键环节。在国产化硬件性能的约束条件下,只有攻克并行计算、全点位覆盖性测试等关键技术,充分发挥软件的性能,才能切实提升远程火箭的快速化性能。相对作战规划领域,参数计算更接近于火箭,因此称之为“近端”。
c)测控领域主要指2 个方面:测量系统对遥测数据进行处理、存储、发布、分析;总体网、动力测控、综合控制、测量等系统对地面设备进行远程控制。此领域的软件属于地面软件,相对指控系统距离火箭较近,称之为“前端”。
d)在当前信息化条件下,指挥控制系统能大大提高远程火箭的实战化能力、快速反应能力、决策科学化和指挥自动化水平。由于指控系统往往是后端指挥的关键、是上级领导指挥的倚仗,所以该系统称之为“后端”。指挥控制系统软件是体系任务的核心和灵魂。
信息技术、互联网等的快速发展给型号软件的发展带来了外在助力和时代机遇。计算平台从单机、局域网、大规模互联互通网络到云架构的演化,开放互联、动态多变的网络环境给软件设计带来了多样的技术途径。
随着信息技术的发展,硬件、软件、网络、数据和其他以前看似独立的技术类别开始渗透、整合和互相促进,正在经历从量变到质变、从相互独立到有机整体的发展过程。软件承载的功能越来越多,通信速度越来越快,生成的数据越来越多。远程自动判读系统能够快速、准确、高效的完成全箭数据的自动判读,并能够通过远程数据传输实现测试数据推送到设计师桌面。图2 是远程自动判读系统的网络拓扑图,目前该系统已在新型运载火箭等多个型号获得成功应用,并打通了从酒泉卫星发射中心、西昌卫星发射中心和文昌卫星发射中心等多个火箭发射场到火箭设计师桌面的数据判读通道。
硬件软件化、软件智能化,这依赖于软件实现的机器学习算法和依赖于大数据技术的数据挖掘和数据应用。装备技术状态变化风险识别与质量信息监管系统是对型号产品数据进行全生命周期管理的产品,该系统能够根据海量装备过程数据挖掘结果对型号产品的技术状态进行监督管理,对批次间产品状态变化进行自动判别对比和风险分析,使用户能全面掌握装备技术状态基线及变化情况。
这些因素极大地开拓了软件技术的发展空间,引领了新一代软件技术,如云计算、虚拟计算、人工智能和超大规模软件系统[3,4]。
型号研制流程分工明确,基本按照军用软件过程研制要求进行研制分工,采用项目经理负责制,需求与设计分离、设计与测试分离,配置管理与产品保证也完全集成到型号软件研制和管理过程中。岗位结构相对清晰,按照研制分工与流程设置,多数单位已经设置与岗位流程相关的项目经理或负责人、需求分析岗位、设计编码岗位、测试岗位等,并且软件配置管理、质量保证相关岗位也同步设置完备,做到了“设计、编程、测试”三分开[6]。
图2 远程自动判读系统的网络拓扑图 Fig.2 Remote Automatic Interpretation System Network Topology Diagram
运载火箭型号往往包括十几个或数十个甚至是上百个软件项目,过去这些软件项目都是孤立地进行设计开发和管理维护的,各软件配置项所使用的开发语言、遵循的技术标准和运行的软硬件环境都是各自规定,互不统属、互不协调,影响软件保证活动的开展:软件独立确认测试、维护、重用困难,系统可靠性得不到保证。同时,大型、巨型软件系统研制的机制和模式尚未有效建立。急需组建比较大的软件团队,有效的分工协作机制,顶层架构设计和全局策划,针对大型软件系统的试验验证。
当前型号支撑软件多为单点解决,软件与软件、软件与系统、软件与全箭之间彼此不很匹配,因此,所取得的成果也是有限的且局部的,未能形成对传统软件研制模式的突破与转型。中国重大航天工程方面,尤其是新一代火箭,对运载火箭型号软件的迫切需求是整体解决方案,急需统一单点应用和各种软件形成的孤岛,“打通数字化生产线”。
在型号发展过程中,对软件提出了国产化、快速计算和海量数据的需求,使得软件需要新的开发技术予以支撑,软件整体体量也将增大,依托平台多样。针对国产化软硬件需求,为了避免由于依托国产操作系统的不稳定造成的软件系统级异常,全面掌握操作系统底层技术,提升软件系统级质量,为关键软件配置项提供一个可控、可靠、高效的运行平台,有必要对国产化操作系统技术进行研究,优化操作系统、编译函数库和集成开发环境[7]。数据在型号研制和总体设计过程中发挥着至关重要的作用,设计数据代表目标值,产品数据代表结果,测试数据则反应结果的稳定性及对目标值的偏离度或偏离规律。运载火箭型号的参数数量从数十个到几千个,所占存储空间从几十KB到几十GB。测试数据反应了系统或单机的状态,对于辨别单机和系统的质量、寿命等都具有重要意义,因此针对海量数据的判读和分析成为了发现问题的最直接也是最有效的方法。数据的判读和分析成为总体设计的重要工作。
a)型号软件研制方面,型号研制模式和软件产品研制模式之间的矛盾尚未有效解决。首先,各型号对相同业务软件需求的不统一,导致型号软件必须定制开发,很难进行重用。其次,软件处于下游更改随意,软件产品化未得到重视和支持。目前,大多数软件按照硬件单机模式管理,软件提出方未建立软件产品的理念,随意要求研制方进行改动,导致软件研制没有明确思路和导向。最后,软件产品得不到充分打磨,精品少。由于目前软件研制处于型号末端,留给软件研制的资源和时间非常少,导致软件研制处于“急”和“快”的状态,不能有效地梳理需求、设计架构和走查评测,很难产出高质量的软件产品。
b)型号软件管理方面,研制逐步向跨单位、跨专业的方向发展,涉及多个领域,管理难度逐渐增大。对于新参研单位,每个单位软件开发经历与能力以及工程化基础水平参差不齐;对于新研型号的研制队伍,整体偏年轻并且人员的综合能力不强。另外,型号系列化研制和其他多型号研制并举,软件状态、参研人力和物力资源集中保障难度显著增大。这些新状况的出现对软件研制过程各环节的工作质量和产品质量构成巨大挑战,急需探索一种行之有效的软件研制技术管理模式以控制可能带来的风险。软件并不是像以往一样仅作为型号核心技术的载体,它是装备的灵魂,是复杂的系统,应参与到顶层设计、统一规划管理。
a)底层、基础、通用的软件技术等未得到全流程的技术保障,操作系统、编译环境、运行环境和数据库等软件环境处于黑箱,无充分的技术力量支撑,在软件安全上是潜在风险。目前,运载火箭型号软件研制集中在软件功能实现上,在整个发射流程中也只是重视软件在“规定动作”的表现。但是,软件作为一种特殊的技术承载形式,有着自身的特殊性。同硬件运行有特定的温度湿度等要求一样,软件有着自身的运行环境,只是这个环境被包装在系统软件开发商的产品中,对外完全是黑箱子。型号研制队伍对软件技术挑战也没有予以充分重视。
b)大量的需求导致使用了大量的软件新技术,新技术上的储备也不充分,例如并行计算、智能算法、大数据存储。可以说,型号软件的技术广度,直接影响到系统拓展的范围,制约了航天运载信息化进程,是推进快速进入空间能力建设亟需突破的瓶颈问题。在当前新型安全威胁面前,实现体系装备、基础设施自主可控是现实需求,航天领域必须在关键系统采用国产自主可控设备,从硬件元器件、软件编译器以及系统运维层面实现自主可控,全面消除当前系统中存在的安全隐患。
运载火箭型号软件的开发和发展在标准体系、管理模式、专业团队、产品体系、支撑工具和发展生态等方面可采取如下对策:
a)管理与流程敏捷化。将型号软件相应的管理标准体系,如《质量管理体系要求》(GJB9001C)、《军用软件成熟度模型》(GJB5000A)和《测试实验室和校准实验室通用要求》(GJB2725A)等与型号管理模式等融为一体,并针对应对变化、提升效率、保证进度和保证质量4 个方面优化软件产品研制模式。
b)专业与团队领域化。软件专业服务的领域宽泛,如果建立按领域划分专业和团队,大致可以分为共性技术和产品团队。共性技术方面,大型软件系统的架构设计可作为一个专业,研制综合管理可独立一个团队。然后,按照产品团队划分:指控测控(主要是网络通信与人机交互专业)、数据应用(主要是大数据存储与大数据分析专业)、作战任务规划(主要包括架构设计、流程设计与地理信息系统GIS 技术等专业)、诸元计算(以算法专业为代表)。还有,软件评测团队可分为综合管理、软件评测、现场可编程门阵列(FPGA)验证和软件系统验证。
c)技术与产品体系化。针对底层、共性、通用、专用的软件技术,建立技术体系、评估技术能力和技术成熟度。在此基础上,建立产品支撑型号的理念,建设以产品为核心的研制体系,基于产品重构队伍组建模式,针对软件产品,从系统级、平台级和模块级形成产品型谱,支撑系统解决方案、集成开放型平台和接口开放型模块三级需求。这三级就是面向最终用户和业务领域技术、面向软件队伍和软件技术、面向具体功能的三级。
d)工具与环境智慧化。以自动化和智能化手段,将最优的软件研制实践经验凝结在包括软件需求分析、设计开发、测试等系列支撑工具里面。运用信息技术对海量数据进行挖掘、采集和梳理成为主流,利用这些先进技术进行基于云的一体化研制环境、大型软件系统的验证环境、软件实验室环境优化。
e)资源与能力协同化。建立长期战略合作的、强有力信得过的科研院所、公司、高校等外部开发力量的体系,进行优势互补、模式共赢,获得长期的、有规划的资源支持,形成软件发展的生态。
由于运载火箭型号软件发展现状和研制特点,需不断改变和调整现软件产品的开发和管理水平,才能降低软件产品的风险,不断提高运载火箭型号软件产品的成熟度。