基于 UML的电子海图显示与信息系统设计与实现

0引言

在数字化和信息化的今天,随着计算机技术、图像处理技术和航海技术的发展,电子海图显示与信息系统(ElectronicChartDisplayandInformationSystem,简称为ECDIS),以其形象、直观、灵活表达海图信息和航海信息的特点,被认为是近10年来在航海领域一项伟大的技术发明,引起了航海领域和测绘领域的一场技术革命。因此,世界各海事强国对电子海图及其应用系统都极为重视,特别对其标准化和关键技术进行了深入研究,开发出各种电子海图及其应用产品,在功能及技术性能等方面都取得了巨大进展。

本文详细分析了电子海图显示与信息系统的基本功能与设计原则,构建了系统的整体架构,利用统一建模语言UML从不同角度建立了静态模型和动态模型等多种视图,描述了系统的功能需求、功能流程、类结构与层次关系,实现系统软件设计的可视化。最终利用面向对象C++及数据库技术实现了电子海图显示与信息系统软件。

1统一建模语言UML的技术特点

统一建模语言(UnifiedModelingLanguage,UML)是一种绘制软件蓝图的标准语言,它可以对软件密集型系统的制品进行可视化、详述、构造和文档化[3]。UML是一种定义良好、易于表达、功能强大且普遍适用的标准建模语言,它溶入了软件工程领域的新思想、新方法和新技术。在以往面向对象建模语言的基础上,UML提供了一系列标准化的图形符号,所建立的模型清晰完整,便于理解并有助于用户及软件开发人员间的交流和协商。UML作为一种软件开发的有效工具贯穿于整个软件开发进程之中,它提供了多种视图,从不同角度表现出所开发系统的静态和动态特征,有助于完成系统体系结构的设计,也能够为最终的软件产品提供相关的细节文档资料。

采用UML进行建模和设计的优点如下:

1)UML统一了Booch,OMT和OOSE等方法中的基本概念,可以消除一般面向对象建模语言潜在的不必要的差异。

2)UML还吸取了面向对象技术领域中其他流派的长处,其中也包括非OO方法的影响。UML符号考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。因此,在UML中汇入了面向对象领域中很多人的思想。这些思想并不是UML的开发者们发明的,而是开发者们依据最优秀的OO方法和丰富的计算机科学实践经验综合提炼而成的。

2ECDIS需求定义与架构设计

电子海图显示与信息系统的设计必须突出主题,正确反映航海使用的客观实际,清晰易懂。系统必须满足:准确、迅速、清晰和通用。ECDIS的主要功能需求见表1

根据面向对象软件工程的设计思路,将电子海图显示与信息系统划分为电子海图基础平台和扩展应用功能两部分组成,其中电子海图基础平台是ECDIS的基本组成部分,其主要功能是完成电子海图的数据组织、管理、访问控制、格式转换以及显示,该平台就要符合S52和S-57标准的基本要求并能适应性能标准;应用功能包括显示扩展、要素查询、航线计划和管理、测绘计算、航行记录、海图自动更新以及AIS、雷达信息叠加等功能,其功能应该满足IEC61174标准。图1给出了ECDIS的组成结构。

3基于UML的ECDIS建模

建模是为了更好地理解我们正在开发的系统。下面结合ECDIS的功能分析,充分利用多种UML视图完成电子海图显示与信息系统从需求分析、系统设计到物理实现的建模。

3.1用例建模

用例建模是需求工程的一种形式,在这个过程中,用例从用户的观点对系统的功能建模,因此用例构成了一个重要的用户和系统开发者都能接受的基础概念。而且,用例建模为对象和类提供了基本来源,它是类建模的基本输入。

典型的用例建模做法为:找出系统边界、找出参与者、找出用例。由图2我们可以看出,ECDIS系统是实现航海操作人员与电子海图数据之间信息交互的平台,该系统应该满足电子海图的转换与显示,以及航海作业和数据管理等需求。

3.2系统类图设计

类图展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,类图给出了系统的静态设计视图。系统的类图为开发人员提供了仿真ECDIS的表达方式,便于我们与系统进行交互。类图对系统的图2ECDIS总体用例图Fig.2ThetotalusecasechartofECDIS分析也有很大帮助,可以让分析员使用用户所采用的术语同用户进行交流,促使用户说出所要解决问题的重要细节。

