最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能装备

基于UML的列控系统车载人机界面设计和实现

发布时间:2006-08-23 作者:王悉,唐涛  来源:《系统仿真学报》
Graphic—User—Interface(以下简称GUI)设计是软件系统开发中的一个重要部分。针对列车运行控制系统车载人机界面的特点和功能,提出了一种适用种人机界面的GUI模型。利用UML(Unified Modeling Language,统一建模语言)夏其工具Rational Rose对模型进行需求分析、总体设计奔详细设计。建立了静态模型:和动态模型的各种视图,描述了系统的功能需求、功能流程、类的结构与关系、视图之间的交互,提高了软件设计的质量奔效率。最终利用面向对象的c++编程语言对这种人机界面进行了实现。

    引 言
   
    列车运行控制系统是对列车速度自动控制的各种装置的统称,根据对速度控制程度的不同,一般分为:列车自动停车(ATS)系统,列车超速防护(ATP)系统,列车自动控制系统,列车自动运行(ATC)系统和列车自动运行(ATO)系统。
   
    列车运行控制系统车载人机界面是车载设备与驾驶员进行信息交互的平台,是列车运行控制系统的一个重要组成部分。通过车载人机界面,司机可以对列车的相关参数进行设置,实时地得到有关列车和线路的相关状态和数据,对车载设备发出的命令和警告及时地进行响应。
   
    近年来随着科技水平的不断发展,铁路装各技术水平跃上了一个新台阶,高速铁路的崛起和发展给世界铁路的重新振兴带来了勃勃生机。作为高速铁路的关键设备之一。列车自动控制系统具有以下三大特点:1,以车载显示为行车凭证;2,用速度命令代替色灯含义:3,信号直接控制列车制动。正是因为这样的特点,使得人机界面在整个系统中发挥更大的作用。良好的界面设计可以将更多的信息清晰地显示出来,有助于司机更好地了解要完成的任务,提高速度和精确性,减少人为失误的可能性,在最大程度上保证列车的安全性。
   
    对于一般交互式软件系统来说,GUI设计和实现是软件系统开发中的一个重要部分。人机界面是指软件系统与使用者之间的交互。它为用户提供各种形式的输入,将用户的输入信息进行转换后,传给核心模块进行处理,并将处理结果以可理解的方式反馈给用户。它介于用户和核心应用之间。设计既要针对使用者,义更适应核心模块。用户界面的设计质量,直接影响用户对软件产品的评价,并最终影响软件产品的竞争力和寿命。事实上,在很多软件的设计阶段,由于缺乏行之有效的用户界面设计手段,界面设计由实现人员直接编码完成,从而导致了实现与用户需求之间的差距。
   
    本文分析了列车运行控制系统车载人机界面所要满足的设计原则,设计了一种适合这种人机界面的GUI模型。选用UML来描述人机界面的功能需求、总体设计和详细设计的过程并进行建模,并利用其工具Rational Rose加以严格定义的图形化语言的描述。最后使用Microsoft公司的Visual C++开发工具进行了开发。
   
    1、人机屏面设计的原则
   
    1.1 人机界面设计的原则
   
    人机界面设计要讲究艺术性和科学性,利用图形艺术家的见解和人性因素的研究者的发现,并考虑到用户的直观感觉。根据已有的用户界面设计经验,针对列车运行控制系统车载人机界面的特点,总结出了以下几点设计原则:
   
    1) 理解司机要进行的操作。典型的用户界而设计都要进行任务分析来理解用户任务的性质。
    2) 司机在与系统得交互过程中能够掌握操作的控制权。无论何时用户发起的操作都能够可以被取消。
    3) 提供多种方式来兜成每个与界面相关的动作(例如关闭一个显示窗口)。
    4) 当司机进行了错误的操作时,应能够以醒目的方式及时进行提示。
    5) 重视可读性和可理解性。提示信息应该简明概要,所州的图形信息便丁=-州机理解。运用不同的颜色来表示信息的优先级
    6) 尽量保持界而构件的尺寸相同。充分利用空间关系。屏幕上的图形构件之间的距离不要太远,必要时可以用一个框将他们包围起来。
   
    1.2 采用UML进行设计的优势
   
    UML采用的足一种图形表示法,是一种可视化的图形建模语言 UML定义了建模语言的文法, 运用元模型对语言中的基本概念、术语和表示法给出了统一且比较严格的定义和说明,给出了这些概念的准确含义。UML为人们提供了从不同的角度去观察和展示系统的各种特征的一种标准方法。在UML中,从任何一个角度对系统所作的抽象都可能需要用几种模型图来描述,而这些来自不同角度的模型图最终组成了系统的完整图像。
   
    UML语言提供了模型管理视图,用以描述系统各种模型之间的关系。通过模型管理视图提供的机制,系统设计者可以将各个模型元素有机地分解为各个不同层次的包,从而从不同的层次粒度上对系统模型问的关系进行描述,极大地提高了系统设计的可读性和可维护性。UML这种层次化、模块化的管理机制非常适合于对列车运行控制系统车载人机界面进行建模。但是,如果由开发人员手工地绘制这些图形,不仅非常烦琐,而且很难保证不同视图之间的一致性,因此UML的支持环境在实际的软件开发中是必不可少的。
   
    Rational公司的Rose是目前在国际上应用虽广泛、功能最强大的支持UML的CASE工具,在软件开发过程的几个阶段都很有用。在项目开始阶段,Rose可以产生用况模型;在细化与构造阶段,Rose可以开发活动框图,显示事件流程;顺序图和协作图则显示要开发的对象及其相互问的交互;Rose开发的类图显示对象间的相互关系:组件图显示系统组件间的相关性。此外Rational Rose最强大的特性之一是具有生成表示模型的代码和逆向转出工程代码的能力,保证了代码与对象模型的同步性。
   
    2、使用UML对列车运行控制系统车载人机界面进行分析和建模
   
    2.1 常用GUI模型简介
   
    通常GUI模型抽象为三个部分:界面的表现模型,即与使用者问的接口;界面构件的对话过程,即用户界而构件之间的交互以完成用户任务;核心应用,即完成应用业务逻辑的功能模块。几种主要的GUI模型如,Seeheim模犁,MVC(Model-View-Controller)模型和PAC (Presentation—Abstraction.Controller都基于这样的基本思想。F面对最基本的Seeheim模型进行简要说明。
   
    Seeheim模型将软件体系结构分为4个部分:核心模块(Functional Core),核心应用接口(Functional Core Adapter),对话控制器(Dialogue Contro1ler),界面构件(Presentation Component)。Function Core对领域应用进行建模。Functional Core Adapter为用户界面与核心应用之间建立一个缓冲区,以减少二者之间的耦合。它通过一些交互协议为用户界面与核心应用之间提供同步或者异步的数据交换。Dialogue Controller是Seeheim模型中的核心部分。它通过界面构件接收来自用户的各种输入请求,通过转换后利用核心应用接口与核心模块进行数据交换,保证多个视图间的一致性,以完成特定的用户任务在Dialogue Contro11er中可以嵌套定义Seeheim子模型。这样可以从不同粒度上对GUI系统进行建模。Presentation Component对界面构件的具体交互动作和输入输出进行设计。
   
    2.2 车载人机界面建模
   
    (1) 系统需求分析
   
    需求分析就是明确从外围系统的角度要求车载人机界面提供什么功能。在以往的需求分析中,始终没有一种合适的工具来保证系统需求的完整表达,所以直接导致了系统在完成后的检测中发现与真实情况小符。从分析阶段引入全面支持UML的Rational Rose这个有效的形式化上具,以完整的,无歧义的语言来表达需求,简化开发过程中的交流。
   
    列车运行控制系统车载人机界面是车载设备与司机进行信息交互的平台。车载人机界面要保证司机可以对列车的相关参数进行设置,实时地得到有关列车和线路的相关状态和数据,对车载设备发出的命令和警告及时地进行响应。运用UML的用例图可以清晰的表示出以上需求。


图1 车载人机界面模型用况图

    接下来对用况进行形式化的描述。司机在进行操作时,首先可以根据需要来调整界而的背景色,分辨率等参数,这时执行了界面设置用况。当司机需要对列车长度等参数进行配置时,则要使用数据操作用况。在数据用况中还可以显示列车的初始化信息。考虑到司机需要响应车载设备发出的指令以及进行人工干预。所以命令操作用况也是必不可少的。司机操作人机界面的过程采用UML的活动图做了描述。


图2 车载人机界面模型活动图

    (2) GUI模型框架
   
    根据人机界面设计的原则。考虑到实际的应用背景,本文在Seeheim模型的基础上,提出了一种适用于列车运行控制系统车载人机界面的GUI模型,如图3所示。模型由视图模块(View Mode1),视图控制器(View Controller)和核心应用接口(Core Interface)三部分组成,是一种面向对象的GUI设计模型。
   
    视图模块(View Model)对用户界面的可视部分进行描述。它接受司机的输入,并为司机提供可视化信息,是GUI模型中唯一直接与司机打交道的部分。它的设计采用多级递阶的设计思想,从逻辑功能上分解为各个视图(view),每个视图又可以分解为多个子视(Sub—View)。子视图是对上一层视图的进一步分解和细化。视图的静态特性可以包含视图的大小、位置和可见性等与视图自身表现形式有关的属性。它的动态行为包括视图内部的动作和与其他视图问的协作,以及与司机之间进行的交互。视图模块的建模以消息响应为核心,通过消息响应过程对用户事件进行处理。例如响应车载设备命令或改变界面样式等。当View与其他视图进行交互时。将用户消息发送给View Controller进行调度。由View Controller来实现在不同的视图之间的转换。
   
    当用户完成一项任务涉及到若干视图时,View Controller负责各个视图间的切换调度。它接受从View Model发送来的消息,由消息响应函数负责对相关的视图进行控制。相对于View Model,View Controller是一种粗粒度的用户交互模型。它负责将用户要完成的任务分解,然后映射到用户界面的各个视图中去。视图内部的用户交互动作则由View Model去描述。
   
    Core Interface为用户界面中的视图(View)提供了与车载设备进行数据交互的接口。车载设备把列车相关信息通过这个接口传送给用户界面,向司机进行显示;当需要司机进行操作时,也通过该接口向车载设备进行信息发送。Core Interface在用户界面与车载设备之间建立起一个缓冲区,减少了两者之间的相互耦合,提高了代码的可维护性和可重用性。
   
    从图3中可以看出,View Controller负责在各个视图问的切换调度。它接收来自各个视图的事件。View Controller在系统中是非可视化的,它只负责协调各个视图问的调用。运用UML的顺序图可以对调度的过程进行描述(图4)。


图3 车载人机界面设计模型


图4 View Controller的调度顺序图

分页

    (3) 包和类的划分和处理
   
    对用况进行详细的描述后,可以进一步对系统的功能模型和车载人机界面模型进行定义和描述。UML提供了在设计初期描述对象总体框架的工具——包(package)。包就是对象组,借助包图,可以描述出系统的对象组之间的联系,确定出系统对象集合之间的层次和结构 包图是用况图归纳分类的结果,它往往可从用况图直接导出。作为GUI模型中唯一直接与司机打交道的部分,视图模块包由配置界面、数据界面和操作界面三部分组成(图5)。


图5 视图模块包图

    对于包图中的每一部分进一步分析可以得出类图。为了便于司机进行操作,在操作界面中,把相关的信息放在一起进行显示,分成了五个不同的类。速度类向司机提供有关列车目标速度,允许速度,缓解速度和当前速度等相关速度信息;计划信息类提供司机选定的距离区域内的提示信息例如车站的位置,坡度信息,起始位置信息,速度曲线相关信息和地理信息,并且能够显示最大限制曲线。列车进行制动时,监督距离信息类提供目标停车点的预告距离,干涉预告时问信息。车载设备向司机发出的命令以及司机进行的人工干预,通过辅助驾驶信息类和监测信息类来实现。每个类负责相关的信息显示,在人机界面中分成了五个相对集中的部分。它们在的分布如图6所示。


图6 操作界面中功能模块的分布图

    对每一个类,我们还应识别属性和操作。操作界面类和Core Interface类的一些属性和方法定义如图7所示。
   
    UML对面向对象设计的表述能力相当强大,可以较好地描述车载人机界面模型的各个层面。通过UML用例图可以很清晰地导出View Model,View Controller以及Core Interface。利用UML 的包图和类图对模型进行分解细化。创建顺序图和活动图描述了模块之问的协作关系以及模块内部的状态转移顺序。车载人机界面的层次化和模块化结构可以较好地与UML各个粒度的设计工具相结合,较好地融入到整个软件的设计过程中。
   
    3、列车运行控制系统车载人机界面的实现

   
    Rose在构造阶段根据对象设计创建组件。组件图显示组件间的编译相关性,选择每个组件的语言后,可以产生框架代码。在此,我们采用c++这种面向对象的编程语言,并用Microsoft公司的Visual C++工具进行了软件开发。
   
    根据建立的GUI模型,采用Visual c++中基于对话框的程序架构来开发软件系统。整个软件系统由多个对话框(Dialogue)组成。View Model由多个Dialogue组成,每个Dialogue分别表示不同的View。Dialogue之间的转换,由View Controller来控制,通过消息映射来完成这样功能。
   
    在开发过程中,首先根据包图和类图的描述对界面中的各种视图进行实现 人机界面的视图中操作界面是最重要也是最复杂的,下面以操作界面为例来说明开发的过程。首先利用Rational Rose自动生成表示模型代码的能力,可以产生操作界面的框架代码,将图7中描述的操作界面类转化为用c++描述的代码,操作界面基类和各个子类得到了很好的封装,保证了代码与对象模型的同步性。有了界面的框架代码,我们只需要在函数体中。添加实现具体功能的代码就可以了,采用这种方法避免了设计人员与实现人员之间的理解偏差,提高了软件的整体性。


图7 操作界面和Core Interface类图

    接下来分别对操作界面中的五个子类进行实现。在实现时,要充分结合上文论述的人机界面原则,例如在辅助驾驶信息类中显示当前命令和提示以及系统状态时,遇到要求司机进行操作,将用黄色显示并加上一个黄色闪烁的边框。当操作正确时,闪烁停止。在情况发生后(如离开隧道)或情况开始后(当列车的前端通过命令或提示指出的位置后,如降低受电弓),命令或提示符号从这个区域被删除。当操作不正确时,符号以红色显示并加上一个红色不闪烁的边框,直到命令被正确回应为止。这样可以利于司机及时观察到提示信息,采取相应的措施。
   
    考虑到界面可理解性和美观性的需要,在计划信息类内,采用了特定的图形符号来表示命令和提示信息与速度曲线信息,同时 司机可以激活图形符号来获取第二层信息。在表示距离时,应用对数表示距离范围。因为用纯对数无法显示接近零的距离值,所以在O到100之间线性插值。图8为驾驶操作界面。


图8 驾驶操作界面

    View内部的动作以及与司机之间进行的交互以消息响应为基础,通过消息响应过程对用户事件进行处理。例如操作界面收到车载设备发出的制动消息后,触发位于操作界面左上方的制动信息类信息显示。干涉预告时间显示在屏幕左上角的正方形区域内。正方形的尺寸按照距离干涉的时间进行相应的动态变化。竖直的矩形条用来指示距离列车将要停车点的预告距离(见图9)。


图9 制动时的操作界面

    按照同样的方法,可以对View Model中其他的View进行开发。在View Model的基础上,为了实现不同View之间的交互,根据活动图和调度顺序图的描述, 来实现View Controller的功能。View Controller对不同View的调度如图l0所示。司机首先对界面的参数进行设置,接下来通过数据输入界面对列车的初始数据进行配置 配置完成后,进行确认,进入驾驶操作界面。当司机需要查看或者从新配置初始数据时,也可以根据状态图的描述在不同的View间相互转换。
   
    对于GUI模型中Core Interface,在程序中建立了专用的缓冲区来实现,缓冲区中设置了不同的容器(Vector)来存放View与车载设备之间交互的数据。车载设备把列车相关信息存放在Vector中,用户界面可以从这里提取相应的数据进行显示。因为空间的原因,某些信息不能完全表示在操作界面中。例如检测信息区域可能不能够完全显示出检测信息类中的信息。Core Interface可以使用户通过功能键从Vector中选择相应的信息显示,避免了重要的信息被忽略或覆盖,提高了代码的完整性。


图10 初始数据输入界面

    4、结论
   
    本文深入分析了列车运行控制系统车载人机界面所要实现的功能,设计了一种能够很好的完成需求的GUI模型。这种模型为车载人机界面的需求分析、界面结构化和层次化设计,以及界面动态交互任务设计提供了逐步细化的设计框架。
   
    在建模过程中,使用UML及其工具Rational Rose建立了静态模型和动态模型的各种视图,描述了系统的功能需求、功能流程、类的结构与关系、对象之间的交互。对软件进行了整体的规划和设计,有效地弥合界面设计与核心应用之间的分歧,提高了软件设计的质量和效率,减少了设计人员对需求的理解偏差、设计人员之间的理解偏差,以及设计人员与实现人员之间的理解偏差,提高了设计的一致性、完整性和可维护性。这种方法的优势,在对列车运行控制系统车载人机界面的实现过程中充分的显示了出来。