星载导航软件产品线设计方法与应用

2022-08-22 13:18赵小莉邵爱华王慧聪
航天器工程 2022年4期
关键词:产品线构件代码

赵小莉 邵爱华 王慧聪

(航天恒星科技有限公司,北京 100095)

面对航天项目对功能、可靠性、成本、体积、功耗等综合性的需求不断提升以及高密度发射任务形势,系统级芯片(System on Chips,SoC)技术以其集成度高、可靠性好、功耗低等特点逐步成为当前嵌入式系统设计技术的主流,并已被广泛应用于航天领域[1]。星载导航软件就是运行在SoC芯片上的嵌入式软件,随着硬件平台的更新换代和用户需求的不断提升,软件规模和复杂度也随之攀升,软件研发面临三方面问题:①软件产品实现能力无法适应复杂航天器功能日益增长发展需求,近年来不同行业对导航服务多样化功能需求促使对软件开发的实现能力要求越来越高,现有的软件功能模块划分还不能适应不断更新换代的硬件产品以及日益丰富的功能性需求,软件模块的抽象化、通用化和参数化难度大;②软件构件复用程度低、复用管理不规范,每个软件配置项分解成N个独立的功能模块,但设计模块分解的层次和颗粒度不一,彼此存在不同程度的耦合现象,此外,产品主线与变体之间的追踪关系以及变体在同步更新、关键节点版本升级等方面存在复杂关系,对于数百个软件配置项实现复用库、出/入库、项目开发库/受控库及变更控制的集成管理,使用单一配置管理工具工作量浩大;③软件开发及验证效率低,软件代码只能依靠手工驱动进行测试,在代码量规模激增的情况下,无法及时开展代码静态分析和单元测试,变更影响分析不全面,无法实现从需求到测试过程的全过程追踪。

为了适应新的发展需求,提升软件的可靠性和效率,提高软件的管理能力和水平,本文建立满足目前最大需求包络的星载导航软件产品线,利用软件一体化平台工具支撑实现软件产品化、条目化和分支管理,形成可复用软件产品资源库,实现基于构件、架构、配置项产品的完整、一致的软件产品数据包,以提供多项目宇航单机配套选用应用,从而满足高质量、高可靠性要求,适应短周期快速研制需要[2]。通过初步实践表明:该方法适用于目前软件产品化现状,能有效提升软件产品的开发效率,降低代码缺陷率和开发成本,具有一定借鉴价值。

1 软件产品线建设方法

软件产品线是指具有一组可管理的公共特性的软件密集性系统的集合,这些系统满足特定的市场需求或任务需求,并且按预定义的方式从一个公共的核心资产集开发得到[3]。软件产品线的开发和复用模型示意图如图1所示。为实现产品线复用,从需求、建模、软件架构、性能模型、测试用例和组件等所有资产都需围绕可复用目标进行设计,每一条软件产品线的设计要覆盖产品中主要的共性和变化点[4]。项目开发复用软件产品线,形成独立的项目生命周期模型。

图1 软件产品线开发和复用模型示意图

1.1 产品线的设计

产品线的设计是实现软件复用的有效途径,主要目的是实现对特定领域中共性需求的分析、设计和实现,或对一组具有共性的程序作为一个整体进行共性分析,提炼形成领域构件[5]。

首先对客户需求进行综合分析,兼顾历史成熟产品的应用实践以及系统级的中长期发展规划,从中识别软件需求的最大包络,明确公共特性和可变特性,形成完整的软件产品线型谱。依托产品线研制队伍按照独立的产品线生存周期模型进行产品线的开发和验证,以功能独立为原则进行体系结构设计并划分模块,关注模块以及模块间的关系,标准模块间的接口和通信规范,最大限度减少各功能模块间的耦合。经过测试验证,形成基于配置项级、架构级、构件级的三级可复用资产,同时配套形成产品线架构、可复用构件的使用指南等支持文件[6]。

1.2 产品线的复用

对于某特定项目,分析其功能、性能是否可以基于现有产品线进行开发,如果存在可复用的产品线,应进一步分析项目和产品线的共性和差异,确定如何复用产品线,即确定项目的公共特性、可变特性和新增需求。公共特性从产品线的需求、构件和测试获得;可变特性根据项目和产品线的差异,对可配置的参数进行应用适配;新增需求按照项目生存周期模型进行独立开发,包括设计、编码和验证全过程,同时分析并确定该项目的新增需求是否适合纳入产品线[7]。由于开发过程中大部分人力、成本和技术复杂因素都转移到了产品线,故可降低软件项目的开发成本,提高开发效率和质量。

1.3 产品线的管理