本系统由于采用用户界面交互形式,所以采用MVC框架最为合适。MVC(Model-View-Controller,即模型—视图—控制)是把一个应用的输入、处理、输出流程按照Model,View,Controller的方式进行分离,这样一个应用被分成3层:模型层、视图层和控制层。

视图(View)代表用户交互界面,随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,不包括在视图上业务流程的处理。业务流程的处理交予模型(Model)处理。模型(Model)就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其他层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC的核心。控制(Controller)可理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。一个模型可能对应多个视图,一个视图可能对应多个模型。

模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。

系统应用MVC架构的设计如图3所示。采用MVC架构模式实现了电子海图系统的显示界面、功能处理和海图数据和符号库的分离。

1)视图部分在系统中对应用户接口(UserInterface),采用主窗体(MainWindow)负责系统主界面的布局,采用视图(EView)负责电子海图显示的画布。

2)控制部分设计CMsSend类作为总体控制类,负责用户信息和数据的分发。

3)模型(Model)部分划分为上下两层,模型上层是功能处理层,设计一个总体功能处理类(CEnc),CEnc类包括海图显示(CMapDisplay)、海图分层(Hiberarchy)、海图汇算(Caculation)、海图缩放(MapZoom)、海图漫游(MapRoam)、海图选择(MapSelection)、信息查询(InforQuery)等功能处理对象;模型下层为数据模型层,负责对海图数据和符号库数据的读取和其他信息的存取。

3.3系统协作图与顺序图设计

协作图和顺序图包含完全相同的信息,但是它们用不同的方式显示。顺序图强调的是交互的时间顺序,协作图强调的是交互语境和参与交互对象的整体组织。

以ECDIS中海图显示功能为例,给出其用例的协作图如图4所示。操作人员(Operator)选择显示海图功能,用户接口对象(UserInterface)获得显示海图命令和显示参数,将显示参数传递给海图显示对象(MapDisplay),海图显示对象(MapDisplay)从海图数据文件对象(CDataFile)中读取海图数据,海图数据文件对象(CDataFile)把海图数据提交给海图显示对象(MapDisplay),海图显示对象(MapDisplay)从符号库文件对象(CSymFile)读取海图符号库数据,符号库文件对象(CSymFile)把海图符号库数据提交给海图显示对象(MapDisplay),海图显示对象(MapDisplay)根据数据和画法在用户接口对象(UserInterface)上绘制海图,用户接口对象(UserInterface)把绘制的海图显示给操作人员(Operator)。

3.4系统状态图设计

状态图显示了一个由状态、转换、事件和活动组成的状态机。用状态图说明系统的动态视图,状态图强调一个对象按事件次序发生的行为。当发生某种事件时,系统就会从一种状态转移到另一种状态,在每种状态中执行相应的操作。传统上每个类都有一个动态模型,而不是作为一个整体的系统建立一个状态模型

图6给出了ECDIS的总体状态图,它反映了系统执行的或为其执行的所有动作。在海图系统中首先启动系统,进入系统循环状态,初始化显示一幅海图,然后系统又分别设置了几个子状态:海图选择状态、海图显示状态、海图分层状态、海图汇算状态、海图漫游状态和信息查询状态等。

4ECDIS的实现

根据系统的功能设计以及需要实现目标,通过前面建立的系统模型,我们对电子海图显示与信息系统软件进行了具体实现。系统运行硬件环境采用Pentium4处理器,512M内存,操作系统采用WindowsXP,开发工具选择VisualC++6.0,数据库选择Access。其显示界面如图7所示。

通过选择“换海图”功能,调用需要作业的海图,然后选择“航线设计”功能,界面的下方弹出对应窗口。其中海图上显示默认航线,而对话框中显示当前航线所在海图上的经纬度信息,航线上任意航路点的属性可通过编辑窗口修改,并可连接数据库进行存储。在航海作业过程中,界面右侧提供信息交互窗口,可以通过不同的功能设置进行航海指挥,简单易用。

5结束语

本文通过对电子海图显示与信息系统软件的UML建模,描述了系统的静态结构和动态行为,大大提高了所开发的海军标图系统的使用范围和灵活度。在此基础上对系统的总体结构有了清晰的认识,从而明确了系统需完成的功能结构及特点。最后,在Windows操作系统环境下,利用面向对象技术实现了ECDIS系统。本文设计的电子海图显示与信息系统以电子海图数据为显示背景,有效降低了航海作业的复杂程度,提高了航海活动的工作效率,该软件将对实现航海自动化起到一定的促进作用。