深空探测器数据管理软件架构设计

2023-11-13 09:39:36张红军李佳津于俊慧杨丽君李承昊
航天器工程 2023年5期
关键词:功能模块数据管理探测器

张红军 李佳津 于俊慧 杨丽君 李承昊

(北京空间飞行器总体设计部,北京 100094)

国外相关行业的科研机构也均设计了各自的软件架构,NASA开发了核心飞行系统(cFS)软件架构,支持其相应航天探测任务的软件研制[1-2];ESA研究了空间电子开放式接口架构(SAVOIR),期望加强航天器电子系统的标准化水平,以提高效率并降低开发成本和进度带来的压力[3-4]。在航空领域,美国发布实施了《通用开放式结构(GOA)架构》标准,该模型概念主要是软件架构的分层和接口分类[5];基于美国航空无线电通信公司ARINC653规范的软件架构,制定了操作系统和应用软件之间的标准接口,引入了程序分区的思想,增强了系统的安全性和可预测性。在汽车领域,由全球汽车制造商、部件供应商等联合推出了一个开放的、标准化的汽车开发系统架构(AUTOSAR)[6-7],该架构可以实现应用程序和基础模块之间的分离,有利于车辆电子系统软件的交换与升级,具有可移植、可拓展、高实时、高可靠、满足功能安全要求的特点。国内高校、科研机构等也均开展了相关软件架构研究,支持相关软件研制工作[8]。

目前常用的深空探测器数据管理软件架构的分层结构不够清晰,存在层间耦合与任务间耦合等情况,信息流传输效率不高,参数类功能实现未结构化,导致大数据量参数装订过程中经常出现地址冲突等情况。本文提出了一种航天器软件架构设计方法,并设计了一种深空探测器数据管理软件通用架构,约束了架构的分层结构、信息流、任务调度方式以及组装方式,控制深空探测器数据管理软件技术状态,提高软件开发复用率,提升软件产品化水平。

1 航天器软件架构设计

本文提出的软件架构设计包括以下内容:

根据软件需求分析软件特点,重点明确各任务通用的共性需求以及任务都有的专用需求。

设计软件架构的分层结构,明确各层的主要功能、层间与层内通信方式等。

设计软件架构各部分功能项的代码生成及组装方式,包括手动编码与组装、工具生成与组装等。

根据软件分层结构、代码生成与组装方式等选择软件架构模式。

梳理软件架构的复用元素,包括复用方式、复用级别、复用类型等,明确各种复用元素的适用范围。

明确任务软件研制技术流程各阶段需要具体完成的架构设计工作,将软件架构设计工作与软件研制技术流程相结合,明确各种工具对流程各阶段的支持情况。

1.1 软件架构的要素设计

通常软件架构包含核心要素和辅助要素两部分,如图1所示。

软件架构设计的关键在于设计或选择软件构件,明确软件构件之间的连接关系以及软件构件的配置约束等,明确软件架构的层次划分关系以及软件各部分功能代码的生成与组装方式等。

软件架构设计过程中要采用有形的方法对软件架构进行描述和表示,包括选择合适的软件架构模式,应用图、表、文字等多种方式对软件架构的元素、功能、结构、接口、信息流等予以表示。

软件架构设计需要考虑软件设计中的可复用元素,采用产品化设计思想,设计通用软件架构、可复用的构件、通用/专用功能模块等,形成可复用元素体系,形成组织资产。

软件架构设计时需要考虑支持软件设计的工具链,支持软件需求分析、设计实现、测试验证等工程活动的实施。软件研制工具链的建设是一个组织级系统工程,需要长期不断地完善与维护。

1.2 软件架构设计与航天器软件研制流程结合

