王善民,张晓峰,王 随,徐 慧
(中国船舶重工集团公司第七二四研究所,江苏 南京 211153)
自20世纪30年代诞生以来,在军事需求和电子信息技术发展的推动下,雷达系统的体制、理论、方法、技术和应用等方面都已得到迅猛的发展。随着电磁环境的复杂化,目标的多样化,任务的多元化,雷达的功能日益丰富,体制日益复杂,信息显示模式日益增加。
显控终端是雷达系统的重要组成部分,肩负着雷达工作状态的监控、雷达目标数据的提取和记录、目标显示、人机交互等任务。随着计算机技术、信号处理技术、数字图像处理技术等的不断发展,雷达显控终端的研制经历了从模拟终端到全数字终端的发展过程。从最初只能提供模拟视频回波与声音,发展到现在既能够提供数字回波与声音又能够提供文字与图像的全软件化终端,显示的目标信息更加丰富多样,交互方式也变得更加灵活便捷[1]。
显控终端的核心就是运行在其硬件平台上的显控终端软件,雷达系统的发展对显控终端软件的设计和开发提出了更高的要求,一个好的软件架构能直接影响显控终端乃至整个雷达系统的性能,显控终端软件架构设计的重要性日益突出。本文分析和归纳了多模式雷达显控终端软件架构设计方式[2-6],提出了一种改进的框架-插件式架构,有效提高了软件开发的效率,在实际使用中取得了良好的效果。
雷达体制复杂度的提高,雷达信息显示模式的增多,数据流量的增大,必然带来显控终端软件复杂度的提高,以往的单界面、单程序的专用显控终端开发模式已经不足以完成当前雷达显控终端的工作任务,因此,多模式显控终端软件架构出现在显控终端软件的设计和开发中。其主要包括3种形式,集合式软件架构、集中式软架构和插件-框架式软件架构。
集合式软件架构主要采用多个子应用程序组合完成显控终端的功能,这种形式的显控终端软件,是多个提供不同功能的实体子程序的集合。此种架构下每个子程序都可以独立运行,显控终端内的数据交互通过各个子程序之间的通讯完成,多采用网络广播报文的形式。这种软件架构可称之为集合式软件架构,如图1所示。
图1 集合式框架示意图
集中式软件架构是对集合式软件架构的发展,这种形式的显控终端软件,仍然是多个提供不同功能的实体子程序的集合。与集合式软件架构的区别是,集中式软件架构采用一个子程序作为管理程序。管理程序提供数据中心、模式切换、调度处理等功能,如图2所示。这种架构较集合式软件架构组织逻辑更加清晰,提高了兼容性和可扩展性,通讯链路利用率高,相对缩短了开发周期。
图2 一个包含4个子程序和一个管理程序的集中式软件框架示意图
随着链接库技术在显控终端软件开发中的应用,插件-框架式软件架构开始出现。
链接库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。一个链接库不是一个独立的程序,无法直接运行,它们是向其他应用程序提供服务的代码,作用在程序的链接和运行阶段,包括静态库和动态库2种形式。
插件-框架式软件架构就是对库的应用,此种架构下,显控终端程序是由1个框架程序加多个插件(库)组成的,每个插件是一个功能相对独立及完善的库。程序执行时,框架程序根据需求,加载不同的插件(库),组合形成某一特定的工作模式,如图3所示。
插件-框架式软件架构的优点是:提高了软件的开发效率,框架开发和插件开发可以同步进行,框架和插件的更新发布也相对独立;便于维护,对框架的维护和对插件的维护可以分开进行,出现问题时,只需要修改相关的插件即可,增加了程序的可靠性和可维护性;利于扩展,要扩展功能可以封装成新的插件,共框架调用。
图3 插件-框架式软件架构示意图
3种软件架构方式各自的特点如表1所示。
表1 3种软件架构对比表
某型系统中,显控终端需要整合雷达、通信、光电等多型设备或多种作战方式的使用需求,跨越单个设备界限,从作战的角度对全系统所有设备的作战能力进行整合,实现统一的操控,以一致的风格进行人机交互。因此,需要设计可扩展的、支持重构的显控终端软件的架构,使得显控终端软件具有动态扩展的能力,单个插件能够无缝替换升级,通过重构集成新的功能模块,满足新的作战需求。为实现上述需求,一种改进的框架-插件式软件架构被提出。
改进的框架-插件式软件架构,采用开放式的软件体系结构,以框架平台和共性插件为基础,提供软件集成环境,采用软件插件技术进行应用软件开发。软件架构分为系统软件层、支撑软件层、业务软件层和应用软件层,如图4所示。
图4 改进的框架-插件软件架构
(1) 系统软件层包括操作系统、驱动和硬件接口等软件。
(2) 支撑软件层主要包括共性插件和综合框架平台,为业务软件层的业务插件开发和应用软件层业务应用组合成各个功能模块提供统一的平台。共性插件主要包括通信接口、用户管理插件等。
(3) 业务软件层是以共性插件为基础,根据业务划分或用户定制,形成一系列的完成特定功能的业务插件,如设备状态、操控、表页显示、态势显示、地图显示、历史记录、数据库管理等。业务软件层的所有业务插件在综合框架平台集成,即插即用。
(4) 应用软件层是根据系统的任务及实际作战应用,动态加载或卸载业务插件,形成或重构为一系列完备的独立的作战功能模式,运行在综合框架平台上。
此软件架构用Qt实现,应用了Qt的信号-槽(Signal-Slot)技术[7]。Qt是一个纯面向对象的跨平台的软件界面开发包,对象之间通过信号-槽机制进行通信,可以实现一对一、一对多,多对多的对象通信。信号-槽机制提供了任意2个对象之间通信的机制。每个对象可以声明自己的信号Signal,声明响应函数Slot,每个Signal可以通过Qt的Connect机制连接到任意数量的Slot,每个Slot也可以接收任意数量的Signal的请求。Qt对象通过Signals声明信号,通过Slots声明槽函数,然后通过Connect函数将2个对象的信号和槽进行连接。
综合框架平台中的所有共性插件及业务插件都派生自一个共有的基类MyPlugin,类MyPlugin中包含2个虚函数Virtual void Init()=0和Virtual void Exit()=0,每个自继承MyPlugin的插件在这2个函数中实现插件加载和卸载时的操作。每个插件在被框架加载前,都需要实例化,采用专用的插件管理类MyPluginManager来进行插件的注册和管理,如图5所示。
本文围绕多模式雷达显控终端软件的结构设计问题,分析和归纳了当前的显控终端软件架构设计方式。针对某型系统中,显控终端需要整合雷达、通信、光电等多型设备或多种作战方式的使用需求,设计了一种改进的框架-插件式软件架构,使得显控终端软件具有动态扩展及重构的能力,满足了新的作战需求。
图5 改进的框架-插件软件架构设计实现示意图