基于构架重用的虚拟操作训练领域仿真系统的研究
2011-07-03边晶,杜威
边 晶,杜 威
(长春大学 计算机科学技术学院,长春 130022)
0 引言
1 仿真系统构架设计
随着软件科学的不断发展,新的应用系统变得越来越复杂,这就对应用软件的重用提出了更高的要求,虚拟操作训练系统也存在相似的问题。在过去的系统建模和电子仿真中,每个仿真系统或数模都是独立的,这就使各构件不能在开发新仿真应用时被重用。但是随着国防现代化的迅速发展,仿真系统变得越来越复杂,如果每个仿真系统都从头开发,效率会很低,并且要浪费大量的资金和原材料,开发出来的产品也不容易实现不同虚拟设备之间的联合使用[1]。因此,有必要研究和开发虚拟操作训练领域的构架以统一系统的建模方法,从而实现软件构架和构件的重用。
这里所说的领域指的是一组涵盖相似软件需求应用系统的功能领域。领域工程是建立基础能力和基本原则的相似系统应用工程,涵盖了建立重用软件构件的所有活动[3]。虚拟操作训练系统是一种领域应用系统,包含虚拟设备训练、维护训练等特定领域。针对虚拟操作训练系统的建模问题,本文介绍了如何用领域建模思想和COM构件技术设计一种虚拟操作训练领域应用构架,使用户更容易快速制造出基于该构架的实用仿真模型。本文按如下几个部分进行介绍:第1部分介绍基于UML的虚拟操作训练领域仿真系统构架设计;第2部分介绍仿真系统的静态和动态结构;第3部分介绍系统仿真引擎的设计;第4部分进行总结。
设计该系统构架是为了使用构件技术解决虚拟操作训练领域的系统仿真问题,包括统一建模标准、建立模型与模型驱动之间的连接等,从实际执行的角度来讲,属于软件体系结构范畴。
1.1 软件体系结构
随着系统规模和复杂度的加大,总体系统结构的设计变得比所用算法和数据结构更加重要。现在仍然没有统一的软件体系结构的定义,一般来讲,软件体系结构是整个软件系统的总体结构,其关键要素在于哪种构件能被用来建立系统,以及构件之间如何相互连接和相互作用,所有这些方面的选择决定了软件体系结构的不同风格。虚拟操作训练领域仿真系统采用面向对象的设计思想,因此可以使用面向对象的体系结构。
1.2 仿真系统的体系结构
虚拟操作训练领域仿真系统设计的目的在于建立一个统一的软件体系结构和相应发展规范,以促进不同类型虚拟操作训练系统的发展。另外,很多操作设备构件的形状和可见行为都是相似的,因此我们可以开发一个构件库来促进软件的重用以节省开发时间和资源。基于以上考虑,虚拟操作训练领域仿真系统采用“构件-构架-对象总线”的体系结构。
1)构件。构件是具有一定功能并能在软件开发和应用过程中被组装和维护的基本单元。从概念上来讲,构件也是对象,可以由一个简单对象或多个组合对象组成以实现一个特定对象。
2)构架。构件技术中的构架是针对该问题应用程序的部分解决方案,可以作为一种运行和整合各构件的构架。在分布式系统中,有很多本地和远程应用程序,构架仅能描述一个应用程序的整体结构,因此,对构架的描述只能解决一部分问题。但作为相似问题的统一解决办法,构架可以作为在这些应用中提供相同控制结构的构件,在不同应用中被再次使用,因此能够实现更高程度的代码重用。
3)对象总线。它是与中心程序相关的分布式系统的附属部分。对象总线实际上是分布式互联设备的运行支持系统,被称为分布式系统的中间件,有时为分布式系统提供基础支持,是一个特殊装置。它使应用程序中的各构件和构架能够调用分布式环境中其它构件和构架的服务和功能,因此构件和对象的能力可被扩展到一个开放网络中。
总之,在“构件-构架-对象总线”体系结构中,构件提供软件模块,构架负责将这些单元组合成一个有机的整体应用,而对象总线完成不同构架和构件间服务的透明调用,因此可以实现网络中各节点的分布式应用。基于这种构件设计思想,分布式应用系统具有如下特征:
1)各构件之间通过事件服务和构架互相调用,也就是说构件被构架调用,而不是在构件之间直接调用。
2)构件和构架共同组成了分布式系统单元的应用。分布在不同系统单元中的各构件是通过对象总线和构架实现相互作用的。
3)通过构件和构架实现最大程度的代码重用。
4)分布式系统软件通过对象总线连接各对象,用构架控制软件结构,通过各构件修改软件功能。
1.3 仿真系统的构架
基于上述“构件-构架-对象总线”体系结构,使用高级体系结构HLA中的RTI作为总线[4,5],用COM构件技术和面向对象的方法,虚拟操作训练领域仿真系统的构架设计如图1所示。
图1 虚拟操作训练领域仿真系统的构架
首先,在运行时,当虚拟设备构件管理模块需要一些构件时,会将构件装入运行空间并识别、注册以及管理其接口,并通过构件及其接口之间的相互作用建立联系图。当需要从节点的运行空间移出一些构件时,应卸载并更新相关管理和处置信息。接下来操作系统将为虚拟构件提供信息,从而决定操作指令并将其发送到系统的仿真引擎,然后系统引擎将分析该操作指令并调用虚拟构件接口进行响应。
2 仿真系统的建模方法
虚拟操作训练领域仿真系统的所有应用系统都能表示为静态结构和动态结构两个方面。本文用UML来描述系统的结构和行为,其中,静态结构主要由类图表示,而动态结构主要用状态图描述。类图是一种用类和类间关系进行系统描述的插图,是从静态方面表示的系统。类图是构成其它示意图的基础,如果没有类图,就不会有状态图或其它示意图。状态图用来描述生命周期中对象处于哪种状态、每种状态的行为以及哪种事件可以导致对象状态的变化。
2.1 静态结构图
对于系统的设计,最关键的问题就是将类定义在什么样的粒度。如果定义的粒度太小,系统构架需要管理的构件过多,将不利于系统构架的设计和促进系统的执行;另一方面,如果定义的粒度太大,软件重用的最终目标就不容易实现了。针对不同类型的虚拟操作训练系统,可以定义不同粒度的类,例如对于虚拟维护训练系统,可以将类定义在联合体类或模块类等这种大的粒度中。本文以虚拟维护训练系统为例定义构件类和单元类。其中,构件类将每个实际设备的联合体定义为一个类,系统将管理该类并传送相关信息;单元类将一个实际设备单元定义为一个类,与其相关的构件由构件联合体管理。从定义可以看出,我们可以用单元类实现系统构件的重用目的。对于虚拟维护训练系统,一个典型的构件类类图如图2所示。
图2 一个典型类图
2.2 动态结构图
状态图主要用来描述对象、子系统和系统的生存周期。通过状态图可以知道对象能够达到的所有状态以及系统能够响应的所有事件。只要其状态和复杂操作已被标记,所有的类都应该有状态图。在虚拟操作训练领域仿真系统中,因为元素的行为都是相对独立的,因此可以动态地模拟构件行为。在使用仿真系统完成各种不同训练任务的情况下,每种状态中构件的状态转换都是不同的,因此,如果有必要,每个训练环境中的构件联合体都应该有一个状态图。一些设备及其构件的开/关状态图如图3所示。
图3 状态图插图
3 仿真系统的仿真引擎设计
虚拟操作训练领域仿真系统采用面向对象的设计方法,系统操作是完全建立在消息驱动的机制之上的,因此其仿真引擎的主体功能是完成消息的传送和仿真过程的控制。
在图1中,我们也能看见该仿真系统仿真引擎的功能结构。当仿真引擎接到本地用户的操作指令或网络中的远程操作指令,它会根据系统的状态图进行指令的分析,并生成反馈信息发送给虚拟构件作为响应,然后,仿真引擎将调用虚拟管理构件以便在反馈信息中获得目标构件的界面。通过构件的界面,反馈信息将被传送到虚拟构件并引起响应。如果发送的是本地的操作指令,仿真引擎还需要将该指令上传至网络作为远程操作指令节点。
4 结论
如果这种“构件-构架-对象总线”体系结构用于软件开发,一些必要的构件设计完成后,对于组合电路中数字电路系统的设计来讲,软件开发的过程实际上是一个组装过程。第一步是根据构架寻找可重用构件,然后根据具体要求组装所有构件,最后,每一个构件可以利用事件和消息装置构成综合的应用程序,这样,软件的构件结构就能够实现代码重用甚至是构件的组装,以实现不同的训练功能,因此这种体系结构的应用能够解决现存设备仿真器中不规则结构和单一功能问题。
[1] 桑大勇,王瑛.基于构架的软件重用技术综述[J].空军工程大学学报(自然科学版),2000, 1(5): 84-86.
[2] 莫世峰, 何贤江, 王秉中.一种总线型软件体系结构的设计与应用[J].计算机应用,2004, 24(5): 98-101.
[3] 王兴武, 宋雨.基于构件/构架复用技术的仿真系统软件研究[J].华北电力大学学报,2003, 30(6): 63-66.
[4] 谢卫平, 邓苏, 沙基昌, 刘忠.基于构件技术的HLA仿真[J].计算机工程与应用, 2002,38(3): 114-116.