软件需求分析阶段,分析航天器软件需求与软件架构功能逻辑的对应关系、数据流运行结构、硬件环境接口关系等,明确软件架构的功能模块、可复用元素、软件架构的裁剪情况、操作系统选择等。软件概要设计阶段,明确软件架构与其他模块或者构件的接口连接关系,明确软件架构的细化分层与主要功能,完成软件任务划分、任务的调度方法、任务间通信方式、软件内外部接口等。软件详细设计阶段,明确构件的选择与裁剪情况、构件的连接方式、调用关系等,设计软件架构未细化出的功能模块,明确软件各部分功能代码的生成方式和组装方式等。软件编码实现阶段,将软件架构的构件、通用/专用功能模块、调用方式、配置数据等集成进入代码,完成自动生成代码与手工编写代码的组装。软件测试验证阶段,静态代码走查工作的重点确认软件架构三要素,构件实现是否正确,连接件对应的逻辑关系是否准确清晰,配置约束是否便于功能模块的组装以及数据流的传输等;动态测试将基于软件架构的软件配置项装载到目标机中进行全面测试;系统测试完成基于软件架构的软件配置项的航天器整器测试。具体过程如图2所示。

图2 与航天器软件研制相结合的软件架构设计过程Fig.2 Software architecture design process combined with spacecraft software development

2 深空探测器数据管理软件架构设计

2.1 深空探测器数据管理软件特点

数据管理软件是深空探测器中的系统级软件,除了完成传统遥测、遥控等信息流传输与处理功能以外,其功能范围已大幅扩展,包含了其他多个分系统的软件功能,包括天线分系统、采样封装分系统等。

深空探测数据管理软件的具体特征如下。

探测任务的未知因素多,功能需要经过多次更改才能确定状态。探测器与地球站之间通信时延大,地球站通过遥控干预的能力有限,要求数据管理软件的自主管理能力强。探测器多器间信息流传输链路复杂、传输模式多,各器间的通信模式会随着探测器飞行阶段的变化而变化。探测需要配置各种复杂机构来完成资源勘探、样品采集等,数据管理软件需要完成机构运动控制与自主采样管理等功能。由于探测器的工作环境恶劣,例如火星表面的低温环境、沙尘天气等,通常要求数据管理软件完成探测器系统级的、设备级的故障检测与处置以及自主安全保护功能。

2.2 深空探测器数据管理软件架构设计

深空探测器软件架构设计的总体思路秉持产品化设计理念,即该软件架构需要设计成一款深空领域通用的软件架构,控制软件技术状态,提升软件开发效率。

1)软件架构的表示

软件架构采用分层模型。硬件抽象层对各硬件模块进行功能、接口描述,为上层提供访问接口,上层通过各硬件抽象访问底层硬件,实现底层硬件对上层应用的屏蔽。操作系统层完成任务调度、定时器管理、中断管理等,支持上层软件运行。构件服务层包括标准协议构件、通用功能模块以及专用功能模块,为上层应用提供访问接口,支持上层应用完成相应的功能。应用层对用户需求的直接体现,通过其下各层的支持,完成用户的各项需求。分层结构图主要用于软件概要设计时,用来确认软件的层次划分,如图3所示。

注:API为应用程序接口;BSP为板级支持包;UART为通用异步收发器;RAM为随机存储器;PROM为可编程只读存储器;FLASH为快闪存储器。图3 软件架构的分层结构图Fig.3 Layer structure diagram of software architecture

软件架构的组装接口图主要用来表明软件各部分的生成方式及组装方法,指导软件设计分别采取不同的方式完成各部分软件设计及组装。该图主要用于软件编码实现时,用来支持完成对各种形式形成的软件代码的组装,如图4所示。

软件功能项的主体部分由设计师设计并编码实现,联合软件构件、通用功能模块、硬件抽象、配置约束等一起编译链接。软件构件由工具自动从构件库中提取库文件并集成,源码不可修改,各调用接口以头文件形式提供。通用/专用功能模块由工具从组织资产库中提取源文件并集成,源码不可修改,各调用接口以头文件形式提供。硬件抽象由工具从组织资产库中提取源文件并集成,进行适应性修改。配置约束由工具自动生成,包括配置参数、部分固化逻辑等,由工具自动集成。

各部分的生成及组装方式示例见表1。

2)软件架构模式

软件架构模式是针对特定问题的可复用解决方案,通过特定的结构组合提升某方面的质量特性。选择合适的架构模式解决问题就不用从零开始设计架构,从而避开诸多导致麻烦的陷阱[9]。

