1.5 仿真模型可移植性规范及其应用
欧洲航天局已经开发了面向分析、工程运行准备和训练等不同应用的仿真系统。这些仿真系统的开发由不同的部门承担,运行于不同的平台和采用不同的计算机语言。这些计划中还涉及大量的二级承包商,因此开发出了大量的、不同类型的仿真模型。
为定义一个模型开发与集成标准以解决仿真模型可移植性和可重用问题,欧洲航天局开展仿真模型可移植性规范SMP的研究。SMP标准的目的是提高不同仿真环境和操作系统中模型的可移植性,并提高模型的可重用性。该目标又被进一步划分为以下四个目标:
· 模型和环境之间的交互最小化;
· 标准化模型使用的接口;
· 简化模型自身的接口;
· 使模型能为其他开发人员所理解。
这些目标在欧洲航天局管理机构和工业界达成了共识并受到了高度重视。1999年,在欧洲航天局诞生了基于COM(Component Object Model)组件规范的SMP 1.0版本,并在GPTB(Generic Project Test Bed)、GSSF(Galileo System Simulator Facility)、空间飞行器运行模拟器等项目中得到了应用。然而,经过应用实践,SMP1暴露出了许多问题。这些问题包括:不支持面向对象、接口和组件等支持现代软件的重用方法;必须手工编写大量集成代码以支持模型集成,进而需要开展额外的工作并容易产生错误;没有包含模型的原数据(Meta-Data),模型缺乏自描述能力;只能应用于特定的计算机平台等。
为此,2004年欧洲航天局借鉴OMG组织的MDA思想,将仿真模型的设计信息与运行信息相分离,提出了仿真模型可移植性规范SMP 2.0版本。作为一个仿真模型开发和集成的标准,欧洲航天局对SMP 2.0提出了以下的应用需求。
1)仿真环境之间模型的可移植性
通过提供仿真模型在不同仿真环境之间的标准接口,SMP标准应支持不同的仿真环境之间模型的可移植性。因为仿真环境提供给模型的接口和模型提供给仿真环境的接口都没有变化,因而无需修改仿真模型源代码,即可将模型插入不同的仿真环境。
2)模型在不同平台之间的可移植性
SMP标准应支持模型在不同操作系统和硬件之间的可移植性。该标准定义了一系列模型开发指南,指导模型开发人员在开发过程中如何避免使用操作系统开发模型,如避免调用特定操作系统相关的API或者硬件相关的API。
3)支持现代软件工程技术
SMP标准应支持并鼓励使用现代软件工程技术,特别是面向对象的设计和基于组件的设计,以保证最大程度上使用已证明能大大提高软件开发生产率的现代技术。
4)模型重用
在仿真系统开发过程中,缺乏重用性是提高生产率以及中长期可靠性的主要障碍。重用要求模型应设计为可重用的,这是SMP的主要目标。它可以帮助模型开发人员开发出能够在不同的仿真系统中可部署的可重用模型,并可以用于许多不同的仿真环境,支持在组织和任务之间的模型交换。可重用需要解决以下问题:
· 打破模型之间的依赖;
· 定义良好的接口,清楚地描述模型如何插入到仿真环境;
· 自描述的模型,能向仿真环境展示它的需求和特点(设计时和运行时);
· 定义模型如何部署到目标平台。
基于组件的技术主要用于解决上述问题,现在已经成为开发大型复杂软件密集型系统的主流方法。SMP标准因而应支持基于组件的开发方法来提高模型的重用性。
5)模型集成
SMP标准要支持将单个模型集成起来形成一个完整的系统仿真。改进的模型集成和模型重用有着密切的联系,因为它依赖于定义良好的可重用模型,便于将这些模型按照标准的机制进行组装。
6)模型开发生产率
SMP标准应该减少模型开发人员实现模型基础元素的工作量,使得这些模型易于集成到仿真环境中或与其他模型进行集成。这样,模型开发人员将专注于模型的功能开发,而不是将精力花在模型的基础构造方面。
7)系统工程数据的集成
为更容易利用系统工程数据,SMP标准应支持系统设计过程中仿真的进一步使用,甚至可以完全依据数据配置仿真。这样,既通过将仿真和定义真实产品的工程信息的紧密结合提高了仿真的真实性,又通过更加自动化的仿真开发提高了生产率。
8)可配置仿真和柔性仿真
SMP应该支持开发高可配置的和柔性的仿真系统,以便被仿真系统的配置能够被快速改变和进化。这对早期设计阶段特别重要。在此阶段,真实系统的设计易于变化,需要考虑许多设计问题和进行大量权衡。
9)元模型支持
SMP标准应该支持确定模型附加的机器可读信息。该信息可以用于自动化(如文档生成和代码框架生成)或提高运行和设计时的模型信息表示。
10)开放标准的使用
SMP标准应基于开放的标准,以减少对专有技术的依赖性。这些专有技术可能会限制模型的移植性或需要特定的运行开发许可。
为实现上述目标,SMP 2.0提供了一个模型开发框架,以实现仿真模型的平台独立、跨仿真平台重用和集成。SMP 2.0借鉴了OMG的MDA方法,抽象出了工程层次仿真模型的元数据信息,强调仿真中平台独立模型与仿真平台相关模型的概念,所有的SMP 2.0模型都采用公共的高层抽象概念开发,这些概念涵盖了基本的模型描述和模型互操作模式,使得模型能在抽象层次上描述,形成与平台无关的仿真模型。SMP 2.0组件模型规范提供了基本的模型框架及仿真运行框架,包括模型体系构成,仿真模型之间的互操作方式,仿真模型与其他组件模型之间的访问机制,相关的仿真服务等。SMP 2.0标准采用基于XML的仿真模型定义语言(Simulation Model Definition Language,SMDL)描述仿真模型的设计信息、装配信息和运行调度信息。
2005年,SMP形成了SMP 2.0规范的1.2版本,最终确定了SMP 2.0规范的基本内容。2006年和2007年,ECSS围绕SMP 2.0开展了仿真开发工具开发与使用、仿真应用开发等一系列的能力确认工作。ECSS认为SMP 2.0是一个能使开发人员集中于应用工程工作而不是仿真基本支持功能的有效方法,并能够使不同的开发组织通过公用的语言和规范共享模型。2008 年,ESCC将SMP 2.0 规范的1.2 版本推荐为ESCC标准,标准号为ECSS-E40-07。目前,欧洲航天局基于SMP 2.0规范开展了公共模型向SMP 2.0的移植工作。这些移植模型包括PEM(Positioning and Environment Model)、SIMDYN(Spacecraft Dynamics Simulation)、TNET(Spacecraft Thermal Network)、SENSE(Spacecraft Electrical Network)、SIMPACK(Spacecraft TM/TC Toolkit)等。另外SMP 2.0规范也已经应用于欧洲航天技术中心的伽利略系统仿真辅助工具GSSF、欧洲航天运行中心的金星探测和火星探测计划,支持航天系统概念设计的协同仿真环境SimVis等工程项目中,实现了不同领域和不同组织仿真模型可持续的开发和集成。为简化起见,本书后面的SMP含义默认为SMP2.0。