一种需求模型到仿真模型的模型转换方法

文档序号:6637244阅读:217来源:国知局
一种需求模型到仿真模型的模型转换方法
【专利摘要】本发明针对需求模型难以验证的问题,提出了一种从需求模型到仿真模型的转换方法,能够实现需求模型到仿真模型的自动转换。该转换方法,首先设计需求模型到仿真模型的转换框架,在此基础上,分别设计需求模型元模型,仿真模型元模型,以及需求模型元模型到仿真模型元模型的转换规则,最终实现需求模型到仿真模型的自动转换。该方法实现需求模型和仿真两种异构模型同构化,提高嵌入式软件开发效率,丰富并且完善模型驱动开发,也为飞行控制系统,高速铁路控制,机载航电系统等嵌入式软件开发提供了技术支持。
【专利说明】一种需求模型到仿真模型的模型转换方法

【技术领域】
[0001]本发明涉及一种需求模型到仿真模型的模型转换方法。

【背景技术】
[0002]需求建模是软件需求工程中的一项重要的活动,需求工程师通过采用不同的建模方法识别、理解、挖掘需求提供者对系统的期望,从而构建软件系统的结构模型,行为模型,或者其他各种对展示待开发软件的不同特性的模型。如何验证需求模型的正确性,可以采用形式化的方法,但是形式化的方法对难以理解、同时要求软件开发人员有较强的数学功底。为此我们采用仿真的方式验证需求模型的正确性。如何从需求模型过渡到仿真模型,通常是软件开发人员根据需求模型手工完成仿真模型。软件开发人员在软件开发过程中完成各种模型,这势必增加开发人员工作量;另一方面,由于都是手工完成各种模型,开发人员难以保证各类模型的一致性。因此,如何从需求模型转换到仿真模型已经成为软件开发的重要问题。


【发明内容】

[0003]本发明针对需求模型难以验证的问题,提出了一种从需求模型到仿真模型的转换方法,能够实现需求模型到仿真模型的自动转换。
[0004]本发明提出了一种需求模型到仿真模型的转换方法,首先设计需求模型到仿真模型的转换框架,在此基础上,分别设计需求模型元模型,仿真模型元模型,以及需求模型元模型到仿真模型元模型的转换关系,最终实现需求模型到仿真模型的自动转换。
[0005]该需求模型到仿真模型的模型转换方法,包括以下主要步骤:
[0006]I)建立需求模型到仿真模型的模型转换框架;
[0007]模型转换框架分为三层:元元模型层(M3层)、元模型层(M2)、模型层(Ml),元元模型能够生成需求模型元模型、仿真模型元模型以及ATL语言;
[0008]需求模型元模型能够生成需求模型,仿真模型元模型能够生成仿真模型,ATL语言能够生成ATL模型;
[0009]2)建立需求模型元模型
[0010]在模型转换框架的元元模型的基础上,根据用户选择的需求模型的语义和语法,构造需求模型元模型,需求模型元模型分为三类:数据类型元模型、对象元模型和连接元模型;
[0011]3)建立仿真模型元模型
[0012]在模型转换框架的元元模型的基础上,参照需求模型元模型的结构,构造仿真模型元模型,仿真模型元模型也分为三类:数据类型元模型、对象元模型和连接元模型;
[0013]4)建立需求模型元模型和仿真模型元模型的映射关系
[0014]建立需求模型元模型和仿真模型元模型之间数据类型元模型的映射、对象元模型的映射和连接元模型的映射。
[0015]上述数据类型元模型表示需求模型中所涉及的数据类型;
[0016]对象模型表示需求模型的客观对象,包括类和注释;其中类包括属性和操作,建立属性与数据类型、枚举类型的关联,建立操作与属性的关联;
[0017]连接模型表示类之间关系、类与注释之间的关系,其中类之间关系包括组合、聚合、引用和继承,类与注释之间的关系采用注释链接描述;
[0018]步骤4)建立的映射关系包括:需求模型元模型的数据类型映射到仿真模型元模型的数据类型;需求模型元模型的类映射到仿真模型元模型的类,需求模型元模型的类的属性映射到仿真模型元模型的类的属性,需求模型元模型的类的操作映射到仿真模型元模型中类的操作,需求模型元模型中类与类之间的关系映射到仿真模型元模型中类与类之间的关系。
[0019]本发明具有的优点:
[0020]?本发明的模型转换技术遵循对象管理组织提出的模型驱动架构标准,从而避免了对特定平台和语言的依赖,具有通用性和重用性。
[0021]?另一方面,本专利实现需求模型到仿真模型两种异构模型的自动转换,代替了从需求模型到仿真模型的手工转换,节省了人力成本,提高了软件开发效率。