软件任务之间采用消息队列、功能接口函数等方式进行通信,与其他任务之间设计了约定格式的输入和输出接口,每个任务就是过滤器,任务间通信就是管道,每个任务从输入接口读取数据,完成数据处理后通过输出接口输出。例如,遥测采集任务将多次采集的模拟量遥测数据进行数字滤波处理,处理之后的模拟量遥测数据输出给数据存储与访问任务,如图5所示。

图5 软件架构的管道-过滤器模式示例Fig.5 An example of pipe-filter pattern for software architecture

软件构件设计采用了面向对象思想,构件的实现体是具有一定功能的源程序,封装了数据表示和基本操作,实现对外接口所提供的服务;构件的主结构体接口规定了构件对象的结构,封装了本构件的变量以及子构件,提供本构件所有对外公开的服务,供用户调用;构件的初始化接口规定了构件运行之前必须完成的初始化。构件用户能够通过构件主结构体定义新的构件实例,如图6所示。

图6 软件架构的面向对象模式示例Fig.6 An example of object-oriented pattern for software architecture

软件各功能的运行由探测器的相应事件触发,包括地球站上注遥控事件以及探测器自主探测事件,软件系统在接收或检测到这些事件后对其进行处理,不同的事件输入对应不同的输出结果,例如软件接收到地球站上注的机构运动目标位置后,完成运动路径规划并自主控制机构运动到目标位置,如图7所示。

图7 软件架构的事件驱动模式示例Fig.7 An example of event-driven pattern for software architecture

3)软件架构的复用元素

复用方式与复用级别:软件架构是一种有效的复用形式,采用不同形式完成各项功能开发及组装,形成完整软件。操作系统通常采用配置项级产品化复用,操作系统以lib文件的形式引入;软件构件通常采用模块级产品化复用,软件构件的逻辑代码固化不变,各软件根据需求完成构件的参数配置;软件通用功能模块通常采用模块级复用,各软件完成参数配置并设计相应的调用逻辑和时序;硬件抽象通常采用模块级复用,完成对底层硬件的抽象,实现对底层硬件的访问。

复用类型与适用范围:根据软件架构的复用元素的功能特点不同,各种复用元素的适用范围不同,操作系统软件适用于所有应用软件,遥测、遥控相关构件适用于所有应用软件,健康管理模块适用于所有应用软件,遥测采集抽象适用于所有应用软件,热控管理模块适用于包含热控管理功能的应用软件,机构运动管理模块适用于包含机构运动控制管理的应用软件等,各种复用元素的规模约29000行代码。

深空探测器数据管理软件架构的复用特性示例见表2。

表2 软件架构的复用特性示例Table 2 Examples ofreuse features of software architecture

复用元素的管理:操作系统软件入组织资产库,各任务应用时从组织资产库中提取lib文件,源代码对软件人员不可见,以控制操作系统技术状态。软件构件和通用/专用模块入组织资产库,各任务从库中提取源代码,但不可更改,如果需要修改,则由专人按照软件更动的流程进行更改升级,并通知所有任务分析决策是否需要更换新版构件等。软件通用功能以测试脚本的形式入测试用例库,各任务应用时出库并按照任务参数进行配置更改。

4)软件架构配套工具链

本软件架构配套工具链包括以下几方面:

电子信息接口数据管理系统(EDS),完成航天器系统信息流设计,包括遥测信息、遥控信息、总线通信信息等,作为数据管理软件研制的输入。数据管理软件需求结构化工具(Ereq),支持EDS信息流数据的输入,完成数据管理软件需求的结构化描述,并基于结构化需求实现软件功能的代码生成。向导式软件集成开发环境(EIDE),完成软件工程向导式创建与编译调试、软件功能代码自动组装等。数字化仿真平台(Esim),为软件开发、测试提供航天器数据管理计算机的软件模拟,支持多样故障模拟。软件单元测试工具(Eunit),具备测试用例自动生成、执行以及判读比对能力。软件通用自动化测试平台(Etest),具备基于模板的测试用例批量自动生成、执行以及判读比对能力,支持数据管理软件确认测试与分系统测试。工具链对软件研制流程各阶段的支持情况如图8所示。

图8 软件研制的工具链Fig.8 Tool chain of software development

3 应用验证