产品线的管理内容主要包括需求管理、测试管理、配置管理以及复用管理四个方面。对公共特性的需求进行分解,粒度分解到独立的功能单元,并进行需求描述和标识;对于可变特性,按公共特性处理的同时还需要将可变点描述清楚,例如如何变更、允许的配置范围及意义等。需求管理可实现变更需求影响范围的快速定位。对于公共特性的测试用例,需要进行标识,追踪相应的公共需求标识,同时设置反向追踪关系;对于可变特性需求的测试用例,除设置标识和追踪关系外,要明确对于可变量的测试情况说明,同时所有的测试缺陷闭环情况均需追踪管理。产品线应有独立的配置管理机制,在有若干新功能纳入或者若干问题解决方法纳入时进行版本升级[8];项目是产品线的支线,其配置管理既要能反映项目的版本演进,又要可追溯复用产品线匹配版本。项目经产品经理分析后,对于其中有复用前景的功能或模块,在通过项目的测试和客户的验证后,作为可复用部分纳入产品线核心资产库,增加产品线新版本的说明,便于后续的项目根据实际情况进行复用。

2 导航软件产品线的应用实践

航天恒星科技有限公司(以下简称公司)研制的星载导航软件,是卫星测控系统标准通用单机配套软件产品,具备高可靠、适用场景多、功能覆盖全面等特点,满足不同尺寸卫星不同平台、不同轨道高度的适用需求,可以应用于测绘、遥感、编队飞行、交会对接等多种应用场景。为了追求更高的目标,不断提升自身产品质量和软件研制效率,公司在软件复用和产品线研制方面进行了诸多探索和实践,现建立了星载导航软件SoC平台1.0和2.0版本产品线,实现了软件产品需求、测试的条目化,正深化应用和推广导航软件产品线技术。

2.1 导航接收机软件产品线设计

1)配置项级产品线的设计

根据导航接收机型谱建立原则,兼顾产品继承性、通用性以及卫星应用特点和产品可持续发展等因素,将星载导航软件产品按照各单板进行划分,以各模块的功能作为特征参数,在不同硬件平台(SoC平台、数字信号处理DSP+可编程门阵列FPGA平台等)的基础上再对软件模块进行细化。SoC平台的产品包括基本导航功能和可选配的短报文等功能。其中导航接收机SoC2.0平台软件组成图如图2所示,将软件根据功能化分成四个配置项:导航信息处理软件、定轨软件、接口软件和接口FPGA软件。导航信息处理软件运行在基带板上SoC芯片内部从核CPU中,主要完成导航信号的捕获跟踪、获取测量值以及定位解算等功能;定轨软件运行在基带板上SoC芯片内部主核CPU中,主要完成SoC芯片控制、定轨解算、数据交互等功能;接口软件及接口FPGA运行在接口板上,主要完成与星上设备的数据交互以及系统监控及故障处理功能。四个软件配置项分别形成独立的产品线,每个软件产品线均构建了配置项级、通用架构级和构件级三个层级的可复用产品。在项目应用时,若板级功能定义与配置项级产品线功能需求定义完全一致未发生变化,即无需参数配置及功能扩展或接口变更,则可直接沿用某一条配置项级产品线[9]。

图2 导航接收机SoC2.0平台软件组成图

2)架构级软件产品线的设计

软件产品线的通用架构是产品线的顶层结构属性,描述组成组件之间的相互关系,是进行软件复用的最基本结构。在架构复用时,关键是要分析任务复杂度以及硬件中断接口是否影响程序时序,架构复用后可再根据需求选择相应构件在各任务及中断中进行使用。以SoC2.0平台定轨软件的顶层架构为例,软件产品线采用前后台的系统执行架构,提供了三个任务调度模块(初始化任务、1 s任务、空闲任务)和四个中断模块(核中断、单点失效SPF中断、定时器中断、通用异步收发器UART中断)组成的初始化任务+后台任务+中断+定时任务四级任务调度通用框架。

3)构件级组件的设计

在通用架构的基础上,通过各种低耦合、独立构件的组合,最终实现软件的全部功能[10]。现将所有构件区分为A、B、C三类:A类构件为在各种不同的工作环境下能够保持不变无需更改的构件,如定轨软件与导航信息处理软件的通信构件、定轨计算功能中的卡尔曼滤波启动、轨道内插等构件、在轨维护功能构件、内存下卸构件以及各中断的执行构件等;B类构件为需更改配置参数而不更改软件代码就可满足项目任务需求的构件,如根据使用的导航系统以及捕获频点的多样化需求进行动态调整的参数,包含射频芯片及频综芯片的配置参数、定轨计算功能的输入数据解析、定轨计算功能的门限判决等;C类构件为按既定接口约束修改或新增代码才可实现的构件,可以在对现有系统影响最小的情况下进行功能扩展,如某类星座频点的定轨解算,则需要对定轨计算功能中的输入数据解析、几何学单点定轨等构件进行更改,这种构件更改对产品线的结构和代码的改动量是最小的。

