基于框架的开放式舰载电子战嵌入式软件设计

(整期优先)网络出版时间:2023-06-14
/ 3

基于框架的开放式舰载电子战嵌入式软件设计

黎殿来

(中国船舶集团公司第七一○研究所,湖北 宜昌 443003)

提出了一种基于框架技术的开放式舰载电子战嵌入式软件设计方法,对舰载电子战嵌入式软件的开放式架构设计,软件框架的设计决策、软件构件接口抽象与实现要点进行了重点阐述,并基于软件框架对典型的舰载电子战管理控制和信号处理软件进行了示例设计,有效提升了舰载电子战软件的设计质量、开放性和复用度。

关键词 舰载电子战;嵌入式软件;软件框架

1


0

随着时代的发展和技术的进步,舰载电子战嵌入式软件呈现出下面几个明显的趋势:(1)              软件规模越来越大:随着电子战系统告警、侦察、定位、干扰、对抗、协同等功能的不断拓展,作为电子战系统灵魂的嵌入式软件的规模也从数千行扩展到数万行的规模。现代电子战系统软件规模只有几万行,四代机电子战系统软件的规模已达到50万行。(2)              软件复杂度越来越高:随着电子战业务需求的扩展和硬件功能的“软件”化,舰载嵌入式软件往往需要由多个CSCI相互协作才能完成特定的功能,这些CSCI间的协作过程变得越来越复杂。(3)              安全性要求越来越高:软件失效可能引起的后果也越来越严重,轻者导致无法完成任务,重者导致设备损毁,甚至危及生命。

当前舰载电子系统正向开放式、模块化、综合化的方向发展,需要在软件架构上做出改进。传统的结构化的程序设计方法已不能适应当前舰载嵌入式软件研发的需要,基于软件框架和构件的软件设计方法将成为缩短软件研发周期、提高软件安全性、构建软件产品平台、实现软件工业化的必由之路。

1软件框架和构件技术