我国某深空探测器系统由多器组成,在研制过程中各器数据管理软件均应用本文研究的深空探测器数据管理软件架构,实现各器数据管理软件架构统一、软件任务划分与调度时序统一、相同功能的设计实现与组装方式统一,有效控制各器数据管理软件技术状态,实现软件缺陷率下降15%。基于该通用软件架构的软件研制过程中,应用工具链自动生成、组装部分功能,实现软件配置项复用率由以往类似软件的27%提升到56%。

随着数据管理软件功能越来越复杂、规模越来越大,软件架构的作用越来越重要,适当的软件架构能够较好地适应不同任务的需求变化,具有较好地可扩展性和可移植性。软件架构的概念比较抽象,国内外尚没有比较权威的理论说明软件架构应该详细包含什么内容以及各项内容的颗粒度,软件架构设计是软件研制流程中基于软件系统需求分析结果的顶层设计,由于不同的软件功能与配置环境等均存在细节差异,如果软件架构过于深入到软件功能的实现细节层面,那么该软件架构的适用范围将被限制在较小的范围里,因此,软件架构设计通常表征分层结构、层内业务模块以及层间、模块间的访问关系、访问模式,不同的软件通过修改、更换业务模块或模块接口等形式来适应,从国内外相关行业软件架构也能看出这一点。

本软件架构具有以下几方面设计特征。

(1)深空探测数据管理软件的特征功能独立封装,具有较强的适用性。从底层硬件抽象到上层应用,均进行了独立封装,便于不同任务进行扩展、移植或删除,不影响软件架构的适用性。

(2)可行的软件功能生成与组装方式。软件功能项、通用功能模块、软件构件、硬件抽象等均明确了相应代码的生成与组装方式,包括传统人工编码方式、工具自动生成代码并组装等,对不同任务的软件开发人员具有较强的指导性。

(3)全面复用组织资产的软件产品。软件架构设计很重要的一项作用是协助组织提升软件研制能力。本软件架构的软件构件、通用功能模块等均复用组织资产库中的产品化产品,有效控制任务软件技术状态。

本软件架构的不足之处,在于构件服务层的构件化率还不够高,还存在较多非构件设计约束的传统功能模块,后续软件架构还需要继续扩大构件覆盖范围并提升构件化率。

4 讨论与展望

随着深空探测器智能自主管理需求以及宇航级计算能力的不断提升,软件架构将迎来两方面大的发展。首先,支持在地球站极少遥控干预的情况下,探测器在地外天体更加自主的完成探测任务,智能化程度更高,这就要求软件架构本身需要扩展智能自主管理功能,包括顶层智能自主管理功能、中间智能自主管理构件以及底层高性能计算单元抽象等;其次,随着软件功能更加复杂、规模更大,甚至巨型软件成为常态,需要切实提升软件开发配套工具的支持力度,不仅要求工具能够自动生成更多的软件代码,也要能够自动完成对软件的深度缺陷与故障检测、软件安全性分析与验证等,工具能力的提升需要软件架构的适当调整,软件架构设计之初就需要考虑与工具的衔接与匹配。

5 结束语

本文针对深空探测数据管理软件特点,设计了一种深空探测数据管理软件架构,规定了软件架构的分层结构、各部分业务功能的生成及组装方式等,采用了多种不同的模式来更恰当的表示软件架构,有效控制了深空探测器数据管理软件技术状态,提升了软件各部分功能的复用率,在软件技术状态约束、多种复用方式与复用元素支持前提下,通过配套工具链的应用有效提升了软件开发效率。

猜你喜欢
功能模块数据管理探测器
企业级BOM数据管理概要
定制化汽车制造的数据管理分析
海洋环境数据管理优化与实践
CTCS-2级报文数据管理需求分析和实现
第二章 探测器有反应
小学科学(2020年1期)2020-02-18 06:26:40
EN菌的引力波探测器
第二章 探测器有反应
小学科学(2019年12期)2019-01-06 03:38:45
基于ASP.NET标准的采购管理系统研究
软件导刊(2016年9期)2016-11-07 21:35:42
输电线路附着物测算系统测算功能模块的研究
M市石油装备公服平台网站主要功能模块设计与实现
石油知识(2016年2期)2016-02-28 16:20:16