2.2 软件产品线复用实践

近期公司新研制的某项目任务,用户新增了Galileo导航星座需求,同时硬件环境由DSP变更为SoC芯片,产品经理在对定轨软件进行总体功能分析时,综合考虑成本、进度、可实现性等因素,选择相似度最高的SoC2.0软件产品线为基线,确定了其中的定轨软件采用架构级和构件级复用。经进一步分析软件需求后具体识别出复用资产库中24个A类构件,4个B类构件,3个C类构件。频综芯片配置、射频芯片配置作为B类构件通过更改配置参数能够满足新增导航星座的需求,SPF硬件发送接口与接收接口配置作为B类构件能够适应与之交互的接口软件CPU类型变化的需求。跳秒计算构件、定轨计算功能的输入数据解析构件、几何学单点定轨计算构件作为C类构件需要针对新增的导航星座需求增加相应星座的处理程序。故软件设计师在实施时从资产库中选择定轨软件的整体架构作为顶层架构设计构件使用,再分别选择相应构件,同时包括与之对应的设计、代码、测试用例等。根据SoC2.0产品线架构设计对所有A、B、C类共性构件进行组装,其中对于B类参数可配置构件,生成配置文件直接进行FLASH烧录,对于C类可扩展构件进行定制开发。所有构件经集成测试及验证确认后将随整机交付。

对于不能复用的需求,按照体系文件规定的开发流程进行需求条目的分解、设计、开发并进行完整的验证,同时产品经理评估项目中不能复用的新需求,具有通用性及应用前景,可提炼为复用条目,并纳入产品线管理,如Galileo导航星座中的C类需求跳秒计算包含于新增导航星座需求一并纳入导航接收机产品线。项目中可复用部分已经过完整验证,项目管控重点可集中在对新需求的设计、实现、测试以及完整的组装测试和确认测试,便于集中资源,降低代码的开发量,提升研发效率和质量。项目应用过程中,复用条目发现的缺陷通过修复和验证后,需同步更新产品线,其他项目可保持同步更新。

2.3 软件一体化平台对产品线复用管理的支持

公司引入软件研制一体化平台工具,整合开发工具、测试工具、配置管理工具,通过资产库和工具的数据交互可有力支持产品线及项目的需求管理、测试管理、配置管理和复用管理。

基于一体化平台的产品线应用如图3所示。

图3 基于一体化平台的产品线应用示意图

平台对软件需求实施条目化管理,每一条需求与相应的设计、代码及测试用例的双向追踪关系一经定义,即可自动维护检索。对于B类和C类需求,在需求、设计、代码和测试用例条目中均对可变点附加详细说明。当产品线复用时,只需一键复制一体化平台资产库中需求条目,即可从版本控制工具SVN中自动提取可重用代码,同步复制相应的软件设计、测试用例和其他文档。当需求变更时,根据已定义的追踪关系可快速定位到需要修改的设计文档、代码和测试用例集,对于B类和C类需求可直接获取变更点的现状及全貌。复用后的产品可通过平台自动触发测试工具进行各级测试验证、比对测试结果、生成问题单、触发问题单的闭环流程。对于共性新增功能可通过更改构件属性自动升级产品线版本,产品线是独立功能的配置项,每个构件可以在产品线大版本的基础上维护自己独立的版本升级。项目根据需要从产品线建立项目独立的配置管理分支,选取特定版本的产品线或其某个版本的构件。若因缺陷升级产品线,则可根据已定义的追踪关系,触发相应需求、设计、代码、测试用例等的变更,完成验证发布后项目可自动获得当前新版本代码,编译连接即可同步升级。经软件一体化平台支持的产品线复用,使项目研制周期相比预期缩短一半,整体提高了研发效率。

3 结束语

通过解决宇航领域软件产品化过程中遇到的问题,引入软件产品线的管理方法,借助软件研制一体化平台工具,建立软件复用资源库,积极推进软件产品线建设,持续实现软件跨硬件平台的构件和架构复用。2019—2021年星载导航软件,在代码规模激增近70%的情况下,千行代码缺陷率却下降了50%左右。基于一体化平台工具实现软件产品化,将提升软件的研制能力,快速实现从开发、集成、测试到应用全过程、全要素、全数据的管理,助力航天企业的“高质量、高效率、高效益”发展。

猜你喜欢
产品线构件代码
钢筋混凝土构件裂缝控制
神秘的代码
基于构件的软件工程技术与理论方法探讨
大投入 大制作 大产出
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
微软和联想宣布合作
近期连续上涨7天以上的股
创新引领阅读的未来
基于构件的软件开发实践