CN108279885B - 一种对多个模型代码进行软件集成的方法及装置 - Google Patents
一种对多个模型代码进行软件集成的方法及装置 Download PDFInfo
- Publication number
- CN108279885B CN108279885B CN201710000991.7A CN201710000991A CN108279885B CN 108279885 B CN108279885 B CN 108279885B CN 201710000991 A CN201710000991 A CN 201710000991A CN 108279885 B CN108279885 B CN 108279885B
- Authority
- CN
- China
- Prior art keywords
- interface
- information
- code
- model
- scheduling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种对多个模型代码进行软件集成的方法,所述各模型代码对应有包含代码生成信息的模型文件,其特征在于,所述方法包括:a)基于所述代码生成信息,识别各模型代码的接口,以获取对应的接口信息;b)基于所述接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;c)配置各模型代码的时序调度,以获取各模型代码的时序调度信息;d)根据所述接口关系信息和所述时序调度信息,生成接口关系代码和时序调度代码;以及e)基于所述接口关系代码和所述时序调度代码生成集成代码。对应上述方法本发明还提供一种对多个模型代码进行软件集成的装置。
Description
技术领域
本发明涉及软件集成领域,尤其涉及一种对多个模型代码进行软件集成的方法及装置。
背景技术
当前航空发动机主流控制技术采用数控技术,即FADEC控制,由于发动机控制逻辑复杂,软件复杂度高,采用MBD设计技术是解决复杂控制软件的有效手段,在控制系统研制早期,系统工程师使用建模工具进行模型设计,并建立闭环仿真环境进行控制逻辑设计与仿真;软件设计工程师接收模型自动生成代码,建立控制软件数字集成调试环境,进行软件代码集成。FADEC软件具有规模大、模块组成复杂的特点,随着MBD技术的引入,使得软件集成工作面临如下形势:
1)接口种类多:有模型与模型间的接口集成、自动生成代码与操作软件间的接口集成、测试用例注入接口集成等;
2)接口复杂:接口数量多,接口间关系复杂,包括数据转换关系、函数传参关系、时序调度关系等;
所谓接口集成,从计算机编程语言的本质来看,所谓接口是由字符串来表达的,所谓接口集成就是将代表接口的字符串之间建立关联关系。模型生成的代码可读性比较差,为了适应建模工具的特点,有些接口的符号串比较复杂,难以记忆。在手工代码编写时,需要不停地查看模型中的符号定义。模型数量少,接口少的时候,手工编写集成代码还能够依赖于设计师的责任心来保证接口正确性,随着模型规模和数量的增加,完全依赖于手工编写集成代码的方式,不仅效率低下,而且容易出错。
发明内容
本发明提供了一种对多个模型代码进行软件集成的方法及装置,避免传统手工编写集成代码中存在的错误率高的问题,提高了软件集成效率和质量。
本发明提供一种对多个模型代码进行软件集成的方法,所述各模型代码对应有包含代码生成信息的模型文件,所述方法包括:a)基于所述代码生成信息,识别各模型代码的接口,以获取对应的接口信息;b)基于所述接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;c)配置各模型代码的时序调度,以获取各模型代码的时序调度信息;d)根据所述接口关系信息和所述时序调度信息,生成接口关系代码和时序调度代码;以及e)基于所述接口关系代码和所述时序调度代码生成集成代码。
对应上述方法本发明提供一种对多个模型代码进行软件集成的装置,所述各模型代码对应有包含代码生成信息的模型文件,所述装置包括:接口信息获取模块,用于基于所述代码生成信息,识别各模型代码的接口,以获取对应的接口信息;接口关系信息获取模块,用于基于所述接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;时序调度信息获取模块,用于配置各模型代码的时序调度,以获取各模型代码的时序调度信息;代码生成模块,用于根据所述接口关系信息和所述时序调度信息,生成接口关系代码和时序调度代码;以及代码集成模块,用于基于所述接口关系代码和所述时序调度代码生成集成代码。
如上所述,本发明提供了一种对多个模型代码进行软件集成的方法及装置,能够识别接口信息,获取接口匹配信息,获取时序配置信息,进一步生成接口关系代码和时序调度代码并生成集成代码。
避免传统手工编写集成代码方式,提高软件集成效率和质量。同时达到不需要编辑集成代码即可实现各模型代码的集成,大幅减少了人力成本。
附图说明
图1示出了本发明对多个模型代码进行软件集成的方法一个方面的流程图;
图2示出了可视化的各模型接口匹配的示意图;
图3示出了可视化的时序调度配置的示意图;
图4示出了可视化的测试用例接口匹配的示意图;
图5示出了生成集成代码的流程图;
图6示出了对多个模型代码进行软件集成的装置结构示意图。
具体实施方式
软件是由模块组成的。模块由输入、处理逻辑和输出组成。软件集成就是根据模块间的输入/输出关系,构建成一个整体的过程。
通常,系统工程师使用建模工具进行多个模型的设计,并建立闭环仿真环境进行控制逻辑设计与仿真,设计完成的模型可以通过现有的软件生成模型代码,为了得到整体性代码,系统工程师还需将各模型代码进行集成。本发明中即可将各个模型代码视作前述的模块。
模型是对设计的形式化表达,由输入接口、处理逻辑和输出接口组成,这些信息通过文本形式的模型文件记录。模型文件可根据用户的要求自动生成代码。模型集成最终形式是模型生成的代码的集成。
模型是设计出来的,所以设计师知道模型代码间的逻辑关系,即知道各模型代码接口的逻辑关系,各模型代码对应有包含代码生成信息的模型文件,模型文件中包括模型代码接口的如下语义:
a)接口隶属:属于哪个模块;
b)接口方向:是输入还是输出;
c)接口形式:是结构体中的元素、还是原子元素;
d)接口数据类型:是结构体还是原子数据类型;
e)接口的传递方式,是函数调用传参方式,还是全局变量方式。
这些接口语义最终落实到代码里是以符号串的形式存在,所谓接口集成就是将接口符号串根据接口间的逻辑关系重新构建成新的符号串过程,过去采用硬编码方式实现接口集成,编写集成代码的工作量巨大、而且容易出错,本发明就是为了解决这个问题,通过识别接口语义,快速找到待集成的接口,通过可视化的形式呈献给设计师,结合设计师大脑中的接口间的逻辑关系,自动生成集成代码,以辅助设计师完成软件模块的集成。
请参看图1,图1示出了本发明一种对多个模型代码进行软件集成的方法 的流程图,方法10包括:
步骤101:基于代码生成信息,识别各模型代码的接口,以获取对应的接口信息;
步骤102:基于接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;
步骤103:配置各模型代码的时序调度,以获取各模型代码的时序调度信息;
步骤104:根据接口关系信息和时序调度信息,生成接口关系代码和时序调度代码;以及
步骤105:基于接口关系代码和时序调度代码生成集成代码。
步骤101根据模型文件中包含的代码生成信息识别各模型代码的接口,以获取对应的接口信息。代码生成信息中包含各模型代码的接口信息如下:
a)模型名称(在代码层级是函数名);
b)接口名称;
c)接口方向:输入/输出;
d)接口数据类型(包括结构体的定义);
e)接口数据定义头文件:外部输入/模型生成以及文件名称;
f)接口传递方式:全局变量/全局参数/形参(以函数调用接口传递);
g)全局变量名(以全局变量传递的接口);
h)外部输入可调参数名(属于全局变量输入接口的一种,在模型中以常量形式存在,但在代码集成时,该参数是从外部定义好传给模型);
其中接口数据类型的基本形式是结构体类型和原子类型,所有的接口数据类型均是由二者的组合而成:
a)原子类型单一元素;
b)原子类型数组元素;
c)基本结构体;
d)结构体嵌套结构体
e)结构体嵌套数组
这些接口信息均定义在模型文件中。这些信息在模型文件中以格式化形式 进行存储,格式化信息是分层级的,上下层级表示下一层级隶属于上一层级,同时有特定的属性标识符进行区分,通过搜索这些属性标识符,可以很容易找到上述接口信息,识别出符号串并分析出接口语义。不同的建模工具生成的建模文件,前述接口信息表达方式有所不同。
上述接口信息在模型文件中都是以字符串形式呈现,其这些字符串都包含有跟接口信息相关的语义,在一实施例中,步骤101还包括如下步骤:
识别代码生成信息中的字符串;
对字符串进行语义分析,以识别各模型代码对应的接口信息。
不同的建模工具生成的模型文件具有不同的表达方式,这种表达方式包括“属性标识符”和“分层格式”。在进行模型接口信息获取时,首先针对建模工具所产生的模型文件,分析前述接口信息的表达方式,所谓“属性标识符”是指字符串本身包含特定语义,通过该语义既能得到接口的特定属性。所谓“分层格式”是各接口的嵌套关系。
特定建模工具表达接口信息的方式是固定的,因此表达方式分析工作只需要进行一次,这部分工作由人工分析完成。
有了“分层格式”和“属性标识符”作为依据,使用任何字符串搜索算法搜索模型文件,找出这些“属性标识符”和“分层格式”,即能识别上述接口信息。在一个例子中,通过上述方法获取的接口信息如下表1所示。
表1接口信息记录表
若接口的数据类型为结构体,则可生成如表2所示的结构体定义记录表。
表2结构体定义记录表
下面以Simulink建模方式为例,对接口信息的获取作进一步说明。基于simlulink构建的模型,模型文件由.mdl和.m组成,模型接口信息就定义在这两类文件中,通过模型文件中的分层格式和属性标识符,来识别上述的接口信息。可以理解,在Simulink建模中,模型文件中的分层格式和属性标识符是一定的,掌握了分层格式和属性标识符即可得出接口信息。
在一实际例子中,与识别接口有关的属性标识符和其语义如下:
1)接口信息分布在“.mdl”文件中的属性标识符System{}内和“.m”文件中的属性标识符“结构体名称=Simulink.Bus”和属性标识符“clearsaveVarsTmp”之间、属性标识符“变量名=mpt.Signal”或“变量名=simulink.Signal”中;
2)在System{}内属性标识符name字段是模型名称;
3)在System{}中的Block{}中属性标识符Name字段是接口名称;
4)在System{}内属性标识符Block{}中的属性标识符BlockType字段是接口方向,值为“Inport”的是输入接口,为“Outport”是输出接口;
5)在System{}中的Block{}中属性标识符OutDataTypeStr字段是接口数据类型,它的值中会区分是结构体还是原子类型;如“Bus:StrA2C_WIRE”中Bus表示结构体,StrA2C_WIRE是结构体名称(类型定义的名称);“single”表示原子类型是单精度浮点数等。
6)对于数据类型为结构体的接口,结构体定义信息在属性标识符“结构体名称=Simulink.Bus”和属性标识符“clear saveVarsTmp”之间,如结构体类型数据范围、结构体类型的定义头文件、结构体元素组成、结构体元素的数据类型,均通过相应的属性标识符进行定义:
a)结构类型数据范围“结构体名字.DataScope”值为Exported该结构体定义的头文件由Simulink工具自动生成,值为Imported代表Simulink未生成该结构体定义,应由外部输入该定义;
b)结构体类型定义头文件“结构体名称.Headfile”值为结构体类型定义的头文件名,Simulink自动生成的头文件则可由集成代码直接使用;Simulink未生成头文件时,则应自动生成该名字的头文件,供集成代码使用;
c)结构体元素“saveVarsTmp{}.Name”表示结构体元素名字;
d)结构体数据类型“saveVarsTmp{}.DataType”表示结构体元素数据类型定义;取值可以是原子类型或结构体;
e)结构体数据类型“saveVarsTmp{}.Dimensions”表示结构体元素维度,值若为1表示该元素不是数组,否则表示数组大小;
f)结构体元素在模型文件中出现的前后顺序,表示数据元素在结构体中的前后定义顺序。
7)通过System{}和Block{}的隶属关系,可以分析出某接口隶属于哪个模型。
8)Simulink模型中接口传递方式,如果绑定Signal信号则是全局变量传递,否则是函数调用形参传递,在模型文件中是通过属性标识符MustResolveToSignalObject进行记录,值为“on”表示全局变量传递,值为“off”表示函数形参传递,MustResolveToSignalObject是放在接口线箭头的起点Block中的属性标识符port{}中的,对于输入接口而言,箭头的起点就是该接口Block自身,可以直接到Port{}查找。对于输出接口,查找方法如下:
a)查找DstBlock为该输出接口的Line{}文本块;
b)在Line{}中查找SrcBlock,它的值就是起点Block的名字;
c)在Name为起点Block名字的Block{}中的Port{}中查找属性标识符MustResolveToSignalObject。
9)以全局变量形式传递的接口,全局变量的信息定义在.m文件中,通过如下方法识别出模型产生的全局变量名:
a)属性标识符“变量名=Simulink.Signal”或“变量名=mpt.Signal”,搜索符号串“Simulink.Signal”和“mpt.Signal”,等号左边就是全局变量名;
b)属性标识符“变量名.DataType”值是数据类型定义;
c)属性标识符“变量名.Dimensions”值若为1,表示该变量不是数组,大于1表示数组大小。
10)外部可调参数输入接口信息定义在.m文件中,通过如下方法识别出外部可调参数全局变量:
a)属性标识符“变量名=Simulink.Parameter”或“变量名=mpt.Parameter”,搜索符号串“Simulink.Parameter”和“mpt.Parameter”,等号左边就是外部可 调参数全局变量名;
b)属性标识符“变量名.DataType”值是数据类型定义;
c)属性标识符“变量名.RTWInfo.CustomAttributes.HeaderFile”的值是头文件名;
d)属性标识符“变量名.CustomStorageClass”值若为ImportFromFile,表示该变量由外部输入,并声明在前条HeaderFile指定的头文件中,同时定义在HeaderFile同名的“.c”文件中。值若为Exported,表示该变量由Simulink自动生成,接口集成代码可以直接使用HeaderFile指定的头文件。
针对Simulink建模工具生成的模型,可以按照前述规则,分析和生成表1和表2。
在得到各模型代码的接口信息后,进行步骤102基于接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息。
模型间接口匹配是指一个模型的输出接口是另一个模型的输入,并建立它们之间的关系的过程,模型接口匹配由三个要素:即输入、输出、关系,模型接口之间的关系有如下3种(假设b是a的输入):
1)简单赋值:例如a=b;
2)标准库函数:例如a=StdFunc(b),其中Stdfunc是标准C库函数和用户自定义已知的库函数;
3)用户自定义函数:例如a=UserFunc(b),其中UserFunc是用户自定义非库函数;
在一实施例中,响应于可视化界面内运用各模型代码的接口信息、测试用例的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息,各模型代码与测试用例的接口关系信息。
模型根据前面“表1”和“表2”模型接口信息以可视化的形式提供给设计师,主要要素包括模型名称、模型接口名称、接口数据类型、接口方向、接口关系选项,如附图2所示,可以理解,可视化界面不是唯一的,只要能够体现出前面所述的5个要素即可,且接口匹配映射的方法也不是唯一的。
匹配的具体方法如下:
将前述得到的如表1内的接口信息置于可视化界面20内。接口数据类型 一般分为两种:
1)接口数据类型是原子数据类型,则直接使用该接口,提取其接口方向信息,接口名称和数据类型字符串、并显示在界面中,如图2中“模型A”的输入接口“inputa”是原子数据类型为real32;
2)如果数据类型为结构体(如Bus),本质上结构体定义是树形结构,需要根据结构体表之间的关联关系,查找到结构体成员的叶子结点,即数据类型为原子类型的,并记录各根结点的成员名称符号串以及叶子结点的成员名称、数据类型符号串,具体方法是根据结构体名称,查找相应“表2结构体定义记录表”中的数据成员,如果数据成员中也存在结构体定义,则进一步查找该结构体的成员,并以此类推。将查找路径中记录的结点符号串按左向右的顺序,使用“.”串接起来,形成该接口符号串,如下图2中的“strA.strA1.inputa1”的形式,随同叶子节点数据类型显示在界面中,如“模型A”的输入接口“strA.strA1.inputa1”,数据类型为int32。
可视化界面通过记录用户对接口的选择操作,使代码生成引擎能够识别出用户接口选择的真实意图,现有技术中有众多代码生成引擎,能够获取设计师的设计意图,进而生成代码。
例如一种可行的接口匹配方式是鼠标拖拽,当用户对界面中选择的接口从右边向左,或从左向右拖拽时,表达的选择语义是被选择的输出接口与输入接口建立关联,具体的关系类型取决于用户对关系下拉框的选择,例如图2示意的关系如下:
1)模型A输入接口inputa直接由模型B的输出接口strB.outputb[0]赋值;
2)模型A输入接口strA.strA1.inputa1由模型B1的输出接口strB1.outputa经用户输入的UT_Line1D函数运算后赋值;
代码生成引擎根据用户的操作动作,自动生成如表3所示的模型间接口关系表,其中“关系符号”是依据用户选择界面下拉框中表达的接口关系。
表3模型间接口关系表
除了可视化界面方式提供给设计师集成使用外,还可以将按前面方法识别的接口信息,对每一个接口进行统一编号,以定义配置文件的方式识别设计师的集成意图,配置文件只要能够包含要素“模型、输入接口、输出接口和接口间关系定义”,这样代码生成引擎就可以根据这些要素自动生成表3。
步骤103,配置各模型代码的时序调度,以获取各模型代码的时序调度信息。配置各模型代码的时序调度是将模型生成的代码,放到相应的时间槽里调度,时序接口匹配包括7种语义:
1)代码文件:用于记录集成接口代码存放的文件;
2)时间槽:用于识别调度的时间特性,支持两种调度方式,一是按照节拍调度,即不按照实时的时间,一个节拍代表一个运行周期,用以代表软件调度的时序特性;二是按照实时调度,以真实软件模块运行周期调度
3)模型:待调度模型;
4)代码文件包含的时间槽:即该代码文件包含的所有时间槽;
5)模型调度顺序:模型在时间槽内调度的先后顺序
6)时间槽调度模型:时间槽调度哪些模型
7)时间槽调度顺序
软件集成人员通过可视化的方式或配置文件的方式,定义这些语义,代码生成引擎识别这些语义,并按照语义的要求生成集成代码。
一种可实施的方式是可视化的时序接口匹配方法,在一实施例中,请参看图3,图3中由6种图元组成,分别代表时间槽、代码文件、模型、代码文件包含时间槽,时间槽包含模型、模型调度顺序六种语义,时序调度图的布局代表第7个语义。
1)代码文件301,有一个属性“名称”,代表模块名字,同时也代表将来生成代码的文件名;
2)时间槽302:属性1“名称”,以“代码文件名_时间槽名Tsk”格式生成该时间槽的调度函数名;属性2“调度方式”,两种方式,“节拍”和“实时”,解释同前。
3)模型303,由一个属性“名称”,代表待调度模型名字,建模工具在生成代码时,模型函数名一般是“前缀_模型名字”的格式,“前缀_”可由用户 自己定义,因此生成代码时这个规则是明确的,本例中是“mr_”,其中模型函数名模型自动生成代码中运行的函数名。
4)代码文件包含时间槽304:集成代码生成引擎根据代码文件包含关系,软件模块、时间槽、模型等信息放在一行里记录,表明这种包含关系;
5)时间槽包含模型305:集成代码生成引擎根据时间槽包含关系,随同软件模块、时间槽、模型等信息放入一行记录,当有多个模型时,生成多行记录;
6)模型调度顺序306:按模型序列在时间槽内顺序调度,集成代码生成引擎依据模型序列依次生成前述行记录,行记录的先后顺序表明了该调度的先后顺序;
7)单一时序匹配必须包含除模型调度顺序306之外的5个语义,只能包含一个代码文件301、时间槽302、代码文件包含时间槽304、时间槽包含模型305,可以包含多个模型303和模型调度顺序306,当模型303只有一个时,不能包含模型调度顺序306;
8)允许多个时序匹配,多个时序匹配的上下布局,表示时间槽的调度顺序,代码生成引擎必须在完成一条时序匹配分析后,按图形上下布局,依次开展时序匹配分析,形成的行记录顺序,表明了时间槽的调度顺序。
代码生成引擎,根据图3所表达的语义,生成如表4所示的时序调度的配置表。其中模型头文件信息,用户在生成代码时进行引用。建模工具在生成模型代码时,可根据用户配置将模型函数定义到与模型同名的头文件中,因此只要识别到接口时序匹配中的模型,就能够方便的知道“模型函数名称”和“模型函数定义头文件”。
表4时序调度的配置表
除了可视化界面方式提供给设计师进行时序调度配置外,也可以通过定义配置文件的方式识别设计师时序配置意图,只要配置文件中的配置信息包含“时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时 间槽包含模型信息、模型调度顺序信息”,通过配置文件完整表达前述7个语义,集成代码生成引擎就可以依据这些信息生成表4。时序调度配置同时也框定了进行模型接口配置的模型范围。
在完成各模型的接口匹配,且为各模型代码配置完成时序调度后,进行步骤104,根据所述接口关系信息和所述时序调度信息,生成接口关系代码和时序调度代码。
现有技术中有多种代码生成引擎能够根据获取的信息自动生成对应的代码,代码生成引擎根据获取的接口关系信息和时序调度信息,对应生成接口关系代码和时序调度代码。
然后,进行步骤105,代码生成引擎将模型代码、接口关系代码和时序调度代码整合,从而生成集成代码。
当需要用测试用例进行软件测试时,还需将测试用例的接口与各模型的接口进行匹配,在一实施例中,还需识别测试用例的接口信息,并基于各模型代码对应的接口信息、测试用例的接口信息,进行各模型代码与测试用例的接口匹配,以获取各模型代码与测试用例的接口关系信息;基于各模型代码与测试用例的接口关系信息,生成所述接口关系代码。
测试用例的接口信息包括:信号名称、信号注入方式、信号数据类型。信号注入方式是通过数值或符号串加以区分。如阶跃方式,即一直维持本次信号值,直到取到下一个信号值;斜坡插值方式,在本次和下一个信号值之间采用线性插值给出信号值,按照斜坡方式变化。信号数据类型,通过数值或符号串加以区分。如单字节、单字、双字、单精度浮点数、双精度浮点数等。
在设计测试用例定义文件时,设置一个时间轴,代表每次用例注入的时刻,当某时刻到来时,取一次测试用例数据。
测试用例文件定义在文本文件中。测试用例接口的识别原理与前述模型接口的识别一致,即识别出每一个测试用例信号的接口信息,针对测试用例可以生成如表5所示的测试用例接口信息表,测试用例接口信息表由两部分组成,一部分是用例信息定义,一部分是用例数据定义。
表5测试用例接口信息表
测试用例接口匹配,是将外部的测试用例输入信号作为相应模型的输入信号,根据前述接口信息记录表的接口信息和测试用例接口信息表的测试用例接口信息,请参看图4,以可视化形式呈献给设计师,可视化图形40中的主要要素包括模型名称、模型接口名称、接口数据类型、接口方向、测试用例名称、测试用例信号名称、测试用例信号数据类型。
与前述各模型接口匹配可视化界面类似,通过记录用户对接口的选择操作,使代码生成引擎能够识别出用户接口选择的真实意图,例如一种可行的接口选择方式是鼠标拖拽,当用户对界面中选择的接口从右边向左,或从左向右拖拽时,表达的选择语义是被选择的用例接口与模型输入接口建立关系,语义是上将用例接口直接赋值给模型输入接口,例如图4示意的接口选择是:
1)用例接口用例输入1注入给模型A输入接口strA.inputb;
2)用例接口用例输入2注入给模型A1输入接口strA1.input1。
集成代码生成引擎根据用户的操作动作,自动生成如下表6所示意的测试用例接口匹配表。
表6测试用例接口匹配表
输入模型名称 | 输入接口名称 | 用例接口名称 |
模型A | strA.inputb | 用例输入1 |
模型A1 | strA1.input1 | 用例输入2 |
… | … | … |
除了可视化界面方式提供给设计师进行测试用例接口匹配外,还可以定义配置文件的方式来识别设计师的测试用例匹配意图,配置文件只要能够包含三个要素即“模型接口信息、测试用例接口信息、各接口关系”,这样代码生成引擎就可以根据这三个要素自动生成表6。
根据上述方法已得到各模型代码间的接口关系及代码,各模型代码和测试用例的接口关系及代码,各模型代码的时序配置信息及代码,只需将上述代码组合生成集成代码即完成对多个模型代码进行的软件集成。
在一实施例中,代码生成引擎按如图5所示的方法生成集成代码。生成集成代码的方法包括:
步骤501:创建接口集成代码文件;
步骤502:添加引用头文件;
步骤503:添加各模型接口变量;
步骤504:添加测试用例接口变量;
步骤505:添加时序调度代码;以及
步骤506:添加接口关系代码。
创建接口集成代码文件的步骤具体包括:
查找表4时序调度的配置表中“软件模块”名,创建与“软件模块名”同名的.c文件,该文件就是接口集成代码文件,创建完成后就开始后续流程自动添加集成代码。继续查找“软件模块”名如果与前面重名,则忽略创建文件,继续查找。表4时序调度的配置表存在不同的“软件模块”名,则重复本流程。
添加引用头文件的步骤具体包括:
需要添加的头文件有四类:
a)与软件集成代码.c配套的头文件:查找表4时序调度的配置表中“软件模块名”,头文件名是“软件模块名.h”;
b)用例注入头文件:根据前述生成用例注入头文件的规则,是固定的名字“datacase.h”;
c)待集成模型的,模型函数定义头文件:查询表4时序调度的配置表中“模型头文件”;
d)待集成模型的,输入/输出接口结构体定义头文件:依据本次的“软件模块”名,逐行查询表4时序调度的配置表中“模型名称”,根据“模型名称”对应的表1接口信息记录表,查找所有接口结构体的“头文件名”。
e)将前述的头文件全部加入到头文件引用中,针对每一个头文件添加一行如下所示的代码:
#include“xxx.h”
添加模型接口变量的步骤具体包括:
逐行查找表1接口信息记录表,提取模型“接口名称”、“数据类型”以及“数据维度”,根据提取信息在源文件中定义模型接口变量:
a)若“数据维度”为1,表明不是数组,代码形式如下:
数据类型接口名称;
b)若“数据维度”大于1,表明是数据,代码形式如下:
数据类型接口名称[数据维度];
添加测试用例接口变量的步骤具体包括:
根据前述用例头文件中的extern变量声明,定义用例接口变量,本步骤可以单独生成用例定义.c文件,由本集成代码包含相应头文件来使用,代码形式如下:
TestCase strTestCase;
TestCase extTestCase[用例数据行数];
添加时序调度代码的步骤具体包括:
a)基于本“软件模块”名逐行查找表4时序调度的配置表的“调度函数”生成调度函数框架,按“调度函数”在表中的先后顺序生成多个调度函数,代码形式:
void调度函数(void){}
b)基于“调度函数”逐行查找表4时序调度的配置表的“模型名称”和“模型函数”,按“模型名称”查表1接口信息记录表中“传递方式”为形参的“接口名称”,按照表1中接口顺序,作为模型函数中的实参,形成函数调用代码,添加到调度函数中,代码形式如下:
模型函数名称(&实参1,&实参2,…,&实参n);
其中表1中数据维度大于1的接口,是数组类型,取消实参前取地址符“&”。
添加接口关系代码的步骤具体包括:
a)根据“模型名称”从表3模型间接口关系表提取“输入接口名称”、“输出接口名称”、“关系符号”,如果关系符号为“=”号时,表示输出接口名称直接给输人接口赋值,代码形式如下:
输入接口名称=输出接口名称;
否则,标识输出接口经过“关系符”表示的函数运算后,赋值给输入接口,代码形式如下:
输入接口名称=关系符号(输出接口名称);
在源文件中检索输入接口名称,获得输入模型函数的调用位置,将模型间 接口匹配代码插入到该位置之前;
b)根据“模型名称”从表6测试用例接口匹配表提取“输入接口名称”、“用例接口名称”,直接将用例接口赋值给输入接口,代码形式如下:
输入接口名称=用例接口名称;
将模型间接口匹配代码插入到前a)所述的输入模型函数调用位置之前。
对应上述方法,本发明还提供一种对多个模型代码进行软件集成的装置,请参看图6,图6示出了对多个模型代码进行软件集成的装置结构示意图。
装置60包括:
接口信息获取模块601,用于基于代码生成信息,识别各模型代码的接口,以获取对应的接口信息;
接口关系信息获取模块602,用于基于接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;
时序调度信息获取模块603,用于配置各模型代码的时序调度,以获取各模型代码的时序调度信息;
代码生成模块604,用于根据接口关系信息和时序调度信息,生成接口关系代码和时序调度代码;以及
代码集成模块605,用于基于接口关系代码和时序调度代码生成集成代码。
其中,接口关系信息获取模块602和时序调度信息获取模块603皆是响应于软件设计人员的意图来获取相应的信息。
在一实施例中,装置60还包括测试用例接口识别模块,用于识别测试用例的接口信息,所述接口关系信息获取模块,进一步用于:基于各模型代码对应的接口信息、测试用例的接口信息,进行各模型代码与测试用例的接口匹配,以获取各模型代码与测试用例的接口关系信息;所述代码生成模块,进一步用于:基于各模型代码与测试用例的接口关系信息,生成所述接口关系代码。
在一实施例中,所述测试用例的接口信息包括:信号名称、信号注入方式、信号数据类型。测试用例接口识别模块进一步用于识别上述测试用例接口信息。
在一实施例中,接口关系信息获取模块602,进一步包括:图形化识别模块,响应于可视化界面内运用各模型代码的接口信息、测试用例的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息,各模 型代码与测试用例的接口关系信息。
在一实施例中,接口关系信息获取模块602,进一步包括:配置文件识别模块,响应于配置文件内的各模型代码的接口信息、测试用例的接口信息、接口和接口间关系的定义,获取各模型代码的接口关系信息,各模型代码与测试用例的接口关系信息。
在一实施例中,接口信息获取模块601还包括:字符串识别模块,用于识别所述代码生成信息中的字符串;语义分析模块,用于对所述字符串进行语义分析,以识别各模型代码对应的接口信息。
在一实施例中,所述接口信息包括:模型名称、接口名称、接口方向、接口数据类型,接口信息获取模块601进一步用于获取上述接口信息。
在一实施例中,接口信息获取模块601进一步包括:图形化识别模块,响应于可视化界面内运用各模型代码的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息。
在一实施例中,接口关系信息至少表征以下接口关系中的一者或多者:简单赋值关系、标准库函数关系和用户自定义函数关系。
在一实施例中,时序调度信息包括:时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息。时序调度信息获取模块603进一步用于获取上述时序调度信息。
在一实施例中,时序调度信息获取模块603进一步包括:图形化识别模块,响应于可视化界面内的时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息的图形化表示,获取各模型代码的时序调度信息。
在一实施例中,时序调度信息获取模块603进一步包括:配置文件识别模块,响应于配置文件内的时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息的定义,获取各模型代码的时序调度信息。
在一实施例中,代码集成模块605进一步用于:创建接口集成代码文件;添加引用头文件;添加各模型接口变量;添加测试用例接口变量;添加时序调度代码;以及添加接口关系代码。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM 或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (26)
1.一种对多个模型代码进行软件集成的方法,所述各模型代码对应有包含代码生成信息的模型文件,其特征在于,所述方法包括:
a)基于所述代码生成信息,识别各模型代码的接口,以获取对应的接口信息;
b)基于所述接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;
c)配置各模型代码的时序调度,以获取各模型代码的时序调度信息;
d)根据所述接口关系信息和所述时序调度信息,生成接口关系代码和时序调度代码;以及
e)基于所述接口关系代码和所述时序调度代码生成集成代码。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
f)识别测试用例的接口信息;
所述步骤b)还包括:
基于各模型代码对应的接口信息、测试用例的接口信息,进行各模型代码与测试用例的接口匹配,以获取各模型代码与测试用例的接口关系信息;
所述步骤d)还包括:
基于各模型代码与测试用例的接口关系信息,生成所述接口关系代码。
3.如权利要求2所述的方法,其特征在于,所述测试用例的接口信息包括:信号名称、信号注入方式、信号数据类型。
4.如权利要求2所述的方法,其特征在于,
所述步骤b),进一步包括:
响应于可视化界面内运用各模型代码的接口信息、测试用例的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息,各模型代码与测试用例的接口关系信息。
5.如权利要求2所述的方法,其特征在于,
所述步骤b),进一步包括:
响应于配置文件内的各模型代码的接口信息、测试用例的接口信息、接口和接口间关系的定义,获取各模型代码的接口关系信息,各模型代码与测试用例的接口关系信息。
6.如权利要求1所述的方法,其特征在于,
所述步骤a)进一步包括:
识别所述代码生成信息中的字符串;
对所述字符串进行语义分析,以识别各模型代码对应的接口信息。
7.如权利要求6所述的方法,其特征在于,
所述接口信息包括:模型名称、接口名称、接口方向、接口数据类型。
8.如权利要求1所述的方法,其特征在于,
所述步骤b)进一步包括:
响应于可视化界面内运用各模型代码的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息。
9.如权利要求1所述的方法,其特征在于,所述接口关系信息至少表征以下接口关系中的一者或多者:
简单赋值关系、标准库函数关系和用户自定义函数关系。
10.如权利要求1所述的方法,其特征在于,
所述时序调度信息包括:代码文件信息、时间槽信息、模型信息、代码文件包含的时间槽信息、模型调度顺序信息、时间槽调度模型信息,时间槽调度顺序信息。
11.如权利要求10所述的方法,其特征在于,
所述步骤c)进一步包括:
响应于可视化界面内的时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息的图形化表示,获取各模型代码的时序调度信息。
12.如权利要求10所述的方法,其特征在于,
所述步骤c)进一步包括:
响应于配置文件内的时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息的定义,获取各模型代码的时序调度信息。
13.如权利要求1所述的方法,其特征在于,
所述生成集成代码的操作,进一步包括:
创建接口集成代码文件;
添加引用头文件;
添加各模型接口变量;
添加测试用例接口变量;
添加时序调度代码;以及
添加接口关系代码。
14.一种对多个模型代码进行软件集成的装置,所述各模型代码对应有包含代码生成信息的模型文件,其特征在于,所述装置包括:
接口信息获取模块,用于基于所述代码生成信息,识别各模型代码的接口,以获取对应的接口信息;
接口关系信息获取模块,用于基于所述接口信息,进行各模型代码的接口匹配,以获取各模型代码的接口关系信息;
时序调度信息获取模块,用于配置各模型代码的时序调度,以获取各模型代码的时序调度信息;
代码生成模块,用于根据所述接口关系信息和所述时序调度信息,生成接口关系代码和时序调度代码;以及
代码集成模块,用于基于所述接口关系代码和所述时序调度代码生成集成代码。
15.如权利要求14所述的装置,其特征在于,所述装置还包括:
测试用例接口识别模块,用于识别测试用例的接口信息;
所述接口关系信息获取模块,进一步用于:
基于各模型代码对应的接口信息、测试用例的接口信息,进行各模型代码与测试用例的接口匹配,以获取各模型代码与测试用例的接口关系信息;
所述代码生成模块,进一步用于:
基于各模型代码与测试用例的接口关系信息,生成所述接口关系代码。
16.如权利要求15所述的装置,其特征在于,所述测试用例的接口信息包括:信号名称、信号注入方式、信号数据类型。
17.如权利要求15所述的装置,其特征在于,
所述接口关系信息获取模块,进一步包括:
图形化识别模块,响应于可视化界面内运用各模型代码的接口信息、测试用例的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息,各模型代码与测试用例的接口关系信息。
18.如权利要求15所述的装置,其特征在于,
所述接口关系信息获取模块,进一步包括:
配置文件识别模块,响应于配置文件内的各模型代码的接口信息、测试用例的接口信息、接口和接口间关系的定义,获取各模型代码的接口关系信息,各模型代码与测试用例的接口关系信息。
19.如权利要求14所述的装置,其特征在于,
所述接口信息获取模块还包括:
字符串识别模块,用于识别所述代码生成信息中的字符串;
语义分析模块,用于对所述字符串进行语义分析,以识别各模型代码对应的接口信息。
20.如权利要求19所述的装置,其特征在于,
所述接口信息包括:模型名称、接口名称、接口方向、接口数据类型。
21.如权利要求14所述的装置,其特征在于,
所述接口关系信息获取模块,进一步包括:
图形化识别模块,响应于可视化界面内运用各模型代码的接口信息、结构关系符形成的接口对应连接关系,获取各模型代码的接口关系信息。
22.如权利要求14所述的装置,其特征在于,所述接口关系信息至少表征以下接口关系中的一者或多者:
简单赋值关系、标准库函数关系和用户自定义函数关系。
23.如权利要求14所述的装置,其特征在于,所述时序调度信息包括:时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息。
24.如权利要求23所述的装置,其特征在于,
所述时序调度信息获取模块,进一步包括:
图形化识别模块,响应于可视化界面内的时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息的图形化表示,获取各模型代码的时序调度信息。
25.如权利要求23所述的装置,其特征在于,
所述时序调度信息获取模块,进一步包括:
配置文件识别模块,响应于配置文件内的时间槽信息、代码文件信息、模型信息、代码文件包含时间槽信息、时间槽包含模型信息、模型调度顺序信息的定义,获取各模型代码的时序调度信息。
26.如权利要求14所述的装置,其特征在于,
所述代码集成模块,进一步用于:
创建接口集成代码文件;
添加引用头文件;
添加各模型接口变量;
添加测试用例接口变量;
添加时序调度代码;以及
添加接口关系代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710000991.7A CN108279885B (zh) | 2017-01-03 | 2017-01-03 | 一种对多个模型代码进行软件集成的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710000991.7A CN108279885B (zh) | 2017-01-03 | 2017-01-03 | 一种对多个模型代码进行软件集成的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108279885A CN108279885A (zh) | 2018-07-13 |
CN108279885B true CN108279885B (zh) | 2021-04-09 |
Family
ID=62800476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710000991.7A Active CN108279885B (zh) | 2017-01-03 | 2017-01-03 | 一种对多个模型代码进行软件集成的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108279885B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191336B (zh) * | 2018-11-13 | 2023-11-03 | 中国航发商用航空发动机有限责任公司 | 航空发动机控制原型闭环仿真方法和系统、存储介质 |
CN110083839B (zh) * | 2019-04-29 | 2023-08-22 | 珠海豹好玩科技有限公司 | 文本导入方法、装置及设备 |
CN112988145B (zh) * | 2019-12-02 | 2024-06-14 | 中国航发商用航空发动机有限责任公司 | 生成航空发动机软件架构的方法及航空发动机控制装置 |
CN111679868A (zh) * | 2020-06-02 | 2020-09-18 | 上海元城汽车技术有限公司 | 汽车软件模型集成方法、装置、设备及存储介质 |
CN111858380B (zh) * | 2020-07-31 | 2024-07-26 | 抖音视界有限公司 | 一种模型构建方法及装置 |
CN112069456A (zh) * | 2020-09-21 | 2020-12-11 | 北京明略昭辉科技有限公司 | 一种模型文件的生成方法、装置、电子设备及存储介质 |
CN112579215B (zh) * | 2020-12-23 | 2023-12-15 | 潍柴动力股份有限公司 | 一种调度函数的生成方法及装置 |
CN112989740B (zh) * | 2021-04-23 | 2022-02-01 | 北京欣博电子科技有限公司 | 一种仿真方法、装置、计算机设备和存储介质 |
CN113342426A (zh) * | 2021-05-31 | 2021-09-03 | 重庆长安汽车股份有限公司 | 一种应用层软件组件集成方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741667A (zh) * | 2008-11-26 | 2010-06-16 | 成都市华为赛门铁克科技有限公司 | 一种逻辑适配的方法、系统和逻辑适配接口 |
CN101901150A (zh) * | 2010-07-08 | 2010-12-01 | 北京航空航天大学 | 通用分布式机载设备健康管理仿真平台及其实现方法 |
CN103996408A (zh) * | 2013-02-20 | 2014-08-20 | 瑞昱半导体股份有限公司 | 确定集成电路的接口时序的方法与其相关的机器可读媒体 |
CN104702568A (zh) * | 2013-12-05 | 2015-06-10 | 浙江大华系统工程有限公司 | 一种业务管理平台 |
CN104778033A (zh) * | 2014-01-09 | 2015-07-15 | 大唐电信科技股份有限公司 | 一种积木式软件的构建方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100293524A1 (en) * | 2009-05-12 | 2010-11-18 | International Business Machines, Corporation | Development environment for managing database aware software projects |
CN101706773B (zh) * | 2009-11-19 | 2011-04-06 | 北京四方继保自动化股份有限公司 | 采用xml信息重组实现变电站iec61850快速自动建模的方法 |
US10223719B2 (en) * | 2013-03-25 | 2019-03-05 | Steven B. Schoeffler | Identity authentication and verification |
CN104715087A (zh) * | 2013-12-14 | 2015-06-17 | 上海莞东拿信息科技有限公司 | 新式交互式仿真状态的旅游运作方法合成系统 |
US9372673B2 (en) * | 2014-09-12 | 2016-06-21 | Comsol Ab | Systems and methods for creating user interfaces for guiding the creation of modeling applications for forming and solving problems in a multiphysics modeling system |
CN105573763B (zh) * | 2015-12-23 | 2018-07-27 | 电子科技大学 | 一种支持rtos的嵌入式系统建模方法 |
CN106201480A (zh) * | 2016-06-30 | 2016-12-07 | 中国航空无线电电子研究所 | 一种座舱显示控制系统软件架构管理平台 |
-
2017
- 2017-01-03 CN CN201710000991.7A patent/CN108279885B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741667A (zh) * | 2008-11-26 | 2010-06-16 | 成都市华为赛门铁克科技有限公司 | 一种逻辑适配的方法、系统和逻辑适配接口 |
CN101901150A (zh) * | 2010-07-08 | 2010-12-01 | 北京航空航天大学 | 通用分布式机载设备健康管理仿真平台及其实现方法 |
CN103996408A (zh) * | 2013-02-20 | 2014-08-20 | 瑞昱半导体股份有限公司 | 确定集成电路的接口时序的方法与其相关的机器可读媒体 |
CN104702568A (zh) * | 2013-12-05 | 2015-06-10 | 浙江大华系统工程有限公司 | 一种业务管理平台 |
CN104778033A (zh) * | 2014-01-09 | 2015-07-15 | 大唐电信科技股份有限公司 | 一种积木式软件的构建方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108279885A (zh) | 2018-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108279885B (zh) | 一种对多个模型代码进行软件集成的方法及装置 | |
JP2765969B2 (ja) | 図式データ駆動型プログラム開発支援装置 | |
CN104268428B (zh) | 一种用于指标计算的可视化配置方法 | |
CN106874244B (zh) | 一种基于工作序列的文档自动生成模型的构建方法 | |
US20070006128A1 (en) | Method for evaluating dynamic expressions | |
US9678628B2 (en) | Method for generating control-code by a control-code-diagram | |
CN111078094B (zh) | 分布式机器学习可视化装置 | |
US8965797B2 (en) | Explosions of bill-of-materials lists | |
CN109062819B (zh) | 一种软件测试用例的生成方法及装置 | |
US9524366B1 (en) | Annotations to identify objects in design generated by high level synthesis (HLS) | |
CN106991100A (zh) | 数据导入方法及装置 | |
CN111158656A (zh) | 基于因果树法的测试代码生成方法及装置 | |
CA2893699C (en) | Physical connection of network components in a graphical computer enviroment with one-way signal propagation | |
CN115454702A (zh) | 日志故障分析方法、装置、存储介质及电子设备 | |
CN115859935A (zh) | 一种基于指标库的数据分析报告模板生成系统及方法 | |
CN114036041B (zh) | 一种基于机器学习的scade模型组合验证环境假设自动生成方法 | |
CN109086985B (zh) | 面向航天器总装的专业测试信息管理系统 | |
TWI402705B (zh) | 積體電路元件之模擬實例產生方法與裝置 | |
CN115904480B (zh) | 代码重构方法、装置、电子设备及存储介质 | |
CN115345600B (zh) | 一种rpa流程的生成方法和装置 | |
CN115469860B (zh) | 基于指令集的需求到软件领域模型的自动生成方法及系统 | |
CN112597011B (zh) | 一种基于多语言的算子测试用例生成和优化方法 | |
CN111708572B (zh) | 一种基于Clang程序结构的控制流程图自动生成方法 | |
CN106155878B (zh) | 用于在数据库中创建供软件测试用的测试环境的方法和装置 | |
CN110389955A (zh) | 一种数据仓库调度文件自动生成系统及生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |