基于组件技术的电子海图显示系统开发方法

电子海图是继ARPA雷达、GPS后的航海导航系统应用的新技术产物,以其自身的优势在世界航运业和水上安全监督方面得到越来越广泛的应用.而如何在电子海图显示系统基本功能的基础上,开发快速、可靠、易扩充的满足实际需求的复杂应用系统是基于电子海图的应用系统开发人员应当研究的问题.组件开发(component-baseddevelopment,CBD)现已成为理论研究的热点,并在业界得到广泛的应用.文中探讨将组件技术与电子海图显示技术结合构筑基于电子海图应用系统要解决的技术方案和具体实现.

  1.关于组件

  1.1.组件的概念

  有关组件,目前还没有一致的定义,但可以大致描述如下:组件是某一个综合体的一个单元,这个单元具有约定的指定接口,一个软件的组件可以被独立地配置,它受第3方组合的制约.也就是说,组件是一种能够提供某种服务的自包含的软件模块,它封装了一定的属性和方法,并提供特定的接口.开发人员利用这一特定的接口来使用组件,以此来构造应用程序.组件是一个配置个体.

  1.2.组件的特点

  首先,组件是一个“黑盒”,它的内部结构是不可见的,只提供接口供开发人员使用,这就使得开发人员不必了解组件具体的实现细节,就能利用组件方便地构筑应用程序.组件开发人员在保持接口不变的情况下还可以对组件单独进行升级,改进原来的功能,却不会影响整个应用系统的运行,其次,组件具有语言无关性,这也就是说,用不同编程语言编写的组件应能在一起协同工作.此外,组件还能跨网络运行.组件能够被部署到互联的各个计算机上,它们之间可以通过某种通讯机制相互交谈,从而构筑基于网络环境的分布式应用程序,实现分布式应用.通过以上分析,可以看到组件可以从一个应用程序中分离出来重复使用,而且不受操作平台、开发环境甚至是物理计算机的限制.

  1.3 . 2种组件模型的比较

 在组件的标准化方面,目前主要有2大主要阵营:对象管理集团OMG的CORBA(commonobjectrequestbrokerarchitecture)和微软的COM/DCOM(componentobjectmodel/distributedCOM),它们在组件的结构以及组件之间的通讯方面提供了不同的机制.COM/DCOM为组件交互定义了二进制标准,这种交互可以在一个进程内部进行,也可以跨越进程边界.基于COM的实现包括提供组件软件服务的ActiveX,提供事务服务的MTS和提供数据访问服务的OLEDB.CORBA是OMG为ORB制订的标准,同COM一样具有语言无关性.CORBA与COM相比主要的优势在于是平台无关的,而COM主要运行在Windows环境,但是CORBA不是二进制标准,在支持各种平台的各种语言时显得比较困难.

  1.4.用组件开发应用程序的意义

  组件的出现改变了传统的软件开发方法,就是可以把应用程序的需求分解成明确定义的服务,然后进一步创建具体的物理组件来实现它们.这样做有如下好处:

  1)可重复使用.最大程度的适应软件开发平台的迁移以及软件体系架构的变化,使已有的组件资源得到充分的利用.

  2)易于修改升级.当应用系统功能要求改变时,不必重新开发,可以在原来的基础上,替换或添加某些组件,修改部分代码,就可以组建新的应用系统.

  3)易于管理.各种不同功能组件彼此独立,对于应用系统也是可分离的,系统组建人员能更好地对这些组件进行管理.

  4)易于采用分布式系统应用.Internet、Intranet以及各种Web技术的快速发展为应用系统实现分布式应用提供了充分的条件.

  2.基于组件的电子海图显示系统软件开发方法

  2.1.用组件构造电子海图显示系统的思想

  基于组件的软件开发方法在软件业界得到了人们极大的关注,为软件开发开辟了新的天地.由于电子海图显示系统软件经常作为电子海图应用信息系统的底层平台,更适合于引入组件技术进行开发.

  结合组件开发思想,可以将电子海图显示系统划分成3部分:海图底层实现模块部分、功能模块部分、显示部分.如图1所示.如果再细分的话,底层处理模块部分主要包括海图初始化、海图加载和坐标变换等;功能模块部分按照开发性要求可以分为基本功能模块、2次开发子系统功能模块;显示部分主要是海图显示和图形用户界面的设计.如果将各个完成不同功能的大小模块都封装成组件的形式,那么构造电子海图显示系统的过程就是将各种组件按应用系统要求组合在一起.当应用系统要求改变时,只需添加、删除或重组各种组件,就能以最少的投入,最快地构造出满足应用要求的新系统,极大地提高了可重用性和系统开发效率.

  此外,组件技术和电子海图显示系统的结合还引入分布式电子海图显示系统的概念,为实现基于网络环境的电子海图显示系统开发提供了思路,这也就是说,电子海图显示系统应用程序不必限制在单个计算机甚至局域网络上运行,组成电子海图显示系统的各个组件可以按应用系统要求部署到网络中的各个计算机上,并相互之间协调运行,提高了组建电子海图显示系统的灵活性.

  2.2.基于组件的电子海图显示系统软件结构

  图2给出了组件化电子海图显示系统的软件结构及组成电子海图显示系统3个部分之间的关系.每个部分可以由同类型的软件组件构成,每个软件组建提供一定的服务,从而开发电子海图显示系统的过程就变成了组装各种软件组件的过程.

  海图底层实现部分封装了海图初始化、海图加载以及坐标变换等的多个类和结构,体现了海图绘制的机制.无论是海图基本功能的实现,还是进一步2次系统开发要求都可能涉及到绘图机制的部分修改甚至完全改变.当将底层实现部分设计成组件的形式提供给用户时,在保证上层接口不变的情况下,修改或替换这个组件甚至都不需要编译就可以在整个系统中正常运行.这个部分是整个系统中最为重要的部分,绘制海图和坐标变换等接口方法,在功能模块部分会被多次调用.

  海图功能模块部分,在结合不同的应用时往往具有不同的实现要求.电子海图显示系统的基本功能主要包括汇算、分层、缩放、漫游、信息查询和选择海图等,这些功能也应能够根据具体应用和用户要求进行灵活选择.如果将这些基本功能设计成组件的形式,它们就可以在不同的应用中实现重组或分离.

  在进行组件化软件模块设计时应当考虑组件“粒度”方面的要求,组件同样具有粒度,可以用组件提供的功能数量进行衡量,系统可以用粒度较细的组件来构建,也可以用粒度较粗的组件来构建,二者却存在不同,如图3所示.

  图3描述了组件粒度是怎样影响组件价值的.粗粒度组件灵活性较低,但是成本效益较高,对应用来说具有更大的价值;细粒度组件较灵活,但是节省的工作量较小,成本方面优势较小.因此,在定义组件时,应关注与识别那些粒度较粗的组件.在电子海图显示系统基本功能的实现上,考虑到组件开发的成本效益和可重用性,应将各基本功能组件有机地结合在一起,提高组件粒度.在系统的实现上采用了COM重用模型来平衡各种考虑.

  2次开发子系统功能模块同样与具体应用有关,例如定位及导航、雷达图像叠加、航路监视等,也可以将它们设计成组件的形式提高可重用性.

  海图显示部分是整个系统的中间层,不仅实现了各功能模块和底层实现模块之间的互操作,也为用户提供了一个可视化的图形用户界面(GUI).各功能模块在这里有机“胶合”,形成了一个整体.

  这3个部分之间是层层调用的关系,用户在海图显示部分进行各种功能操作,由各功能模块负责执行.底层实现部分为各功能提供服务,如海图加载、坐标变换等.

  在这个软件结构中蕴含了C/S的概念,这个概念是抽象意义上的概念.从总体上看,底层实现程序模块为功能模块中的组件提供服务,功能模块为海图显示提供服务;从细节上看,每个组件就是一个服务器,提供一定的服务.这些组件可以运行在同一台计算机上,由单机来完成系统的运行,也可以分属不同的计算机以组成分布式电子海图显示系统,由多个计算机来共同承担任务,这使得能够根据系统要求灵活方便地构建电子海图显示系统.