【专利附图】

【附图说明】
[0022]图1为模型转换框架。
[0023]图2为KM3元模型结构。
[0024]图3为UML状态图元模型。
[0025]图4 为 Stateflow 元模型。
[0026]图5为自动飞控软件状态图。
[0027]图6 为 Simulink 模型。

【具体实施方式】
[0028]本发明的具体步骤如下:
[0029]I建立模型转换框架
[0030]模型转框架如图1所示,分为三层。最顶层M3层是元元模型层,M2是元模型层,Ml是模型层。按照模型驱动理论中各类模型间的关系,元元模型可以生成元元模型和元模型,根据元模型可以生成模型。元元模型可以通过自身定义,同时可以生成需求模型元模型、仿真模型元模型、ATL语言。需求模型元模型生成需求模型,仿真模型元模型生成仿真模型,ATL语言生成ATL模型。对于使用者而言,只需要输入需求模型,通过一系列转换,自动转换成仿真模型。
[0031]2建立需求模型元模型
[0032]在模型转换元元模型的基础上,根据用户选择的需求模型的语义和语法,构造需求模型元模型。需求模型分类三类,数据类型模型、对象模型和连接模型。
[0033]数据类型模型表示需求模型中所涉及的数据类型,例如boolean, double, single,int8, uint8, intl6, uintl6, int32, and uint32 等;
[0034]对象模型表示需求模型的客观对象,包括类和注释;其中类包括属性和操作,建立属性与数据类型、枚举类型的关联,建立操作与属性的关联;
[0035]连接模型表示类之间关系、类与注释之间的关系,其中类之间关系包括组合、聚合、引用和继承,类与注释之间的关系采用注释链接描述;
[0036]提取需求模型元模型时,仅关注和仿真相关的需求模型,换句话说,这里的需求模型元模型只是需求模型的子集。如果仿真模型中某个元素无法与需求模型中的某一元素对应,需要对需求模型建立Profile (扩展),建立与仿真模型对应的需求模型元素,使它们之间可以映射。
[0037]3建立仿真模型元模型
[0038]这里仿真模型元模型的建立过程与需求模型元模型类似,但是仿真模型元模型不需要 Profile。
[0039]4建立需求模型元模型和仿真模型元模型的映射关系
[0040]第二、三步建立的元模型的目的是为了使它们之间存在有映射关系。映射关系也包含三部分,需求模型元模型的数据类型映射到仿真模型元模型的数据类型;需求模型元模型的类映射到仿真模型元模型的类,需求模型元模型的类的属性映射到仿真模型元模型的类的属性,需求模型元模型的类的操作映射到仿真模型元模型中类的操作,需求模型元模型中类与类之间的关系映射到仿真模型元模型中类与类之间的关系。
[0041]以下以UML需求模型到Simulink仿真模型的转换为例进一步详述本发明。使用KM3语言建立模型转换框架元元模型,在此基础上建立UML需求元模型、Simulink仿真元模型,进而撰写UML到Simulink转换规则。
[0042]I转换框架元元模型-KM3
[0043]KM3为元元模型如图2所示。KM3元模型结构中,KM3元模型由一系列Package (包)构成,一个Package由一些抽象ModelElement (模型元素)实体组成。ModelElement是一个元模型,拥有name属性,其他元素都继承于ModelElement。ModelElement的子类包括 Enumliteral (枚举值)、Classifier (分类器)、Annotat1n (注释)、DataType (数据类型)、TypedELement (类元)等。Annotat1n 由一系列 Annotat1nLink (注释关联)组成。Enumerat1n (枚举)至少包括一个Enumliteral。DataType (数据类型)和Class (类)继承于 Classifier。Classifier 和 Class 至少包括一个 TypedELement 类型元素。TypedElement定义了 lower、upper、isOrdered 和 isUnique 属性。StucturalFeature (结构特征)和Operat1n (操作)继承于 TypedElement。
[0044]2 UML状态机元模型
[0045]状态机是一个类/对象可能经历的所有历程的模型图。状态机由对象的各个状态和连接这些状态的转换组成。每个状态对一个对象在其生命期中满足某条件的一个时间段建模。当一个事件发生时,它会触发状态间的转换,导致对象从一种状态转化到另一新的状态。当转换开始时,会发生与转换关联的某种效果(动作或者活动)。
[0046]根据《0MGUnified Modeling LanguageTM(0MG UML),Superstructure》版本2.4.1。UML状态机的简化元模型如图3所示。一个状态机由仅有的一个顶级的状态机元素,一系列状态元素和转移元素组成。ModeleElement是所有元素的基类。其中虚状态、状态、终止状态继承顶点状态。初始状态、连接状态、分叉状态继承虚状态。顶点状态由执行活动、进口活动、出口活动组成。转移由监护条件、触发条件、效果组成。顶级状态和转移存在对应关系,一个顶级状态对应一个或者多个转移。
[0047]3 Simulink状态机元模型
[0048]Stateflow是MATLAB产品体系中非常重要的一个分支,它是在基于框图的动态系统建模仿真环境。Statef low能够对基于有限状态机理论的事件驱动系统进行建模和仿真,也能够针对复杂逻辑系统进行建模和仿真。UML有严格的语法、语义,然而Stateflow不同,需要对其元素仔细分析,从而创建Stateflow元模型。
[0049]Stateflow的基本概念包括:
[0050]I)状态机(State Machine)包含在模型中的所有Stateflow块的集合。一个Simulink模型中包含的所有Stateflow模型统称为一个Stateflow状态机;
[0051]2)图块(Chart)包含状态图的模块,即模型中的Chart。
[0052]3)框图(Diagram)状态图的图形化表述,即具体的图块所包含的内容。
[0053]4)状态是Stateflow状态图中最重要的元素之一,在有限状态机里,状态描述的是系统的一种模式。状态具有布尔行为,可以把状态看作为高级编程语言中的布尔类型变量,任何给定的时刻,状态要么是活动的要么是非活动的,不可能出现第3种情况。
[0054]5)状态动作的关键字主要有2种,分别为entry,当状态被激活时执行相应的动作。During,当状态保持其活动状态时执行相应的动作。
[0055]6)转移是Stateflow框图中最常见的图形元素之一,转移描述的是有限状态系统内的逻辑流。当转移发生时,源状态变为非活动的状态,目标状态变为活动的状态。
[0056]7)状态转移标识的一般格式为:event [condit1n] {condit1n_act1n}/transit1n_act1n。事件是Stateflow非图形对象的一种。在有限状态机中,只有在事件发生时,才可能去执行相应的转移。“ □”中的内容是条件,用于转移决策的逻辑判断。只有在相应的事件发生且条件也满足时,相应的转移才可能执行。紧接在条件后面“ {} ”中的内容就是条件动作,条件动作是在条件满足时就立即执行的某些表达式,例如赋值运算等〃。转移动作是整个转移标签的最后一个部分,位于“/”后面的内容都是转移动作。转移动作只有在整个转移通路都有效时才能够执行。
[0057]依据上述1)-7)内容,本文设计出Stateflow的元模型,如图4所示。
[0058]4元模型间的映射规则
[0059]由UML状态机元模型和Stateflow元模型可知,二者具有较高的相似性。都是由状态、转移、状态动作、时间、效果、条件等元素组成。依据UML状态机和Stateflow元模型,设计UML状态机和Stateflow的映射规则:
[0060]U2S1:ModelElement 映射到 SimulinkElement
[0061]ModelElement是UML状态机所有元素的基类,对应的设计Stateflow所有元素的基类 SimulinkElement0 ModelElement 映身寸到 SimulinkElement0
[0062]U2S2:StateMachineDiagrams 映射到 StateMachine
[0063]对于状态机这个词,UML和Simulink的理解略有偏差。UML的StateMachineDiagram 由 StateMachine 组成。Simulink 的 StateMachine 由 Chart 组成。因此 UML 的 StateMachineDiagram 与 Simulilnk 的 StateMachine 含义基本相同。
[0064]U2S3: StateMachineDiagram 映射到 Chart
[0065]与U2S2不同,这里的StateMachineDiagram指单个状态图,对应到Simulink中的Chart ο
[0066]U2S4:StateMachine 映射到 State
[0067]UML 的 StateMachine 由 State、Transit1n 等组成,Simulink 的 State 中也包含嵌套 State、Transit1n 等元素。
[0068]U2S5: State 映射到 State
[0069]与U2S4不同,这里UML的State指非嵌套的状态。UML和Simulink中的State含义相同,可以直接映射。
[0070]U2S6 transit1n 映射到 Transit1n
[0071]UML和Simulink中的转移含义基本相同,直接映射。
[0072]U2S7:DoActivity 映射到 DoActivity
[0073]UML和Simulink中的持续活动含义基本相同,直接映射。
[0074]U2S8:Entry 映射到 Entry
[0075]UML和Simulink中的进口活动含义基本相同,直接映射。
[0076]U2S9:Conditon 映射到 Condit1n
[0077]UML和Simulink中的条件含义基本相同,直接映射。
[0078]U2S10:Effect 映射到 Effect
[0079]UML和Simulink中的效果含义基本相同,直接映射。
[0080]U2S11:Trigger 映射到 Trigger
[0081]UML和Simulink中的事件含义基本相同,直接映射。
[0082]本发明以自动驾驶仪系统的自动飞控软件为模型,构建UML需求模型到Simulink仿真模型转换场景,作实例说明。具体步骤如下:
[0083](I) UML 模型
[0084]使用UML状态图对自动飞控软件的状态进行建模。根据自动驾驶仪当前的故障类另IJ,自动驾驶仪的状态分为正常状态、瞬时故障状态、伪正常状态、永久故障状态。其中根据故障的危险程度,永久状态又分为第一类永久状态、第二类永久状态、第三类永久状态。具体的状态图如图5所示。
[0085](2)模型转换引擎配置
[0086]利用Eclipse中ATL插件完成UML状态机到Stateflow模型转换的配置。在运行配置界面需要添加ATL映射规则(.atl),UML元模型,Simulink元模型(.ecore),源模型(.xmi),目标模型(.xmi)的相关路径。需要注意的是本文使用的UML源模型是ur1: http://www.eclipse.0rg/uml2/3.0.0/UML,Matlab版本是2011a。源模型和和目标模型都是标准XMI格式。
[0087](3) Simul ink 模型
[0088]使用脚本语言对模型转换引擎生成的Simulink XMI文件进行解析生成图6所示的Simulink模型。
【权利要求】
1.一种需求模型到仿真模型的模型转换方法,包括以下主要步骤: 1)建立需求模型到仿真模型的模型转换框架; 模型转换框架分为三层:元元模型层(13层〉、元模型层(12)、模型层(11),元元模型能够生成需求模型元模型、仿真模型元模型以及八I语言; 需求模型元模型能够生成需求模型,仿真模型元模型能够生成仿真模型,八II语言能够生成八II模型; 2)建立需求模型元模型 在模型转换框架的元元模型的基础上,根据用户选择的需求模型的语义和语法,构造需求模型元模型,需求模型元模型分为三类:数据类型元模型、对象元模型和连接元模型; 3)建立仿真模型元模型 在模型转换框架的元元模型的基础上,参照需求模型元模型的结构,构造仿真模型元模型,仿真模型元模型也分为三类:数据类型元模型、对象元模型和连接元模型; 4)建立需求模型元模型和仿真模型元模型的映射关系 建立需求模型元模型和仿真模型元模型之间数据类型元模型的映射、对象元模型的映射和连接元模型的映射。
2.根据权利要求1所述的需求模型到仿真模型的模型转换方法,其特征在于:数据类型元模型表示需求模型中所涉及的数据类型; 对象模型表示需求模型的客观对象,包括类和注释;其中类包括属性和操作,建立属性与数据类型、枚举类型的关联,建立操作与属性的关联; 连接模型表示类之间关系、类与注释之间的关系,其中类之间关系包括组合、聚合、弓丨用和继承,类与注释之间的关系采用注释链接描述; 步骤4)建立的映射关系包括:需求模型元模型的数据类型映射到仿真模型元模型的数据类型;需求模型元模型的类映射到仿真模型元模型的类,需求模型元模型的类的属性映射到仿真模型元模型的类的属性,需求模型元模型的类的操作映射到仿真模型元模型中类的操作,需求模型元模型中类与类之间的关系映射到仿真模型元模型中类与类之间的关系。
【文档编号】G06F17/50GK104484518SQ201410727954
【公开日】2015年4月1日 申请日期:2014年12月3日 优先权日:2014年12月3日
【发明者】郭鹏, 李亚晖, 牛文生, 张亚棣, 叶宏 申请人:中国航空工业集团公司第六三一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1