软件框架(Software Framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件构件规范,也指为了实现某个软件构件规范时,提供规范所要求之基础功能的软件产品。框架的功能类似于基础设施,与具体的软件应用无关,但定义并实现最为基础的软件架构和体系。

软件构件(Software Component)是面向特定软件体系架构的可复用软件模块,是指一个对象(接口规范、或者二进制代码),它被用于复用,接口被明确定义。构件是作为一个逻辑紧密的程序代码包的形式出现的,必须遵循软件框架的约束。构件必须具备的属性有:(1)有用性,构件必须提供有用的功能;(2)可用性,构件必须易于理解;(3)复用性,构件必须能被复用;(4)适应性,构件应该易于通过参数化等方式在不同语境中进行重配置;(5)可移植性,构件应能在不同的硬件运行平台和软件应用环境中工作。

2舰载电子战嵌入式软件体系结构

舰载电子战嵌入式软件的业务模式主要包括数据处理、信号处理和管理控制功能。图1给出了基于软件框架的舰载电子战嵌入式软件体系结构,包括软件框架和软件构件两部分。软件构件根据用途分为驱动层、业务支持层和业务逻辑层。

图1 基于软件框架的舰载电子战嵌入式软件体系结构

(1)舰载电子战嵌入式软件框架:作为电子战应用软件的基础设施,提供软件构件定义与管理、消息通信、操作系统接口封装、调试日志、看门狗管理等公共服务。

(2)驱动层:完成电子战软件对外通信、数据采集和控制接口的抽象化封装和适配。

(3)业务支持层:承担电子战应用软件的对外通信(传输层和链路层)数据接口功能,调用驱动层接口,完成电子战业务的硬软件设备访问接口转换。可进一步分为业务支持节点和协议组件两种,实现点到点数据传递、数据组包解包、传输层流量控制、传输层差错控制和字节顺序等。

(4)业务逻辑层:作为电子战软件应用层,基于业务功能和需求,实现可复用的电子战软件构件,分为功能节点和功能组件两类,例如:XXX辐射源定位节点,XXX辐射源信号分选节点、XXX辐射源距离估计组件、XXX辐射源威胁等级评估组件等。

电子战软件构件间的通信数据按照传输路径可划分为码元(比特、字节、双字、四字节)、数据包、报文和消息四类,相应的通信协议也分为物理层、链路层、传输层和应用层四层。

(1)码元(比特、字节、双字、四字节)是驱动层软件构件与物理硬件间的数据交换接口,设计要点包括码元的选择、校验、数据传递的方式(中断、查询)等。

(2)数据包是业务支持层构件与驱动层构件的数据接口。设计要点包括:a.数据包包头包尾识别码、长度、格式、路由、时间戳、包校验。b.数据包从码元流的提取、流量控制。c.载荷数据的加解密。d.逻辑链路的建立和维持。

(3)报文是业务支持层构件内部的数据,是业务消息在通信软件构件间进行数据交换的映射。设计要点包括:a.消息到报文编码的映射。b.消息的数据元素之间的位置关系。c.消息的优先级。d.消息的数据元素的高级数据类型到字节组合之间的变换。e.业务支持层报文传递的方式(推、拉)。

(4)消息是业务逻辑层中应用软件构件间以及业务逻辑层应用软件构件与业务支持层通信构件的交互数据,是带有领域语义的数据结构与标识。

3舰载电子战嵌入式软件框架设计

舰载电子战嵌入式软件框架的设计决策包括:

(1)消息传递方式:软件构件间的消息传递采用异步消息和同步调用两种方法,适用于业务逻辑层内、业务逻辑层与业务支持层间软件构件进行消息传递。异步消息采用基于优先级的消息队列方式实现, 解决构件间的耦合问题。同步调用采用函数调用方式,提升响应速度。

(2)任务调度方法:任务调度采用round-robin (基于优先级的时间片轮转)调度算法,由操作系统提供调度支持。

(3)通信可靠性:通信可靠性包括不丢和无错设计两方面。“不丢”的设计决策为:a.在驱动层与业务支持层之间使用消息队列缓冲报文来应对通信链路与处理速率的不匹配。b.在业务支持层定义数据包中的包数目和包序号,检测数据包丢失。c.在业务支持层定义报文中的流水号,检测报文丢失。d.在业务逻辑层定义响应报文,确认消息的到达。“无错”的设计决策为:d1.在业务支持层定义数据包中的包校验码,检测出错。d2.在业务逻辑层定义响应报文,确认消息的有效性。

(4)数据可靠性:a.每个构件在初始化时预分配内存资源,包括存储空间、信号量、消息队列、管道和任务等系统资源。其中数组、消息队列等类型变量要求预先计算最大长度进行分配。b.接口数据必须进行验证后才可使用。c.CSCI的每个任务必须估算其堆栈最大使用量,并按至少2倍配置其任务堆栈区。d.使用看门狗机制周期检查软件的健康状态。e.使用日志记录软件运行过程。f.使用心跳消息使上一级软件可以感知本软件的存活性和故障情况。g.对共性数据等临界资源进行访问保护。

(5)复用性:a.软件构件采用抽象基类设计。b.记录、消息总线等公共服务组件采用服务类设计。c.采用可配置化设计,例如:针对调试信息打印、看门狗和日志等服务设置使能标记等。

(6)易用性:通过定义公共组件类和公共节点类,对软件构件进行统一命名。

基于以上设计决策的电子战嵌入式软件框架组成见图2,主要由构件公共节点类和公共组件类、构件管理、消息总线、调试记录、操作系统隔离、工具类和看门狗构件组成。

图2舰载电子战嵌入式软件框架结构

(1)公共节点类:作为周期任务,是所有业务逻辑功能软件构件和业务支持软件构件的基类。节点通过加载不同的配置可实现软件功能重组,例如干涉仪定位节点既可配置为采用4基线干涉仪数据,也可配置为采用5基线干涉仪数据。

节点运行的流程见图3,节点初始化完成后,通过消息处理来接收其他节点或者组件发送的消息,通过周期处理来进行状态监控和数据刷新。

图3 公共节点运行主流程

节点通过向电子战嵌入式软件框架注册输入和输出消息来进行数据交换。通过消息注册接口,可以为每个节点定义一系列的输入输出消息,见图4。其中每个输入消息需绑定一个处理函数。

图4 消息注册

(2)公共组件类:作为函数调用使用,是所有功能组件、协议组件、驱动组件的基类。

(3)构件管理组件:管理电子战嵌入式软件框架上所有的节点和组件,完成构件初始化、构件消息注册和消息路由映射。图5描述了消息路由映射的关系示意。

通其中A_Node的输出消息M_Out1连接到了C_Node的输入消息M_In1;B_Node的输出消息M_Out1连接到了A_Node的输入消息M_In2;C_Node的输出消息M_Out1连接到了B_Node的输入消息M_In2。消息路由可以支持1对1,1多多,多对1等多种方式。

图5 消息路由映射

(4)消息总线组件:为节点间、组件间提供基于优先级的数据交换功能,分为异步消息和同步调用两类。可采用文献[8]所描述的DDS软总线来实现。调试记录组件:为节点和组件提供调试分级打印显示和记录的功能。其中调试等级分为错误,警告,优先,普通4个等级,可通过定义不同等级的开关来选择性的进行消息输出。

(5)操作系统封装类:提供操作系统相关操作的接口封装,包括:内存分配服务、任务、消息队列、信号量、时间服务和中断服务。

(6)工具类:为软件框架和构件提供数据存储、专用算法库和专用数据等基础功能。主要实现的构件包括:文件记录、内部消息链表、消息组包缓存、快速排序插件等。

(7)看门狗:为节点健康运行提供标准、统一的监控和复位方法。提供了基于多节点的心跳监测和基于节点任务状态监测两种异常诊断方法。

4软件构件设计

软件构件的设计决策:

(1)分层:根据构件的用途,将构件分为业务逻辑层、业务支持层和驱动层三层。

(2)分类:根据构件的类型,将构件分为节点和组件两类。节点是可以基于框架独立运行的任务。组件是被其他组件或者节点调用来完成特定的功能函数集。

(3)复用性:节点和组件均派生自框架中的公共构件类(公共节点类和公共组件类),采用统一的接口和封装形式。节点可以实例化多个对象进行复用。组件都按照可重入的模式进行设计。

业务逻辑层构件的结构见图6。业务逻辑层构件完成与应用需求和业务相关算法与逻辑处理,根据类型可以划分为功能节点和功能组件两种。功能节点独立或者调用一个或者多个功能组件一起完成某项特定的业务功能。

6 业务逻辑层组件的结构

业务支持层构件的结构见图7。业务支持层构件完成应用软件对外的数据接口和硬件设备访问接口转换。可划分为业务支持节点和协议组件两种。业务支持节点独立或者调用一个或者多个驱动组件一起完成某项特定功能的接口通讯功能,并调用协议组件进行接口数据解包和组包的工作。协议组件完成码元数据及报文的转换工作。业务支持节点可选择不同的适配协议组件,具有高度灵活性。例如:A课题和B课题都使用了RS422通讯,但是A课题和B课题的通讯协议不一样,通过新开发一个B课题的通讯协议就可以完成适配工作,而不用更改RS422通信节点。

7 业务支持层组件的结构

驱动层构件的结构见图8,主要完成对外通信、数据采集和控制接口的软件封装和映射。根据硬件的类型和使用平台,可以开发不同的驱动。

8 驱动层构件

5结束语

本文通过引入基于框架的设计方法对舰载电子战嵌入式软件进行设计,统一和规范了舰载电子战嵌入式应用软件的体系结构,使得电子战系统软件架构具备开放式软件架构特征;通过软件框架、业务逻辑层、业务支持层和驱动层软件构件的开放式设计与复用,在提升软件质量的同时使得软件开发人员聚焦应用开发,有效提升了舰载电子战嵌入式软件研发效率;通过软件框架的隔离效应可支持应用软件在不同操作系统间的快速部署,使得电子战系统具备快速迭代升级能力。

参考文献:

[1]李亚晖,张亚棣,郭鹏.舰载嵌入式软件的安全性机制研究[J].通信学报,2015,36(1):1-6.

[2]张薇.分布式舰载电子系统通用开放式软件架构研究[D]. 电子科技大学硕士论文:2013.

[3]刘兆存, 范玮佳. 软件过程中可复用需求分析[J]. 重庆理工大学学报: 自然科学版, 2012,  26(1): 53-60.

[4]夏榆滨. 软件构件技术[M].北京:清华大学出版设, 2011, 1-100.

[5]邢亮. 基于IMA 架构的舰载软件开发平台研究与实现[J]. 信息通信, 2016(3): 127-128.

1