2.3.用组件开发电子海图显示系统的实例

  以上分析可以看出,电子海图显示系统中底层实现模块部分和功能模块部分都可以被设计成组件的形式,在某种开发环境中,通过编写简单的“胶水”代码,将这些组件按照应用系统要求在显示部分有机的组装起来,就完成了电子海图显示系统的开发.这相当于把电子海图显示系统的开发过程一分为二:开发组件过程和组件部署与组装过程.

  应用COM组件技术,并结合VC开发平台,利用ATL(activetemplatelibrary)工具开发了部分组件,实现了本地及基于网络环境的电子海图显示系统,

  海图底层实现组件Map.dll是系统的主要构成部分,接口IChart的成员方法为电子海图显示系统基本功能提供服务.海图的基本操作如缩放、汇算等通过接口IChart调用组件相应成员函数实现.使用该组件时,不必关心其内部代码,只需设置参数调用相应方法,就能获得海图加载和坐标变换等服务.

 获取IChart接口指针程序代码如下:

//COM初始化

CoInitialize(NULL);

CLSIDclsid;

//获取组件类标识

CLSIDFromProgID(L"char.tchar.t1",&clsid);

HRESULThr;

IChart*m_pChart;

//创建组件实例,获取组件接口指针

hr=CoCreateInstance(clsid,NULL,CLSCTX_INPROC,IID_IChart,(void**)&m_pChart);if(FAILED(hr))

  MessageBox("Createinstanceerror",NULL,MB_OK);

  由于Map.dll组件能被部署在网络中的计算机上,因此能够灵活地按应用系统要求部署该组件,将它驻留在本地计算机上(作为本地服务器)或将它部署到远程计算机上(作为远程服务器),可分别实现本地电子海图显示系统及网络环境下的电子海图显示系统.

  在基本功能实现部分,应用COM包容(containment)重用模型进行开发,接口实现如图4所示.

  基本功能组件实现了IMapDisplay接口进行海图显示,同时“包容”了放大、汇算等对象,重用了这些对象的功能.也就是说,IMapDisplay不需要实现IZoom、ICaculate等接口实现的功能就可以调用这些对象对外提供的服务.通过包容重用模型,这些基本功能形成了一个功能整体,有效满足了组件“粒度”方面的要求,提高了组件的可重用性和成本效益

3. 结束语

   将组件化软件开发方法与电子海图显示系统相结合,有效地提高了软件开发效率 ,并为 2次子系统开发实现软件“复用”提供了有效途径. 文中运用组件技术的思想开发电子海图显示系统 ,完成了海图底层模块和各基本功能模块及其包容重用模型的组件设计工作,并在 VC平台上利用 ATL技术,实现了本地化和局域网内的电子海图显示系统应用,从而证实了这种开发方法的优越性及其实现途径的可行性.                                                                  参考文章:电子海图、AIS、雷达

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子海图(微信lvxin6136)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值