朱 伟,许春雷,孔 军
(中国船舶重工集团公司江苏自动化研究所,江苏 连云港 222006)
指挥控制系统作为作战系统的核心子系统,是作战信息处理中心和指挥员实施指挥的直接部位,通常要同时完成情报综合处理、作战辅助决策、武器综合控制等多个独立功能[1]。传统的指控系统应用软件按照面向过程的方法进行设计,软件体系结构较为复杂、模块之间耦合性较强,系统的可移植性、可扩展性较差,且难以进行多任务应用软件的并行开发和调试[2]。
研究基于功能模块部件的设计方法,对实现指挥控制系统中各独立功能模块的通用化和并行设计,提高功能部件的复用性和系统可扩展性、可移植性,均具有重要的意义。
部件是包含在体系结构中实际对象构件化的结果,部件的处理完全放在自身功能的实现上,可有效避免多个对象间互操作引起的整个软件系统复杂度的增加[3]。功能部件是指挥控制系统中具有特定和独立功能的软件模块,如传感器信息处理部件、信息综合处理部件、鱼雷发控部件、导弹发控部件等,其实现主体为消息处理进程。功能部件由消息进行驱动,可自主实现通信信息处理、定时信息处理、人机交互处理功能,具备高内聚、低耦合的构件化典型特征。
图1 功能部件消息处理进程示意图
1)组成
功能部件由消息处理进程、通信信息处理模块、定时信息处理模块(如周期情报综合处理模块)、人机交互命令处理模块和部件局部数据空间构成。消息处理进程响应通信、定时和人机交互消息,调用相关功能模块完成相应功能。另外,功能部件还可按照需要在进程初始化时定义自己的局部数据空间。
2)功能
功能部件作为完整、独立的功能单元,可完成通信报文解释、信息处理、显示和人机交互命令处理等功能。
3)工作方式
功能部件采用消息驱动的工作方式,即功能部件的消息处理进程无限地等待、接收和处理三类消息:定时消息、网络接收消息和人工命令消息,维持本功能部件的正常运转。功能部件运行示意如图1所示。
以鱼雷发控部件为例,消息处理进程设计如下:
4)特点
● 低耦合、高内聚
功能部件是一个独立的功能单元,在功能部件内部实现该功能部件的通信信息处理、定时信息处理和人机交互等功能;功能部件之间没有交互联系,仅通过消息队列与通信信息预处理、定时处理和人机交互信息预处理三个基本模块联系,具有低耦合、高内聚的典型特征。
● 易于实现并行开发、调试
功能部件之间不存在耦合关系,各独立功能部件可基于基本框架(通信信息预处理、定时处理和人机交互信息预处理三个基本模块)并行开发、调试。功能部件开发完毕后,可生成目标代码,系统生成时和其他部件目标代码一起链接生成系统可执行代码。
另外,为满足系统不同功能的实时性要求,可在系统建立其对应功能部件的消息处理进程时调整其优先级实现;为防止优先级较高的功能部件运行时间过长影响其他功能部件的实时性,可在功能部件进程初始化时进一步把处理器资源占用时间比较长的模块设置为优先级相对低些的子进程,功能部件以启动子进程方式调用消息处理过程;为避免功能部件消息过多造成消息队列阻塞,可在建立系统消息队列时适当增加消息缓冲区数目。
基于功能部件的指挥控制系统软件采用层次化体系结构,除各独立的功能部件外,还包括通信预处理、人机交互预处理和定时处理三个基本模块。系统体系结构如图2所示。软件最底层为平台层,完成和硬件基本交互功能;基本模块位于功能部件和平台之间,接收和预处理通信、人机交互输入和定时信息,并通过向功能部件发送格式化的消息驱动其运行;功能部件层为可配置的功能部件,是完成系统相应功能的主体。当系统配置或应用需求发生变化时,只需根据需求对不同的层次进行重写和替换,不会影响其他层。如对外通信介质变化时,只需要修改相应通信模块的内部实现即可,对功能部件来说,完全感觉不到通信介质的变化,有利于快速实现指挥控制系统配置的升级和功能部件的改进。
通过对指挥控制系统的需求进行分析,可抽象、规范化基本模块和各功能部件之间的消息接口,通用、稳定的接口可提高功能部件的独立性和系统的可扩展性,新增新的功能需求时,只需按照规范化的消息接口开发新的功能部件并添加到系统中即可,不会对其他功能部件带来影响。
采用层次化体系结构和规范化的信息接口,增强了系统的可剪裁性和可移植性。系统可根据需要对功能部件灵活配置,并设定功能部件的优先级;另外,系统可针对项目的实际应用环境的需要,只需对相应部分进行修改,即可实现在新平台上应用,而不需要重新设计整个嵌入式软件系统。
从图2上可以看出,功能部件之间没有交互关系,功能部件只和通信信息预处理、人机交互预处理和定时处理模块具有信息交互关系,软件体系结构较为清晰;通信信息预处理、人机交互预处理和定时处理模块和功能部件之间通过消息进行交互,系统各模块之间耦合较为松散,系统中一个功能部件异常不会影响其他功能部件的运行,具有较强的健壮性;功能部件和通信信息预处理、人机交互预处理和定时处理模块之间相对规范、固定的消息格式,使得只要稍微增减基本模块和功能部件之间的消息,便可实现系统的扩展和剪裁;功能部件和系统硬件并不直接交互,系统软硬平台变化后,只需替换相关驱动程序便可实现系统在不同平台上的移植。
功能部件的可剪裁性、扩展性,以及系统较好的移植性,使得新的系统研制时,可根据系统使命任务,通过重构其他成熟系统的功能部件,快速生成面向不同任务的指挥控制系统,从而显著缩短系统的开发时间,降低了系统开发成本。
图2 基于功能部件的指挥控制系统软件体系结构
基于功能部件的软件开发步骤主要包括功能部件划分、部件接口需求分析、接口消息设计、基本模块设计开发、功能部件设计开发和系统集成、测试等几部分,其中基本模块设计开发和各功能部件的设计开发可在接口设计的基础上并行开展,以缩短开发周期、提高开发效率。具体开发流程如图3所示。
1)功能部件划分
按照对外接口相近、功能相关、界面相似的原则,统筹考虑功能任务中通信、人机交互和周期信息处理要求,兼顾考虑功能部件的独立性和稳定性,合理划分确定系统功能部件,通信、人机交互和周期信息处理相近的模块可以合并设计为一个部件,如鱼雷发控和水雷发控可以作为一个鱼水雷发控部件来设计。
2)部件接口需求分析
根据各功能部件信息输入需求,分析部件信息通信的内容、格式、精度等;按照人机交互输入需求,确定人机输入命令内容;根据系统信息处理频率,确定定时处理周期。
3)接口消息设计
根据部件接口需求分析结果,确定接口消息的类别、长度、周期、属性和详细格式,作为功能部件设计和基本模块设计的依据。
4)基本模块和功能部件设计
根据接口消息,并行开展基本模块和各功能部件的设计、开发。
5)系统集成和测试
基本模块和部件设计完成后,集成测试接口设计的正确性和系统的功能、性能的符合性。
图3 基于功能部件的指挥控制系统软件开发流程
传统的嵌入式系统下指挥控制系统软件按面向过程的技术和方法进行设计,存在着系统各功能模块间耦合紧密,系统扩展性较差,升级、维护和移植困难等问题。本文在功能模块的部件化设计的基础上,建立了基于功能部件的软件体系结构,提出了基于功能部件的软件设计方法。某舰艇指控系统研制实践表明,基于功能部件的指控系统具有重用性好、扩展性强,易于移植和并行设计等优点,可大幅提高开发效率、节约开发成本。该设计方法可应用于其他领域嵌入式控制系统设计。
[1]赵祖铭.潜艇指控系统技术和发展分析[J].指挥控制与仿真,2007,29(2):1-4.
[2]江坤,张莉等.面向舰载指控系统开放式框架设计与实现[J].计算机应用,2009,6(29):393-401.
[3]陆军,张育平.基于构件的软件体系结构实现技术[J].计算机工程与应用,2002(4):115-117.
[4]David E.Simon.嵌入式软件教程[M].陈向群,等译.北京:机械工业出版社,2005.
[5]Clemens Szyperski,etc.构件化软件-超越面向对象编程[M].第2版.王千祥,等译.北京:电子工业出版社,2004.
[6]Katharine Whitehead.基于组件开发[M].王海鹏,等译.北京:人民邮电出版社,2003.
[7]潘锦平,等.软件系统开发技术[M].西安:西安电子科技大学出版社,1999.