您好, 访客   登录/注册

基于OSGI的软构件实时数据处理子系统设计与实现

来源:用户上传      作者:

   摘   要:实时数据处理子系统是试验指挥控制系统的重要组成部分。基于软构件技术对其进行设计并部分实现,为今后试验指挥控制系统跨平台开发和使用提供了可行的技术方案和实施途径。
   关键词:试验指挥控制系统;软构件
   中图分类号:TP319                                             文献标识码:A
  Design and Implementation on Real Data Process Sub-system Based on OSGI
  LI Qiang?覮,TUER Kan-jian,WANG Yan
  (China Huayin Ordnance Test Center,Huayin,Shaanxi 714200,China)
   Abstract:Real data process sub-system is an important part command and control system. This paper designs and partially realizes the subsystem based on software component ,which provides a feasible technical scheme and implementation approach for  future development and use of the test command and control system across platforms.
   Key words:command and control system;software component
   随着武器装备建设从机械化逐步向信息化方向的不断发展深入,靶场试验指挥控制系统(以下简称指控系统)在武器鉴定试验中发挥了越来越重要的作用。指控系统在武器鉴定试验中用于试验信息处理、信息应用以及试验信息系统的运行管理,其主要功能包括实时接收试验数据、图像、话音等信息,处理弹道(航迹)等参数,显示试验态势、轨迹曲线、参数列表、视频图像,并向外发送引导信息、指挥信息,为完成靶场各类试验的指挥、决策提供支持。作为指控系统核心部件的实时数据处理子系统则通过对接收的测试数据进行综合处理,为试验综合信息显示和设备引导提供数据,可以说实时数据处理子系统工作的正常与否直接关系到指控系统运行状态的好坏,也在一定程度上直接影响了试验的进程。随着军队信息系统国产化进程的推进,靶场对装备试验中使用的指控系统开发应用提出了更高的要求。在实际应用中使用软构件技术开发可复用构件,再通过构件的重组构建跨平台的实时数据处理子系统,可以大大减少在系统在开发应用过程中的重复劳动,提高开发效率。为此,本文采用软构件技术,研究跨平台某试验指控实时处理子系统设计,为实现常规试验靶场指控系统软件的国产化应用提供了新的解决思路。
  1   软构件技术
   軟构件技术是当前最重要的软件复用技术[1],它的核心就是“即插即用”的软构件。软构件是系统开发过程中的各种对象(包括用户界面、对外接口等)和对象功能进行封装后构成的软件部件[3]。设计人员通过对软件部件组合并以软构件容器为基础可以快速生成应用系统,从而进一步提高软件开发的可复用性、效率及质量。常规武器试验作为一个特殊的领域,与航天及其他大型武器系统试验不同,主要特点表现为任务周期短、任务间转换快,这样就要求其相应的信息系统具备精确、高效及快速等特征,因此采用软构件技术对常规武器试验信息系统开发,可以完全满足高效性、快速性要求,也使应用系统拥有较好的健壮性和柔性。同时,软构件技术的开发模型与平台比较成熟,在进行应用系统开发开发时,可以提供统一标准,符合靶场一体化信息系统建设要求,也有利于未来通过系统软件部件的综合集成来实现各类信息系统间的互联、互通、互操作。基于软构件技术来设计实现指控系统各个分系统,可以针对不同的试验任务需求,进行系统的专用软构件重组和复用,形成新的系统,从而大大提高系统的可靠性和可复用性。
  1.1   软构件系统的一般开发过程
   软构件系统开发通常包括五部分:一是领域构件的开发,通过分析领域知识、专家经验以及系统资料系统需求分析,形成系统领域构件和专用软构件;二是建立软构件库,将软构件提交入库管理;三是软构件获取和调整,将软构件库中软构件按照实际应用系统开发需求进行调整并修改提交入库,以适应应用的需要;四是系统软构件的组装,将软构件库中的满足应用需求的软构件提取并组装到应用系统,测试并完成发布。通常完成软构件应用系统的构建,还必须建一个基础设施,它能够提供软构件协同的模型和软构件交互并完成共同任务的特定服务。基于软构件的信息系统开发过程[4]如图1所示。
  图1   基于软构件的系统开发过程
  1.2   基于OSGI的软构件系统总体框架
   OSGI是一种较为通用软构件开发平台,它是面向Java语言的一种动态模型系统;它还为应用系统的构件化开发定义了一个面向服务的基础架构。OSGI把应用程序划分为多个构件,多个构件之间可相互动态发现并能够通过服务模型管理它们之间的依赖关系。OSGI系统通常定义了二类对象:一是系统容器对外提供的服务对象,二是容器与应用程序之间强制协议。如果想要使用OSGI平台上开发应用系统,首先必须使用OSGI API创建应用,然后才能将其部署到OSGI系统容器中。OSGI的构件化软件系统总体框架按照分层思想可以用图2表示:   图2   OSGI软构件系统总体框架
   OSGI系统的核心组件就是OSGI框架。此框架为OSGI开发的应用系统提供了一个标准的运行环境。基于OSGI的软构件开发通常分为两个阶段,第一阶段是软构件识别与封装,即根据领域知识和用户需求将软件划分为若干低耦合、高内聚的功能块并封装成构件,然后通过分析构件之间的依赖关系抽取出构件间相互调用使用的接口;第二阶段是按照构件接口构造系统内各个构件能够提供的服务。服务的注册、发现和绑定都由OSGI底层框架来实现。构件还需要提供统启动、停止和更新服务。
  2   数据处理系统设计
   采用软构件技术设计和开发数据处理子系统,可以参考上述软构件系统开发过程,通常先按照业务分类构筑系统的总体框架,从中分析哪些是系统专用构件,哪些是可以通用的领域构件,然后抽取和构造各个软构件,最后根据系统功能要求将软构件按构件开发平台提供的标准或协议组装成系统。其核心基础是从系统的基本功能需求出发,将系统的功能分解为若干个相对独立的功能软构件,并区分领域构件和系统专用构件,充分研究设计各软构件的功能与结构,降低耦合度,增加其聚合度,以提高软构件的可重用性,同时提高了软件开发效率和可靠性。
  2.1   系统总体设计
   实时数据处理子系统在试验时需要完成各类试验数据的实时处理,主要包括外测数据处理、遥测数据处理、引导数据生成、飞行轨迹预测等,解算出目标的坐标、速度、姿态等参数,为指控系统试验指挥显示子系统提供实时弹道/航迹信息[12]。系统设计时,应具备以下功能:
   (1)试验前任务参数的预装订;
   (2)接收光学经纬仪、弹道相机、姿态测量系统、雷达数据等外测数据,完成外测数据从测量坐标系到以靶场坐标系转换
   (3)完成外侧数据、遥测数据航迹处理;
   (4)根据目标的斜距离、方位角、高低角,进行交汇计算,实时解算目标的速度、加速度、高度、及相应的航路参数的。
   (5)能人工设置外测信息(包括遥测数据)的优先级,实时对外测数据进行合理性检验、判优处理;
   (6)能对外测数据进行平滑滤波、误差修正等预处理,并对实时数据进行外推处理,形成引导信息,同时支持理论数据引导;
   (7)支持外测设备引导数据网络发送;
   (8)能够计算数据的绝对时和相对时间;
   (9)能实时记录输入/输出数据,支持远程数据库存储和本地文件存储两种方式。
   (10)具备数据处理信息监视功能,包括接收数据状态,发送数据状态和数据处理状态等,既可以显示单任务的处理信息,也可以完成多任务的处理信息显示。
   (11)具备多任务多目标处理能力。
   在实时数据处理子系统体系结构设计中,考虑到系统内容十分复杂,功能模块交互性强,处理数据量大、实时性要求高,为了保证用户操作及使用的友好性、安全性和软件功能模块的可扩展性和可复用性,系统采用基于OSGI的三层总体结构,以适应系统功能在任务频繁变动时的扩展需要,其系统体系结构如图3所示
  图3   实时数据处理子系统框架
   平台层是基于OSGI环境,为业务层提供的与业务无关的功能,包括日志管理、网络通信服务、系统时间服务和数据综合显示等。这些功能作为领域构件为系统提供服务。
   服务层为系统提供了服务支持,该层有一个服务总线,每个用户构件都可以向服务总线注册自己能够提供的服务,并能够查询、绑定自己需要的服务。构件注册到总线的服务是动态的,构件的注册服务在必要的时候直接卸载。服务层相关的接口由IBundleContext提供,这些接口包括GetFirstOrDefaultService,GetService,AddService和RemoveService,分别用于获取默认服务,获取指定服务,添加服务和删除服务。
   业务层主要是系统业务处理构件(也就是OSGI中的Bundle)。通过分析上述实时数据处理子系统的功能设计要求,(2)、(3)和(4)实现的关键技术在于测量坐标系到靶场坐标系的转换以及测量数据的交汇处理,(6)则强调的是对数据的综合处理包括误差修正、平滑滤波以及外推处理。我们按照低耦合、高内聚的功能划分要求,可以将业务处理划分为数据预处理、目标轨迹生成、外推和插值处理、数据优选、融合处理、交会计算、引导数据生成以及人工干预8个构件。
  2.2   构件实现方法
   在OSGI中,构件的实现包括:构件内部实现、构件发布和服务使用、构件注册等。下面就以数据预处理构件为例,描述OSGI框架实现过程。
  2.2.1   数据预处理构件的内部实现
   在OSGI框架中一个构件通常包括四个元素:1)MANIFEST.MF文件:该文件描述构件的所有特征,包括名字、输出的类或者包,导入的类或者包,版本号等。2)实现代码:包括 Activator类、其它接口以及实现。3)资源:即应用程序必须的资源文件,比如图片、properties 文件、XML 文件等。4)启动参数。
   在基于OSGI的框架开发中,Activator.java代码框架和 MANIFEST.MF 文件由IDE根据框架自动生成,用戶只需要在 Activator 代码框架中填写相应的代码实现。代码实例如下:
   package osgi.test.dataprocessfirst;
   import org.osgi.framework.BundleActivator;
   import org.osgi.framework.BundleContext;    public class Activator implements BundleActivator {
  public void start(BundleContext context) throws Exception {  /* Processing algorithm body */; }
  public void stop(BundleContext context) throws Exception { /* Processing algorithm body */; }
   }
   从上面的代码我们可以看到构件中都有 Activator类,Activator类实现了BundleActivator接口,此接口使 Activator 能够接受框架的调用。在框架启动后,启动每个构件的时候都会调用每个构件的 Activator。当我们把应用程序中所有的构件实现以后,都装载到框架环境中,由OSGI框架读入构件的各自的信息,即 MANIFEST.MF 文件,并装载相关的类和资源,解析依赖的包,通过调用其 Activator中的start方法,启动它,为其提供框架事件、服务事件等服务,同时也可以调用其 Activator中的stop方法,停止它。
  2.2.2   数据预处理构件发布和使用服务
   构件在调用前需要通过注册服务进行发布,图4表示的是构件的注册和使用流程。
  图4   构件注册使用示意图
   通常构件的发布和使用服务需要如下四个步骤:1、定义一个服务接口,并且导出去供其它构件使用;2、定义一个缺省的服务实现,并且隐藏它的实现;3、构件启动后,需要将服务注册到OSGI框架;4、从框架查询这个服务,并且测试可用性。
   下面则以OSGI构件使用和发布为例,简述2.2.1中的数据预处理构件bundle的发布和使用服务步骤。
   定义一个新的包osgi.test. dataprocessfirst.service,用來存放接口,便于导出和给其它构件使用时隐藏所有的实现类。
   在service包中新建接口Idataprocessfirst,提供报文解析、合理性检测、坐标转换和剔点处理服务接口声明。再新建一个新的包osgi.test.dataprocessfirst.impl,用来存放实现类。在上述包中新建Default ServiceImpl类,实现上述接口。
   最后通过BundleContext类实现注册服务。
   数据预处理构件发布和使用服务的部分伪代码如下:
   package osgi.test.helloworld.service;
   public interface Idataprocessfirst{
   void IPDUPrase ();//报文解析服务接口声明
   voidIChcek ();//合理性检测接口声明
   voidIConverse ();//坐标转换服务接口声明
   void IPick ();//剔点处理服务接口声明
   }
   public class DefaultServiceImpl implements Idataprocessfirst {
   public void IPDUPrase () { /* Processing algorithm body */ }
   public voidIChcek () { /* Processing algorithm body */ }
   public voidIConverse () { /* Processing algorithm body */ }
   public void IPick () { /* Processing algorithm body */ }
   }
   在实现各个接口后,通过OSGI提供的registerService注册服务,就可以使用各个功能构件,从而完成系统功能。
  2.3   构件的优化
   系统构件中涉及多个可复用的数据处理计算的函数构件,需要通过JNI技术实现效率优化,即通过调用动态链接库方式,实现Java程序优化,步骤如下:
   1)声明本地方法。在构件的Java代码中声明一个本地方法,并加上关键字“native”作为前缀,且不用方法体。在调用本地方法的Java类中用System.loadLibrary加载存放本地方法的动态链接库(DLL)。
   2)重新编译。编译Java代码并用javah带参数-jni来产生本地方法原型的头文件。
   3)编写C/C++代码。实现C或者C ++源代码文件中的函数,其源文件必须包括步骤2中创建的头文件。
   4)编译、连接生成动态链接库。
   5)运行Java程序,进行验证。
  3   结 论
   软件系统国产化是未来国家和军队发展的必然趋势,随着我国信息化建设的发展以及军队高新技术的应用,国产化的需求越发强烈,很多军用领域的软件系统在构建时都要求具备跨平台的属性以适应国产化的要求。应用软构件技术使得应用系统在构建时业务模块具备可重组和复用的特性,大大的提高了软件开发的效率。从软构件技术的角度,基于OSGI框架设计了指控系统实时数据处理子系统的开发方法,可为以后指控系统跨平台改造提供借鉴和参考。
  参考文献
  [1]    陈晓湘.构件技术与软件Agent技术研究[J].计算机安全,2009,(2):70—73.
  [2]    万方.基于UML的教务管理系统构件抽取技术的探索[J].硅谷,2009,(2):62.
  [3]    周俊,罗挺,杨眉.一种基于软构件技术的信息系统开发模式研究[J]. 计算机系统应用,2008,(9):50—52.
  [4]    付沙.基于构件技术的软件开发方法的研究[J].科技和产业,2009,9(3):95—98.
  [5]    苏春梅,郜竹香,郭霞勇.综合战场环境仿真软件建模[J].情报指挥控制系统与仿真技术,2005,27(5):86—90.
  [6]    薛红梅,贾少锐,李燕.基于可复用构件抽取方法的研究与实现[J].福建电脑,2005,(10):40—41.
  [7]    蔡福喜,黄大贵.基于模块化设计思想的测控系统框架设计[J].测控技术,2009,28(1):55—57.
  [9]    齐治昌.软件工程[M].北京:高等教育出版社,2004.
  [10]  傅祖芸,译. 《C语言数值算法大全》[M]. 北京:电子工业出版社,1995.
  [11]  常发亮,刘静. 多线程下多媒体定时器在快速数据采集中的应用[J].计算机应用,2003,23(6):177—178.
转载注明来源:https://www.xzbu.com/8/view-15151474.htm