1.本技术涉及可靠性分析技术领域,特别是涉及一种模型转换方法、装置、计算机设备和存储介质。
背景技术:2.随着现代作战需求对装备能力要求的提高,以及新技术的革新和飞速发展,装备的集成度和复杂度越来越高。传统的基于文档的设计方法存在数据歧义、知识难重用、文档组织效率低、学科间关系不清晰等一系列问题,为解决这些问题,基于模型的系统工程(model-based system engineering,简称mbse)应运而生。随着系统研发环境日趋模型化、数字化,传统的可靠性设计分析模式也暴露出许多问题。针对国内相关行业大力推广mbse设计模式的现状以及传统可靠性设计存在的问题,基于模型的可靠性系统工程(model-based reliability system engineering,简称mbrse)相关技术及平台工具,也逐渐成为研制单位关注的焦点。在对mbse下建立的模型做可靠性分析时,需将mbse下建立的模型转换为mbrse下的模型。
3.传统技术中,在对mbse下建立的模型进行转换时,仅将该模型中模块、端口、端口方向及端口之间的连线进行了转换。转换内容的丰富性较差,这使得后续在开展可靠性分析时难以确定故障传递的方向。
技术实现要素:4.基于此,有必要针对上述技术问题,提供一种能够将mbse下建立的模型无损转换为mbrse下的模型的模型转换方法方法、装置、计算机设备和存储介质。
5.第一方面,本技术提供了一种模型转换方法。所述方法包括:
6.获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;
7.将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;
8.根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。
9.在其中一个实施例中,所述第一端口为标准端口和流端口的合集port;所述将所述至少一个模型元素转换为所述第二端口内的端口变量,包括:
10.获取所述至少一个模型元素中每个模型元素对应的端口类型;
11.根据所述每个模型元素对应的端口类型,在所述至少一个模型元素中查找端口类型为目标类型的模型元素,所述目标类型为流类别或者模块;
12.将所述端口类型为目标类型的模型元素内定义的流属性作为所述第二端口内的
端口变量。
13.在其中一个实施例中,所述第一端口为代理端口proxy port,所述至少一个模型元素包括所述代理端口proxy port对应的接口模块端口变量;所述将所述至少一个模型元素转换为所述第二端口内的端口变量,包括:
14.判断所述代理端口proxy port对应的接口模块端口变量内是否定义了流属性,若所述代理端口proxy port对应的接口模块端口变量内定义了流属性,则将所述流属性作为所述第二端口内的端口变量。
15.在其中一个实施例中,所述第一端口为完整端口full port;所述将所述至少一个模型元素转换为所述第二端口内的端口变量,包括:
16.在所述至少一个模型元素中查找端口类型为模块的模型元素;
17.将所述端口类型为模块的模型元素内定义的流属性作为所述第二端口内的端口变量。
18.在其中一个实施例中,所述获取所述端口变量的方向,包括:
19.获取所述端口变量对应的目标模型元素以及所述目标模型元素对应的目标端口;
20.若所述目标端口有方向,所述目标模型元素无方向,则将所述目标端口的方向作为所述端口变量的方向;
21.若所述目标端口有方向,所述目标模型元素也有方向,则将所述目标模型元素的方向作为所述端口变量的方向;
22.若所述目标端口无方向,所述目标模型元素也无方向,所述目标端口上定义了项目流,则根据所述项目流,确定所述端口变量的方向。
23.在其中一个实施例中,所述第一程序语言为sysml语言,所述第二程序语言为altarica语言。
24.第二方面,本技术还提供了一种模型转换装置。所述装置包括:
25.第一获取模块,用于获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;
26.转换模块,用于将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;
27.第二获取模块,用于根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。
28.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
29.获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;
30.将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转
换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;
31.根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。
32.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
33.获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;
34.将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;
35.根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。
36.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
37.获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;
38.将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;
39.根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。
40.上述模型转换方法、装置、计算机设备和存储介质,首先获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;然后,将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;最后,根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。可将mbse下建立的模型无损的转换过来,同时系统模型之间的交互关系也变得更加清晰,使得可靠性设计分析人员能清楚理解系统各组成部分之间的相关影响,便于在开展可靠性分析时确定故障传递的方向。
附图说明
41.图1为一个实施例中sysml图分类;
42.图2为一个实施例中新增端口变量定义功能的示意图;
43.图3为一个实施例中端口变量模型整体框架的示意图;
44.图4为一个实施例中故障传递关系的示意图;
45.图5为一个实施例中调整后的故障传递关系的示意图;
46.图6为一个实施例中双向端口模型等价示意图;
47.图7为一个实施例中双向端口变量故障传递模型示意图;
48.图8为一个实施例中双向端口变量分析示例图;
49.图9为一个实施例中逻辑子树的示意图;
50.图10为一个实施例中模块a发生故障后的故障传递示意图;
51.图11为一个实施例中故障树的示意图;
52.图12a为一个实施例中模块b发生故障后的故障传递示意图;
53.图12b为另一个实施例中故障传递示意图;
54.图13为一个实施例中模型转换方法的流程示意图;
55.图14为一个实施例中第一模型的示意图;
56.图15为一个实施例中模型转换装置的结构框图;
57.图16为一个实施例中计算机设备的内部结构图。
具体实施方式
58.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
59.mbse是数字化时代的一种以模型为载体的系统工程思想,包含形式化建模、仿真分析、验证评估等一系列技术方法。将传统设计文档描述的系统设计要求、行为、结构、参数等要素转换成关系清晰的形式化模型,从而将系统表征成一个可运行、可分析的数字化模型,更好的支持系统要求论证、设计、分析、验证等全寿命周期过程活动。mbrse是在mbse对功能特性设计的基础上,以形式化的图形和描述语言表征产品故障逻辑、状态转移、概率分布、测试关联、维修活动、保障资源等可靠性要素,建立融合产品系统功能特性与可靠性要素的形式化统一模型,并实现功能特性与可靠性一体化设计分析,使系统设计模型化、规范化,进而推动产品正向设计的实现。在对mbse下建立的模型做可靠性分析时,需将mbse下建立的模型转换为mbrse下的模型。
60.在一些实施例中,从mbse到mbrse的模型转换方法主要是将sysml模型转化为altarica模型。sysml是mbse的标准建模语言,由对象管理组织发布,它是对uml2.0的子集的重用和扩展,用以构建设计良好、层次清晰且可维护的复杂系统,将基于sysml语言构建的模型称为sysml模型。sysml模型和上文提到的mbse下建立的模型在本技术实施例中含义相同。如图1所示,一共有9种sysml图,其中重用了许多主要的uml图,如顺序图、用例图、状态机图和包图;而某些图则对uml进行了修改,如模块定义图和内部模块图分别类似于uml的类图和复合结构图。通过对各类图进行合理的运用及设计,能够描述出复杂系统的层次、结构、行为、属性及组件间的关系。
61.目前,在工程与项目中运用较多的几类图为模块定义图,内部模块图和状态机图等。模块定义图用于定义模块的属性特征及其与其他模块之间的结构关系,可构建层次清晰的系统整体架构。内部模块图用于描述模块定义图中定义的模块内部或模块实例之间的
联系与信息的传递。状态机图属于sysml行为图中的一种,它描述了一个对象在其生命周期内的所有状态及状态转换关系。作为一种图形化建模语言,sysml充分发挥了其在建模领域中层次表达清晰,内容表述丰富的优势,能有效提高系统建模的效率。正因如此,sysml成为mbse中一种重要的模型语言,目前广泛应用于航空航天等不同领域。但是,sysml缺乏严格的形式化定义,在语义表达上存在一定的歧义,难以直接应用于系统可靠性分析中,因此,为实现面向sysml的系统可靠性分析,需要将其转换成拥有形式化定义的altarica语言,即将mbse下建立的模型转换为mbrse下的模型。
62.altarica是一种用于复杂系统事件驱动建模的高级语言,有着严格的语法和语义定义,特别适用于安全分析和性能分析。事实上,altarica己成为基于模型的安全评估的欧洲工业标准。到目前为止,己经发布了altarica、altarica data-flow和altarica 3.0三种版本。altarica3.0扩展了前两个版本的语言表达能力,使其可以处理循环系统;同时altarica 3.0是一种面向原型的语言,面向原型的组件层次结构管理方式在建模领域更为合理。
63.幸运的是,支持sysml的建模工具通常具有良好的模型交互能力,可以在工具中将模型存储库中捕获的sysml模型导出为xmi的标准格式,再利用元数据交互机制将其转换为需要的目标模型。目前,应用较为广泛且支持这一交互功能的建模工具有enterprise architect(ea)、rhapsody、magicdraw等。
64.现有的从sysml到altarica的模型转换方法包括以下步骤:
65.(1)针对sysml图中的模块定义图、内部模块图和状态机图进行分析,并结合altarica3.0语法和语义,设计出sysml设计模型到altarica3.0分析模型的映射规则。
66.建立的映射规则包括模块定义图的映射规则、内部模块图的映射规则和状态机图的映射规则。模块定义图的映射规则包括块的映射规则、值属性的映射规则、端口的映射规则、组成属性的映射规则、引用属性的映射规则、操作的映射规则、约束的映射规则和泛化关系的映射规则以及值类型转换的映射规则。
67.块的映射规则为:将sysml模块定义图中多重性为0的块转换为altarica3.0的block;多重性不为0的块转换为altarica3.0的class。
68.值属性的映射规则为:将sysml块的值属性转换为altarica3.0的状态变量。
69.端口的映射规则为:将sysml块的流端口转换为altarica3.0的流变量。
70.组成属性的映射规则为:将sysml块的组成属性转换为altarica3.0的组合。
71.引用属性的映射规则为:将sysml块的引用属性转换为altarica3.0的聚合。
72.操作的映射规则为:将sysml块的操作转换为altarica3.0的事件。
73.约束的映射规则为:将sysml块的约束转换为altarica3.0的断言。
74.泛化关系的映射规则为:将sysml模块定义图中的泛化关系转换为altarica3.0的继承;
75.值类型转换的映射规则为:将sysml模块定义图中的枚举类型转换为altarica3.0的域。
76.内部模块图的映射规则为:将sysml内部模块图中的组成属性转换为altarica3.0的组合;将sysml内部模块图中的流端口转换为altarica3.0的流变量;将sysml内部模块图中的连接器转换为altarica3.0的断言。
77.状态机图的映射规则为:将sysml状态机图中的transition转换为altarica3.0的转换;将transition的触发转换为altarica3.0转换中的事件e;将transition的卫士转换为altarica3.0转换中的卫士g;将transition的影响转换为altarica3.0转换中的指令p。
78.(2)建立sysml及altarica3.0元模型结构,并利用atl模型转换语言定义映射规则,实现sysml模型与altarica3.0模型的自动转换。
79.sysml元模型利用ecore建模语言进行建模或通过建模工具将设计的元模型转换为eco二格式。通过建模工具将设计的元模型转换为eco二格式获取sysml元模型的流程为:
80.①
查阅sysml官方技术文档或规约文档并从中提取模块定义图、内部模块图和状态机图的元模型。
81.②
在建模工具enterprise architect中建立sysml模型是并导出sysml模型文档。
82.③
分析sysml规约文档以及sysml模型文档,并从中提取出既符合官方定义又可应用于atl转换流程的元模型;
83.④
利用enterprise architect在模块定义图中对步骤3提取的元模型进行绘制,然后将其导出为ecore格式形成符合atl转换流程的sysml元模型。
84.altarica 3.0元模型由建模工具enterprise architect建立,建立的altarica 3.0元模型由若干domaindeclaration,classdeclaration和若干blockdeclaration组成,domaindeclaration,classdeclaration和blockdeclaration分别代表altarica中的域、class和blcok。
85.其中,domaindeclaration由symbolicconstant组成,代表的是定义的域的取值;classdeclaration包括transitionclause和assertionclause,transitionclause和assertionclause分别表示转换和断言;classdeclarationclause被classdeclaration和blockdeclaration共同拥有,classdeclarationclause包括exendclause,variabledeclaration和event,exendclause表示继承关系,variabledeclaration表示流变量和状态变量,event表示事件。
86.然而,上述方法在对mbse下建立的模型进行转换时,仅将该模型中模块、端口、端口方向及端口之间的连线进行了转换。转换内容的丰富性较差,这使得后续在开展可靠性分析时难以确定故障传递的方向。
87.在一个实施例中,考虑到现有mbrse模型框架与mbse模型框架可能存在差异。该差异体现在:mbrse模型将两个模块之间交互的每一个变量抽象成多个“flow”,并以多个端口的样式在图形化的模块边界上显示;而采用sysml规范建模时,模块与另一模块之间的所有交互变量均定义在一个端口下,端口本质上是变量交互的场所。图形化建模时只定义一个端口,然后在端口的“type”内(注:sysml中端口的通用模型框架为“端口类型《stand port/flow port/proxy port/port》”+“《port name》”:“《type》”,“《type》”为模型层级关系中某处创建的服务、交换事件、能量、数据等模型元素,表征在该端口内交互的具体变量)定义在该端口内交互的“变量组”。而数字化设计模式下,可靠性设计工作与功能特性设计需要协同开展,所以构建的mbrse模型应尽可能保持与sysml构建的mbse模型保持一致,以免产生模型转换后还需进一步验证转换正确性的重复性工作。因此,针对mbrse与mbse模型框架不一致问题,本技术实施例提出,对mbrse的模型框架及建模方法进行完善调整,主要包括以下几方面:
①
在端口下新增构建交互端口变量的建模的功能,同mbse模型一样,可在端口内
进一步定义多个与其他模块交互的端口变量;
②
单向端口变量(输入、输出)继承原单向端口(输入、输出)的故障建模功能及规则,并进一步将端口变量可定义的方向拓展成单向和双向两类,给出双向端口变量的故障建模方法;
③
在原有单向故障传递分析方法的基础上,给出包含单、双向两种端口变量时的故障传递方法。
88.下面对对mbrse的模型框架及建模方法进行完善调整的过程进行详细说明,具体包括:
89.(1)新增端口变量建模方法。
90.如图2所示,在原mbrse端口模型元素下新增构建端口变量功能,原单个端口下现允许定义多个端口变量。端口变量的模型框架如下所示:
91.《端口变量名称》:《方向》:《端口,变量状态》:《关联变量》
92.端口变量名称由建模者定义;方向与sysml保持一致,可定义为输入、输出、输入/输出(双向);关联变量表示该端口变量所属端口的相连端口内的对应关联变量,由建模者手动关联或创建端口连线时按照关联规则自动建立。
93.端口变量状态表示表征该端口变量的可处于的状态类型,会因为端口变量所属模块是否发生故障而受到影响,发生状态变换。端口变量状态的模型框架如下:
94.《端口变量状态名称》:《状态类型》
95.端口变量状态名称由建模者定义;状态类型分为正常和失效两类,由建模者在建模时界定。端口变量模型的整体示意图如图3所示。
96.新增端口变量建模后,端口的方向属性不再由建模者定义,完全由其内部定义的端口变量方向决定,即端口变量方向全为单向时,端口整体呈单向性;端口变量包含多个方向或存在双向时,端口整体呈双向性。端口仅作为端口变量的交互场所,其方向性不再具有传递决策作用。
97.下面举例说明:
98.某火灾观测卫星下的航电子系统模块具有“指令&遥测数据i/f”、“任务数据i/f”、“地面指令&遥测数据i/f”、“观测数据i/f”、“结构i/f”、“热i/f”、“电源i/f”等端口。其中“指令&遥测数据i/f”端口分别与“有效载荷子系统”、“制导、导航与控制分系统”、“电源子系统”交互传递“遥测数据”(输入)、“系统机动指令”(输出)、“系统观测指令”(输出)、“系统电力命令”(输出)等端口变量。各端口变量根据系统功能原理分别识别定义了故障状态,例如“系统机动指令”识别定义了“功能丧失”、“未能及时发出指令”、“输出错误指令”等故障状态。
99.(2)继承及完善故障建模方法
100.单向端口变量继承端口故障建模方法:
101.如图4所示,原建模时可为端口状态创建故障传递关系视图,图形化定义输出端口故障状态与模块自身故障状态、模块输入端口故障状态之间的故障传递关系。现mbrse模型将模块之间交互调整到每个端口内的具体端口变量上后,应将故障传递关系模型与端口失效状态的所属关联调整到端口变量失效状态上,如图5所示。
102.下面举例说明:
103.例如某型“火灾卫星”下的“电源子系统”的“功率调节器”模块与“电源转换单元”模块之间的交互端口内的“未转换电源”输出端口变量故障分别可能由“电源管理软件”、“蓄电池”、“太阳能阵列”、“运载火箭”的“指令”和电源等输入端口变量的故障引起,也可能由“功率调节器”模块自身功能故障导致发生,因此,可基于“电源管理软件”、“蓄电池”、“太阳能阵列”、“运载火箭”的“指令”和电源等输入端口变量的故障,以及“功率调节器”模块自身功能故障构建故障传递关系模型。
104.同时对于新增的双向端口变量需给出相应的故障传递规则,以便后续基于故障传递关系开展整个系统的可靠性设计分析。
105.双向端口变量本质上可以看作“一正一反”两个端口变量,如图6所示。因此双向端口变量同时具有输入、输出两类端口变量的特性:一方面同输出端口变量一样,可能受到该模块的自身故障状态及模块的输入端口变量故障而影响。另一方面,同输入端口变量一样,会将双向端口变量相关联的另一个模块的双向端口变量传递至该模块的其他输出/双向端口变量。
106.因此根据以上原理,双向端口变量上应建立故障传递关系模型。故障传递关系模型的顶事件为该双向端口变量的失效状态,底事件可能为该模块自身的失效状态及除该双向端口变量以外的输入端口或双向端口变量的失效状态,如图7所示。与该双向端口变量相连的其他模块双向端口变量的故障影响不用绘制进故障逻辑子树中,在分析计算时,软件系统根据双向端口变量上定义的“关联端口变量”属性即可查找到该故障影响。
107.下面举例说明:
108.例如某“运载火箭”下的“箭体结构”模块与“发动机”模块之间存在“结构连接”的双向端口,端口内定义了“箭体结构”与一级和助推“发动机”之间的“一级+助推”连接的双向端口变量。该双向端口变量的“断开”故障状态可能由前级“电气系统”模块输入的“分离指令”误发送及“箭体结构”模块自身的强度或刚度失效引起发生。
109.(3)完善故障传递分析方法
110.原单向端口之间的故障传递分析规则为:故障会沿着相连端口或故障传递模型中所描述的模块自身状态或输入端口状态对输出端口状态的传递路径不断向后传递,直至没有连线、没有故障传递关系或传递至系统模型最高层级模块边界时,端口故障状态的影响停止向后传递。这一规则对于不存在循环、没有双向端口变量时仍然适用。主要需对存在循环回路或双向端口变量时的故障传递规则进行完善补充。下面给出新增的故障传递规则:
111.存在循环回路或双向端口变量时的故障传递分析的基本规则为:故障由一个双向端口变量传递到与其关联的双向端口变量后,故障不会再由传递到的双向端口变量按照原路径往回传递故障。因为故障本身不存在重复发生性,当系统模型中的某一个模块发生故障后,故障由该模块的双向端口传递至与其关联的下一个(或多个)模块。下一个模块由于双向端口的故障输入,导致模块发生故障发生后,可能又会由双向端口传递回第一个模块,但是第一个模块本身已经发生故障,且该故障是由其自身引起,因此在故障树中不必重复出现该模块的故障事件。
112.存在双向端口变量时,基于模型开展故障传递分析及生成故障树的说明示例如图8所示。模型由两个模块a、b组成,模块a包含一个输入端口和一个双向端口,模块b包含一个双向端口和一个输出端口。各端口上假设只有一个端口变量,方向与端口相同。模块a和模块b的双向端口相连。模块a的双向端口和模块b的双向端口及输出端口上定义了逻辑子树,示例图如图9所示。
113.假设模块a发生自身状态失效,按照逻辑子树内的定义,模块a的双向端口发生失效。然后a的双向端口将故障沿着组件之间的连线传递至b的双向端口上,此时故障不会再沿着双向端口向模块a传递,只会影响到b的输出端口失效,故障传递示意图如图10所示。按此规则,如果我们绘制模块b输出端口失效这个顶事件的故障树,会得到如图11的结果:
114.同理如果模块b发生自身状态失效,故障传递示意图如图12a所示,故障会由b的双向端口传递至模块a的双向端口,故障也仅传递至模块a的双向端口,不会再由模块a的双向端口传递回模块b,换一种说法即模块b的双向端口已经发生故障,模块a双向端口失效不会再次导致模块b的双向端口发生失效。
115.下面举例说明:
116.以前文提到的“箭体结构”与“发动机”之间的双向端口变量为例说明具体的故障传递分析方法。选择“发动机”的“结构连接”内的“一级+助推连接”双向端口变量的“断开”故障状态分析故障树(示意图如图12b所示):
117.①
首先从“发动机.一级+助推连接.断开”双向端口变量的故障状态向下扩展故障传递关系。一方面“发动机.一级+助推连接.断开”会由“发动机”模块自身的“结构强度或刚度失效”导致发生(即“发动机”模块内的“发动机.一级+助推连接.断开”故障的故障传递关系导致),另一方面因为“发动机”的“一级+助推连接”双向端口变量连接关联了“箭体结构”模块的“一级+助推连接”双向端口变量,所以“发动机.一级+助推连接.断开”也会由“箭体结构.一级+助推连接.断开”故障导致发生。由此得到图12b中顶事件下的第一层故障树节点
118.②
由“箭体结构.一级+助推连接.断开”继续向下扩展。与“发动机.一级+助推连接.断开”故障一样,一方面要扩展“箭体结构”模块内定义的“箭体结构.一级+助推连接.断开”故障的故障传递关系,另一方面要扩展“箭体结构.一级+助推连接”连接关联的双向端口变量的故障,由此得到图12b中左侧故障树的第3和第四层节点。但由于出现故障从“发动机”的“一级+助推连接”双向端口变量传递至“箭体结构”的“一级+助推连接”双向端口变量,由从“箭体结构”的“一级+助推连接”双向端口变量传递回“发动机”的“一级+助推连接”双向端口变量的情况,因此循环传递的事件节点应删除。最终分析得到了图12b中右侧的故障树结果。
119.由以上示例可知,双向端口变量的建模实际只影响了故障的可传递——两个模块故障发生可相互影响,但由于故障的因果性,故障不会重复发生,利用这一点即可打断分析过程中的故障循环,从而实现故障传递的正确分析,并生成相应的故障树。
120.可选的,可在对mbrse的模型框架及建模方法进行完善调整后,执行本技术实施例提供的模型转换方法,实现自动化一致性建模。可以理解的,上述调整是在mbrse模型框架与mbse模型框架存在差异的情况下所作的调整,若两者不存在差异,可直接执行本技术实施例的方案。
121.在一个实施例中,参见图13所示,提供一种模型转换方法,用于将mbse下建立的模型转换为mbrse下的模型,该方法包括如下步骤:
122.s102、获取采用第一程序语言编写的第一模型,第一模型包括至少一个功能模块,至少一个功能模块之间通过第一端口连接,第一端口包括至少一个模型元素。
123.可选的,第一程序语言编写的第一模型为mbse下建立的模型,第一程序语言为
sysml语言,用户可采用mbse软件建立第一模型,mbse软件包括enterprise architect(ea)、rhapsody和magicdraw。
124.示例性的,参见图14所示,第一模型包括2个功能模块,分别为第一功能模块10和第二功能模块11。第一功能模块10上设置有端口101,第二功能模块11上设置有端口111,端口101和端口111连接。为方便说明,本技术实施例中将第一模型中的端口称为第一端口,图14中端口101和端口111均为第一端口。由于第一模型是采用sysml语言编写的,因此每个第一端口包括至少一个模型元素。
125.s104、将至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将第一端口转换为所述第二程序语言下的第二端口,将至少一个模型元素转换为第二端口内的端口变量。
126.可选的,第二程序语言为altarica语言,将至少一个功能模块转换为altarica语言,得到至少一个转换后的功能模块;将第一端口转换为altarica语言下的第二端口的过程均可参见现有技术,本技术实施例在此不再赘述。
127.下面对将至少一个模型元素转换为第二端口内的端口变量的过程进行详细说明。sysml构建的mbse模型支持四类端口:port、proxy port、full port和flow port,下面针对这4类端口及各类端口内可定义端口变量进行说明,给出转换方法。
128.若第一端口为标准端口和流端口的合集port,可获取至少一个模型元素中每个模型元素对应的端口类型;根据每个模型元素对应的端口类型,在至少一个模型元素中查找端口类型为目标类型的模型元素,目标类型为流类别或者模块;将端口类型为目标类型的模型元素内定义的流属性作为第二端口内的端口变量。示例性,假设图14中端口101为port,将port转换为altarica语言下的端口后,即得到第二端口后,可根据上述过程获取第二端口内的端口变量,并通过图2示意的方式进行定义。
129.具体的,port是sysmlv1.2中标准端口和流端口的合集。其模型框架定义方式如下所示:
130.《port》《port name》:《type》
131.其中《port》为port在sysml中的stereotype标识,“port name”由建模者自定义,“type”为该端口内交互的具体变量模型元素。
132.port为sysml在v1.3版本提出的标准端口(standport,用于指定提供和赢球服务的方法)和流端口(flowport,用于指定流属性的方法)的统一替代,因此port继承了标准端口和流端口的特征,其type可以是模型层级关系中某处创建的提供或请求服务接口(provided/required interface)、流类别(flow specification)或模块(block)。
133.流类别和模块内可以定义一个或多个流属性(flowproperty),用于表征模块端口与其他模块端口进行交互时传递的具体物理实体。流属性的模型框架定义方式如下所示:
134.《flowproperty》《direction》《name》:《type》
135.其中《flowproperty》为流属性在sysml中的stereotype标识;“direction”为流属性的流向,可以使in、out或inout;“name”由建模者自定义;“type”为模型层级关系中某处创建的值类型(valuetype)、模块(block)或者信号(signal),用于表征流属性物理本质。因此当端口type为定义了流属性的流类别或模块时,在该端口内进行交互的实际是流类别和模块内的流属性,因此一旦端口type对应的模型元素内定义了流属性时,需将相应的流属
性替换流类别或模块转换成mbrse中的端口变量。根据以上信息,mbse中的port转换为mbrse中端口,port的type转换为mbrse中相应端口内的端口变量。
136.例如“航电子系统”模块下的“通信与数据处理模块”拥有一个名为“观测数据i/f”的port,该port的type为“观测数据”模块,代表了“通信与数据处理模块”通过“观测数据i/f”端口与其他模块交互“观测数据”变量,具体的数据交互方向以端口连线上的方向为准。因此最终将mbse模型转换成mbrse后,在“通信与数据处理”模块的边界上创建了一个名为“观测数据i/f”的端口,其内部定义了“观测数据”输入端口变量。
137.若第一端口为代理端口proxy port,至少一个模型元素包括代理端口proxy port对应的接口模块端口变量;则判断代理端口proxy port对应的接口模块端口变量内是否定义了流属性,若代理端口proxy port对应的接口模块端口变量内定义了流属性,则将流属性作为第二端口内的端口变量。示例性,假设图14中端口111为proxy port,将proxy port转换为altarica语言下的端口后,即得到第二端口后,可根据上述过程获取第二端口内的端口变量,并通过图2示意的方式进行定义。
138.具体的,代理端口是sysmlv1.3中新增的端口类型。其模型框架定义方式如下所示:
139.《proxy port》《port name》:《type》
140.其中《proxy port》为代理端口在sysml中的stereotype标识,“port name”由建模者自定义,“type”为该端口内交互的具体变量模型元素。
141.代理端口在本质上不代表任何物理的事物,它仅代表了拥有它的模块(或它的组成部分属性)的行为和结构特性的子集,通过代理端口,其他模块可以访问端口内定义的相应行为、结构特性,但端口本身不会执行行为,而是模块本身自身来执行。因此在sysml建模规范中为代理端口新引入了一种叫接口模块(interfaceblock)端口变量。接口模块的模型标识法和模块一样,只是在模型元素前面带有《interfaceblock》的元类型标识。根据interfaceblock的定义其与模块(block)所具有的特征完全一致,因此当interfaceblock内定义了流属性时,需将相应的流属性替换流类别或模块转换成mbrse中的端口变量。根据以上信息,mbse中的proxy port转换为mbrse中端口,proxy port的type转换为mbrse中相应端口内的端口变量。
142.例如某“卫星”与“太阳模拟室”之间存在一个名为“p_太阳能阵列”的proxy port,该proxy port的type为一个名为“光源interfaceblock”的接口模块。这个代理端口的具体模型含义为代理“太阳能阵列”模块与外部交互“光源interfaceblock”内定义的“太阳能输入功率密度”流属性(flow property)。因此最终将mbse模型转换成mbrse后,在“卫星”模块的边界上创建了一个名为“p_太阳能阵列”的端口,其内部定义了“太阳能输入功率密度”输入端口变量。
143.若第一端口为完整端口full port,可在至少一个模型元素中查找端口类型为模块的模型元素;将端口类型为模块的模型元素内定义的流属性作为所述第二端口内的端口变量。示例性,假设图14中端口111为full port,将full port转换为altarica语言下的端口后,即得到第二端口后,可根据上述过程获取第二端口内的端口变量,并通过图2示意的方式进行定义。
144.具体的,完整端口也是sysmlv1.3中新增的端口类型。其模型框架定义方式如下所
示:
145.《full port》《port name》:《type》
146.其中《full port》为完整端口在sysml中的stereotype标识,“port name”由建模者自定义,“type”为该端口内交互的具体变量模型元素。
147.完整端口代表拥有它的模块的组成部分属性(partproperty),因此和组成部分一样,完整端口的type为模型中某处定义的模块(block)。其本质是模块的组成部分属性(part),因此完整端口内定义的“端口变量”为模块(block),其在进行模型转换时等同于“port”类型端口内定义的具有行为属性和流属性的模块(block)。
148.例如mbse中构建的某“卫星”模块,在其边界上定义了一个名为“p”的full port,这个full port的type为“太阳能阵列”模块,即该端口起始代表了卫星边界上接收太阳辐射的“太阳能阵列”。同时“太阳能阵列”模块内部定义了两个flow properties,分别是“太阳能输入功率密度”(输入)和“能源输出”(输出)。因此最终将mbse模型转换成mbrse后,在“卫星”模块的边界上创建了一个名为“太阳能阵列”的端口,其内部定义了“太阳能输入功率密度”(输入)和“能源输出”(输出)两个端口变量。
149.流端口即sysmlv1.2的流端口,有些mbse建模软件中仍保留了流端口的建模,其模型框架定义方式如下所示:
150.《flow port》《port name》:《type》
151.其中《flow port》为流端口在sysml中的stereotype标识,“port name”由建模者自定义,“type”为该端口内交互的具体变量模型元素。
152.流端口的type取决于建模时的流端口种类:非原子流端口和原子流端口。当流端口内流入或流出多种项目类型时,该流端口就会成为非原子流端口。此时流端口的type必须是模型层级中某处创建的流类别(flow specification),且该流类别内定义了多个流属性。当流端口内仅流入或流出单一类型项目时,该流端口就会成为原子流端口。此时流端口的type必须是模型层级某处定义的值类型(valuetype)、模块(block)或者信号(signal)。根据以上说明在进行流端口转换时,将流端口转换为mbrse的端口,流端口type相对应的模型元素转换为端口变量。
153.例如mbse中创建的某卫星的飞行计算机模块拥有一个名为“数据输入”的flow port,其type为一个名为“卫星内部数据”的flow specification,这个flow specification内定义了两个名为“温度数据”和“电压数据”的输入flow properties。将mbse模型转换成mbrse模型后,端口名称保持一致,端口内闯将与流属性名称相一致的“温度数据”和“电压数据”两个输入端口变量。
154.sysml构建的mbse模型主要以端口中定义的变量来表征系统组件之间的交互,但在某一任务阶段、工作剖面下,可能只需要传递其中几个变量即可完成任务或功能,对于这种情况可以在两个端口中间的连线上定义项目流(item flow)指定当前两个端口之间传递的变量。项目流模型框架定义方式如下所示:《informaitonflow》《itemflow name》:《conveyed》《information target》《information source》
155.其中《informaitonflow》为项目流在sysml中的stereotype标识;“itemflow name”由建模者自定义;“conveyed”为该项目流传递的具体变量;必须为模型层级中具体定义的模块、值类型或者信号;《information target》和《information source》分别代表项
目的目标端和源端。
156.同时项目流“conveyed”的变量必须与连线连接的两端端口的type兼容,即项目流“conveyed”的变量必须是两端端口type所代表的变量组的子集,且方向一致。鉴于以上理论,在模型转换时,需将项目流“conveyed”的变量转换为mbrse的端口变量。
157.例如某火灾卫星有效载荷子系统下的“有效载荷传感器”和“信号处理器”之间存在一个“项目流”,该项目流conveyed的是“有效负载传感器数据”模块,方向从“有效载荷传感器”指向“信号处理器”。代表“有效载荷传感器”将测量地表热排放情况的“有效负载传感器数据”传递给“信号处理器”做进一步的数据处理。因此最终将mbse模型转换成mbrse后,在“有效载荷传感器”模块的边界上创建了一个名为“传感器数据i/f”的端口,其内部定义了“有效负载传感器数据”的输入端口变量。
158.sysml构建的mbse模型支持四类端口:port、proxy port、full port和flow port,上文针对这4类端口及各类端口内可定义端口变量进行了说明,并提出了一套完整的、覆盖mbse全部交互变量模型元素的模型转换方法,实现了自动化一致性建模。
159.s106、获取端口变量的方向以及端口变量的关联变量。
160.示例性的,结合图14,经过上述转换过程,可以得到端口101对应的第二端口,以及端口111对应的第二端口。还可得到端口101对应的第二端口内的端口变量,以及端口111对应的第二端口内的端口变量。针对任一端口变量,可获取其转换前对应的模型元素,以及其转换前所属的第一端口,可基于该模型元素的方向以及该第一端口的方向来确定该端口变量的方向;进一步的,可基于该第一端口和其他端口的连接方式确定该端口变量的关联变量。
161.s108、根据至少一个转换后的功能模块、第二程序语言下的第二端口、第二端口内的端口变量、端口变量的方向以及端口变量的关联变量,获取第二模型。
162.示例性的,结合图14,假设将第一功能模块转换为第二程序语言,得到第三功能模块,将第二功能模块转换为第二程序语言,得到第四功能模块。将端口101转换为第二程序语言,得到第二端口a1,将端口111转换为第二程序语言,得到第二端口a2,将端口101内至少一个模型元素转换为第二端口a1内的端口变量,假设得到端口变量b1和b2,将端口111内至少一个模型元素转换为第二端口a2内的端口变量,假设得到端口变量c1和c2,通过上述方式获取b1的方向和与其关联的关联变量,获取b2的方向和与其关联的关联变量,获取c1的方向和与其关联的关联变量,获取c2的方向和与其关联的关联变量,这时模型转换过程就完成了,第三功能模块、第四功能模块、第二端口a1、第二端口a2、端口变量b1、b1的方向和与其关联的关联变量、端口变量b2、b2的方向和与其关联的关联变量、c1的方向和与其关联的关联变量、c2的方向和与其关联的关联变量构成第二模型。
163.现有的mbrse模型中一个端口仅能定义一个状态变量,且状态变量的方向与端口的方向保持一致。而在magicdraw中支持sysml的四类端口(端口、代理端口、完整端口和流端口)。由于mbse与mbrse在端口及端口内变量建模思路的差异性,在进行mbse模型向mbrse模型转换时,只转换了模块、端口、端口方向及端口之间的连线,未对端口内定义的变量进行转换,所以模型转换内容的丰富性较差,这使得后续在开展可靠性分析时难以确定故障传递的方向。这使得后续在开展可靠性分析时难以确定故障传递的方向。而本技术实施例的方案,在mbrse与mbse端口建模一致性改进及模型转换接口优化的基础上,可将
magicdraw软件中建立的系统逻辑架构模型无损的转换过来,同时系统模型之间的交互关系也变得更加清晰,使得可靠性设计分析人员能清楚理解系统各组成部分之间的相关影响。
164.需要说明的是:本技术实施例提供的从mbse到mbrse的模型转换方法,针对的可靠性是广义的可靠性,保护范围包括可靠性、维修性、保障性、测试性、安全性。本技术实施例提供的从mbse到mbrse的模型转换方法,属于一种通用方法,实际上保护的是所有基于sysml语言建立的模型向所有基于altarica语言建立的模型的转换。
165.本技术实施例提供的模型转换方法,首先获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;然后,将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;最后,根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。可将mbse下建立的模型无损的转换过来,同时系统模型之间的交互关系也变得更加清晰,使得可靠性设计分析人员能清楚理解系统各组成部分之间的相关影响,便于在开展可靠性分析时确定故障传递的方向。
166.由于,端口变量的方向识别方法主要分为以下几种情况:
167.①
端口有方向,端口变量无方向
168.sysml构建的流端口本身包含方向属性,若流端口内定义端口变量本身没有方向时,则根据流端口的方向转换生成该端口内所有端口变量的方向;
169.例如通信与数据处理子系统下的“发射机”模块拥有一个方向为“输出”的flow port,端口的type是名为“射频循环”的值类型,不具有方向,因此此时端口内传递的数据变量——“射频循环”的传递方向与端口保持一致,为向外输出。
170.②
端口有方向,端口变量也有方向
171.sysml构建的端口变量本身也存在方向属性,如flowproperty、提供/请求接口等类型的端口变量,此时在进行模型转换时以端口变量的方向为主。
172.对于flowproperty类型的端口变量转换时可直接根据flowproperty的方向属性转换生成mbrse相应端口变量的方向。
173.例如“飞行计算机”模块拥有一个方向为“输入/输出”的双向flow port,该端口的type——卫星内部数据下定义了两个flow properties,这两个流属性分别为“温度数据”(输入)、“电压数据”(输出),此时这两个端口变量的方向应以自己的方向为准,而不受到端口的方向影响。
174.对于提供/请求接口类型的端口变量,则根据请求接口-》提供接口的指向规则进行转换,即请求接口为输出变量,提供接口为输入变量。
175.例如某卫星系统下的“电源子系统”与“通信与数据处理子系统”之间通过“sp_cdhs”进行交互,该端口内定义了电源子系统可提供的“电力产生”服务和请求的“状态报告”服务。虽然“sp_cdhs”不具有方向,但“提供服务”和“请求服务”存在调用与被调用的方向性,因此“电力产生”服务和“状态报告”服务保持自己的方向性。
176.③
端口无方向、端口变量也无方向,但端口之间的连线上定义项目流
177.sysml构建模型时也可通过在端口之间定义有向项目流(itemflow)的定义两个端口之间的变量交互方向。对于这类端口无方向、端口变量也无方向,但端口之间的连线上定义了项目流的情况,则按照《information source》-》《information target》的指向规则进行端口变量的方向转换。
178.因此,在一个实施例中,可通过如下方式确定端口变量的方向:
179.获取端口变量对应的目标模型元素以及目标模型元素对应的目标端口;若目标端口有方向,目标模型元素无方向,则将目标端口的方向作为端口变量的方向;若目标端口有方向,目标模型元素也有方向,则将目标模型元素的方向作为端口变量的方向;若目标端口无方向,目标模型元素也无方向,目标端口上定义了项目流,则根据项目流,确定端口变量的方向。
180.示例性,结合图14,假设通过上述转换过程,端口101对应的第二端口a1内的端口变量包括b1和b2,以端口变量b1为例,假设b1是由端口101中的模型元素x转换来的,则判断端口101和模型元素x是否有方向,若端口101有方向,模型元素x无方向,则将端口101的方向作为端口变量b1的方向,若端口101有方向,模型元素x也有方向,则将模型元素x的方向作为端口变量b1的方向,若端口101无方向,模型元素x无方向,端口101定义了项目流,则根据项目流,确定端口变量b1的方向。
181.在一个实施例中,可通过如下方式确定端口变量的关联变量。
182.①
两个端口之间仅通过connector连接:
183.两个通过connector相连的端口,如果他们的type相同,则type对应的模型元素或模型元素内定义所有变量一一对应;
184.例如“电源子系统”模块与“飞行计算机”模块之间仅通过connector相连,相连端口的type均为卫星内部数据,因此两个端口内type对应的模型元素建立关联。
185.两个通过connector相连的端口,如果它们的type不完全相同,则将type内定义的相同端口变量一一对应关联;
186.例如“飞行计算机”和“有效载荷子系统”之间存在相连端口,但两个端口的type分别为“卫星内部数据”和“有效载荷子系统内部数据”,是不同的两个变量。进一步比对这两个变量内部定义的流属性发现有相同的流属性“温度数据”,因此最终将“温度数据”对应的端口变量建立关联。
187.两个通过connector相连的端口,如果它们的type完全不同,但这两个端口互为唯一相连端口,且端口内均只定义了一个端口变量,则两个端口内的端口变量建立关联。
188.例如某车载温控系统下的“冷凝器:热交换器”模块有一个“c in”端口与“车载温控系统”的“p_脏水”端口相连,两个端口的type分别为“h20”模块和“fluid”模块,是两个完全不同的变量。但是这两个端口内有分别都只定义了这两个端口变量,因此最终转换后会为这两个不同端口变量的建立关联。
189.②
两个端口通过connector连接,且在connector上关联了informationflow:
190.项目流“conveyed”的变量与相连两端的端口的type兼容时,将两个端口内项目流“conveyed”的变量建立关联,其他端口变量均只转换不建立关联。
191.例如“飞行计算机”和“电源子系统”之间存在相连的端口,且两个端口的type完全
相同,均为“卫星内部数据”,代表两个模块之间可以进行“卫星内部数据”的数据交互传递。同时两个模块的端口之间的connector上关联了一个conveyed“℃”值类型的informationflow,代表当前只进行“℃”这类值类型的变量交互,与“卫星内部数据”内定义的“温度数据”flow property的type相匹配。因此模型转换后,只将“飞行计算机”和“电源子系统”之间相连的端口内的“温度数据”端口变量建立关联。
192.以上其他情况下,两相连端口内的端口变量不建立关联。
193.示例性,结合图14,图14中的第一模型中端口101和端口111连接,判断端口101和端口111的连接方式,基于连接方式,通过上述方法确定第二端口a1和第二端口a2内端口变量的关联关系。本技术实施例在此不再赘述。
194.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
195.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的模型转换方法的模型转换装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个模型转换装置实施例中的具体限定可以参见上文中对于模型转换方法的限定,在此不再赘述。
196.在一个实施例中,如图15所示,提供了一种模型转换装置,包括:
197.第一获取模块1501,用于获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;
198.转换模块1502,用于将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;
199.第二获取模块1503,用于根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。
200.在一个实施例中,所述第一端口为标准端口和流端口的合集port,转换模块1502,具体用于:
201.获取所述至少一个模型元素中每个模型元素对应的端口类型;
202.根据所述每个模型元素对应的端口类型,在所述至少一个模型元素中查找端口类型为目标类型的模型元素,所述目标类型为流类别或者模块;
203.将所述端口类型为目标类型的模型元素内定义的流属性作为所述第二端口内的端口变量。
204.在一个实施例中,所述第一端口为代理端口proxy port,所述至少一个模型元素
包括所述代理端口proxy port对应的接口模块端口变量,转换模块1502,具体用于:
205.判断所述代理端口proxy port对应的接口模块端口变量内是否定义了流属性,若所述代理端口proxy port对应的接口模块端口变量内定义了流属性,则将所述流属性作为所述第二端口内的端口变量。
206.在一个实施例中,所述第一端口为完整端口full port;转换模块1502,具体用于:
207.在所述至少一个模型元素中查找端口类型为模块的模型元素;
208.将所述端口类型为模块的模型元素内定义的流属性作为所述第二端口内的端口变量。
209.在一个实施例中,转换模块1502,具体用于:
210.获取所述端口变量对应的目标模型元素以及所述目标模型元素对应的目标端口;
211.若所述目标端口有方向,所述目标模型元素无方向,则将所述目标端口的方向作为所述端口变量的方向;
212.若所述目标端口有方向,所述目标模型元素也有方向,则将所述目标模型元素的方向作为所述端口变量的方向;
213.若所述目标端口无方向,所述目标模型元素也无方向,所述目标端口上定义了项目流,则根据所述项目流,确定所述端口变量的方向。
214.在一个实施例中,所述第一程序语言为sysml语言,所述第二程序语言为altarica语言。
215.上述模型转换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
216.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图16所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储模块、端口、端口变量等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种模型转换方法。
217.本领域技术人员可以理解,图16中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
218.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述任一方法实施例中的步骤。
219.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法实施例中的步骤。
220.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一方法实施例中的步骤。
221.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
222.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
223.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
技术特征:1.一种模型转换方法,其特征在于,所述方法包括:获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一个模型元素;将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。2.根据权利要求1所述的方法,其特征在于,所述第一端口为标准端口和流端口的合集port;所述将所述至少一个模型元素转换为所述第二端口内的端口变量,包括:获取所述至少一个模型元素中每个模型元素对应的端口类型;根据所述每个模型元素对应的端口类型,在所述至少一个模型元素中查找端口类型为目标类型的模型元素,所述目标类型为流类别或者模块;将所述端口类型为目标类型的模型元素内定义的流属性作为所述第二端口内的端口变量。3.根据权利要求1所述的方法,其特征在于,所述第一端口为代理端口proxy port,所述至少一个模型元素包括所述代理端口proxy port对应的接口模块端口变量;所述将所述至少一个模型元素转换为所述第二端口内的端口变量,包括:判断所述代理端口proxy port对应的接口模块端口变量内是否定义了流属性,若所述代理端口proxy port对应的接口模块端口变量内定义了流属性,则将所述流属性作为所述第二端口内的端口变量。4.根据权利要求1所述的方法,其特征在于,所述第一端口为完整端口full port;所述将所述至少一个模型元素转换为所述第二端口内的端口变量,包括:在所述至少一个模型元素中查找端口类型为模块的模型元素;将所述端口类型为模块的模型元素内定义的流属性作为所述第二端口内的端口变量。5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取所述端口变量的方向,包括:获取所述端口变量对应的目标模型元素以及所述目标模型元素对应的目标端口;若所述目标端口有方向,所述目标模型元素无方向,则将所述目标端口的方向作为所述端口变量的方向;若所述目标端口有方向,所述目标模型元素也有方向,则将所述目标模型元素的方向作为所述端口变量的方向;若所述目标端口无方向,所述目标模型元素也无方向,所述目标端口上定义了项目流,则根据所述项目流,确定所述端口变量的方向。6.根据权利要求5所述的方法,其特征在于,所述第一程序语言为sysml语言,所述第二程序语言为altarica语言。7.一种模型转换装置,其特征在于,所述装置包括:第一获取模块,用于获取采用第一程序语言编写的第一模型,所述第一模型包括至少一个功能模块,所述至少一个功能模块之间通过第一端口连接,所述第一端口包括至少一
个模型元素;转换模块,用于将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;第二获取模块,用于根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
技术总结本申请涉及一种模型转换方法、装置、计算机设备和存储介质。该方法包括:获取采用第一程序语言编写的第一模型;将所述至少一个功能模块转换为第二程序语言,得到至少一个转换后的功能模块;将所述第一端口转换为所述第二程序语言下的第二端口,将所述至少一个模型元素转换为所述第二端口内的端口变量,并获取所述端口变量的方向以及所述端口变量的关联变量;根据所述至少一个转换后的功能模块、所述第二程序语言下的第二端口、所述第二端口内的端口变量、所述端口变量的方向以及所述端口变量的关联变量,获取第二模型。可将MBSE下建立的模型无损的转换过来,便于在开展可靠性分析时确定故障传递的方向。定故障传递的方向。定故障传递的方向。
技术研发人员:潘勇 赖喆 张杰毅 杨洪旗 聂国健 胡宁 刘恒 葛智君
受保护的技术使用者:中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室))
技术研发日:2022.06.17
技术公布日:2022/11/1