1.3.3 基于组件的仿真组合方法

基于组件(Component)的仿真组合方法借鉴了基于组件的软件工程技术。基于组件方法强调系统组成单元的接口设计和定义,通过这些接口的协作描述应用的体系结构和组成。这些接口是所有系统设计和分析活动的焦点。在这些接口设计的基础上,软件开发人员可以采用不同的技术实现这些接口,用户仅需要引用接口就可以使用不同的组件实现不同的功能。这种方法减少了组件开发人员和系统集成之间的耦合关系,便于组件的升级和替换,提高了以组件为基础的系统开发和维护的灵活性。组件的接口化要求组件必须尽可能提供可重用的服务接口,并能够独立完成相关的接口服务,减少组件之间的依赖性,这样才能在系统应用开发和维护中不断地升级和维护不同的软件组件。

Java、C#、UML等新一代软件程序设计语言和软件开发环境均支持基于组件的开发,其中Java语言和C#的反射机制使得软件对象和组件可以具备接口描述信息,更容易为其他组件所使用,许多采用这些语言和环境开发的仿真工具也属于基于组件的仿真应用。这些工具在组件设计技术的支持下可以建立公共组件库,通过仿真模型组件、仿真工具组件更容易实现仿真应用的开发、维护、仿真系统框架的扩展和仿真系统的使用。

REPAST(Recursive Porous Agent Simulation Toolkit)是芝加哥大学的社会科学计算研究中心开发的一个基于Agent的“类Swarm”的仿真软件架构,目的是提供一个比Swarm更容易使用的仿真软件,使得用户能够在较短的学习周期内掌握软件使用。REPAST的最主要特点是底层结构组件的抽象性,很强的可扩展性和良好的表现能力。它提供了一系列的Agent仿真组件库,用来生成、运行、显示模型并收集模型的有关数据,同时还能够对运行中的模型进行“快照”以及生成模型运行的影像资料。REPAST用Java语言写成,可以在Windows和UNIX操作系统上运行,最新版本是基于Eclipse平台的REPAST S。

NetLogo是由美国西北大学的CCl(Center for Connected Learning)研发的,从2002年5 月开始正式推出第1 版起,先后推出了多个版本,最新的版本是2006 年发布的Version 3.1.4。NetLogo虽然推出时间不长,但基于组件的仿真组合方法使其发展很快,几乎每隔几个月就发布新的版本,近来的版本开始融合了HubNet的最新技术。由于HubNet实现的网络功能,从而使得NetLogo不仅可用于科学研究,而且可以供老师和学生在课堂的网络教学环境中使用。NetLogo用Java语言写成,能够运行于Mac、Windows和Linux等多种平台,单个的模型还可以用Java Applets的形式在Web Browser中运行。

仿真模型可移植标准由欧洲航天局制定,最初目的是实现仿真模型在不同仿真平台、不同研制阶段以及不同型号之间的重用和移植。SMP 1.0标准基于微软的COM组件技术进行设计,其中的组件模型接口规范定义了基本的模型框架及仿真运行框架,为仿真模型和仿真框架都提供组件模型。组件模型定义了仿真模型组件之间的交互方式、仿真模型组件与仿真服务组件之间的访问和调用机制,使得任意兼容该接口规范的仿真环境均可用于集成和运行SMP模型,从而使SMP仿真模型能够在不同仿真环境和平台上具备可移植性以及重用性。

1996年,美国陆军启动了下一代一体化的CGF仿真系统OneSAF(One Semi-Automated Force),用以取代模块化半自动化兵力系统(Modular Semi-Automated Force,ModSAF)以及近战战术训练系统(Close Combat Tactical Trainer,CCTT)等CGF仿真系统。OneSAF是一个基于组件的可组合的新一代CGF系统,包含一系列仿真组合工具以及模型和组件资源库。在OneSAF分层的产品体系结构中,高层的工具由低层的组件组成。OneSAF为其每一个产品提供了一些列标准组件,典型的产品包括:军事想定规划器、模型及仿真组合器、仿真核心服务、C4I适配器等。OneSAF产品线体系结构提供了一个层次化结构,从上到下依次包括应用层、产品层以及组件层。应用层用于描述用户的配置信息;产品层用于生成完整的仿真系统配置,如仿真生成器产品由一系列组件构成。组件层提供构成每一个产品的标准组件,典型的组件包括实体模型、行为模型、物理模型、单元模型等。OneSAF同样支持组件的开发,包括定义组件的服务与接口、从而使模型组件能够独立开发,并能够在后续组合过程中形成一系列产品和配置。

OneSAF借鉴了组件的设计方法,基于描述组件的元数据描述不同的组件,基于Java语言和Java动态反射机制采用开放的策略构建OneSAF核心。其中OneSAF的核心如消息服务、仿真运行对象数据库、行为物理模型组合框架等均基于Java语言和开放源代码的组件开发,大大减少了系统开发和维护的难度。然而DMSO在可组合仿真研究中认为其主要缺点在于其组件库对于已有仿真系统是封闭的。虽然其描述组件的元数据可以用于非OneSAF组件,但相关元数据没有标准化,也不包含用于装配其他仿真系统组件的组合指令。很多软件系统在设计上也存在同样的问题,为此需要从软件框架和系统设计开始就应建立系统组件、对象和服务的平台无关的描述,这样系统中的组件、甚至是系统的架构都可以得到重用,由此基于组件的仿真也开始向基于MDA的仿真发展。