CN105446725B - 用于模型驱动开发的方法和系统 - Google Patents

用于模型驱动开发的方法和系统 Download PDF

Info

Publication number
CN105446725B
CN105446725B CN201410498508.9A CN201410498508A CN105446725B CN 105446725 B CN105446725 B CN 105446725B CN 201410498508 A CN201410498508 A CN 201410498508A CN 105446725 B CN105446725 B CN 105446725B
Authority
CN
China
Prior art keywords
code
program code
snippet
program
model
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
Application number
CN201410498508.9A
Other languages
English (en)
Other versions
CN105446725A (zh
Inventor
王夕宁
戴维·卡明斯基
戴维·奥格尔
蒂姆·哈恩
刘�英
耿韶明
张天霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201410498508.9A priority Critical patent/CN105446725B/zh
Priority to US14/799,602 priority patent/US9645799B2/en
Priority to US14/801,888 priority patent/US9639333B2/en
Publication of CN105446725A publication Critical patent/CN105446725A/zh
Application granted granted Critical
Publication of CN105446725B publication Critical patent/CN105446725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Abstract

本公开内容涉及用于模型驱动开发的方法和系统。在一个实施例中,提供一种用于模型驱动开发的方法,包括:分析程序代码以确定所述程序代码的语句的执行顺序,所述程序代码通过对模型执行第一转换而生成,所述模型包含对所述程序代码所实现的业务的抽象描述;将所述程序代码的所述语句的至少一部分分组为功能块;基于所述执行顺序和所述功能块创建所述程序代码的可视化表示;以及基于用户对所述可视化表示的标注,确定所述程序代码中待保留的代码片段,所述代码片段将被保留在通过对所述模型执行第二转换而生成的新程序代码中,所述第二转换在所述第一转换之后被执行。还描述了相应的系统。

Description

用于模型驱动开发的方法和系统
技术领域
本发明的实施例总体上涉及程序开发,并且更具体地,涉及用于模型驱动开发的方法和系统。
背景技术
模型驱动开发(Model Driven Development,MDD)是一种高效的程序开发模式。例如,可以使用业务规则模型(Business Rule Model)等各种模型来提供对应用或者业务的抽象定义。例如,模型可以定义业务的规则或者逻辑。已知的是,这样的模型可以被转换为可执行的程序代码。作为示例,可以通过对EMF(Eclipse建模框架)模型进行转换生成Java代码。通过使用模型及其转换,待开发应用的逻辑和规则可以与底层程序代码解耦合,这有利于提高程序开发和维护的灵活性。
当根据模型产生程序代码之后,开发人员可能根据需要对程序代码进行更新。例如,开发人员可能修改部分程序代码、添加新的程序代码,等等。对程序代码的某些更新可能是重要的,并且应当被保留下来。换言之,当此后对模型进行再转换(Re-transformation)以生成新的程序代码时,先前重要的代码更新应当被体现在新的程序代码中。
对于面向对象(Object Oriented)的编程语言,程序代码通常以方法(method)为单位被编写。在这种情况下,可以使用注释或者关键字而相对容易地指示需要保留的代码部分。以Java语言为例,可以使用注释“@preserve”来指示需要保留的方法。相应地,在对模型执行再转换时,与“@preserve”相关联的方法的代码片段将被保留在新生成的程序代码中。
然而,在诸如电力、金融、银行等众多领域中,大量的应用是使用非面向对象的早期编程语言开发的。例如,用于实现银行业务的大量应用是使用COBOL语言、C语言或者其他面向过程的语言开发的。对于这些编程语言而言,传统上无法有效地指示程序代码中的哪些片段需要在模型再转换时被保留。由此,在对模型进行再转换时,某些更新后的代码片段将被丢失。
发明内容
总体上,本发明的实施例提出一种用于模型驱动开发的技术方案。
在本发明的一个方面,提供一种用于模型驱动开发的方法。所述方法包括:分析程序代码以确定所述程序代码的语句的执行顺序,所述程序代码通过对模型执行第一转换而生成,所述模型包含对所述程序代码所实现的业务的抽象描述;将所述程序代码的所述语句的至少一部分分组为功能块;基于所述执行顺序和所述功能块创建所述程序代码的可视化表示;以及基于用户对所述可视化表示的标注,确定所述程序代码中待保留的代码片段,所述代码片段将被保留在通过对所述模型执行第二转换而生成的新程序代码中,所述第二转换在所述第一转换之后被执行。
在本发明的另一方面,提供一种用于模型驱动开发的系统。所述系统包括:语句顺序确定单元,被配置为分析程序代码以确定所述程序代码的语句的执行顺序,所述程序代码通过对模型执行第一转换而生成,所述模型包含对所述程序代码所实现的业务的抽象描述;功能块分组单元,被配置为将所述程序代码的所述语句的至少一部分分组为功能块;可视化表示创建单元,被配置为基于所述执行顺序和所述功能块创建所述程序代码的可视化表示;以及代码片段确定单元,被配置为基于用户对所述可视化表示的标注,确定所述程序代码中待保留的代码片段,所述代码片段将被保留在通过对所述模型执行第二转换而生成的新程序代码中,所述第二转换在所述第一转换之后被执行。
根据本发明的实施例,即便是对于非面向对象的编程语言,也可以通过可视化的方式将通过模型转换生成的程序代码呈现给用户。以此方式,用户能够方便、准确、有效地指定代码中应当被保留的代码片段(code snippet)。这样,在随后对模型进行的再转换中,用户指定的代码片段可以被完好地保留。本发明的其他特征和优点将通过下文描述而变得容易理解。
附图说明
通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显其中:
图1示出了适于用来实现本发明实施例的示例性计算机系统/服务器的示意性框图;
图2示出了根据本发明实施例的用于模型驱动开发的方法的示意性流程图;
图3示出了本发明的实施例可应用于其上的以COBOL编程语言编写的程序代码的示意图;
图4示出了根据本发明实施例的程序代码的一个图形化表示的示意图;
图5示出了根据本发明实施例的程序代码的另一图形化表示的示意图;
图6示出了根据本发明实施例的用于在模型再转换中保留用户指定的代码片段的方法的示意性流程图;以及
图7示出了根据本发明实施例的用于模型驱动开发的系统的示意性框图。
在附图中,相同或相似的标号被用来表示相同或相似的元素。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的方框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括一但不限于一操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
下面将详细描述本发明实施例的机制和原理。除非特别声明,在下文和权利要求中使用的术语“基于”表示“至少部分地基于”。术语“包括”表示开放性包括,即“包括但不限于”。术语“多个”表示“两个或更多”。术语“一个实施例”表示“至少一个实施例”。术语“另一实施例”表示“至少一个另外的实施例”。其他术语的定义将在下文描述中给出。
图2示出了根据本发明实施例的用于模型驱动开发的方法200的流程图。传统上,对于通过模型转换而生成的程序代码、特别是以非面向对象的编程语言编写的程序代码,用户很难指定哪些代码片段应该在模型的再转换中被保留下来。这是模型驱动开发中的一个亟待解决的问题。通过下文描述将会理解,利用方法200,该问题可以被得到有效地解决。
在下文描述中。可能描述COBOL作为编程语言的示例。然而,应当理解,这仅仅是出于讨论之目的,无意以任何方式限制本发明的范围。本发明的实施例可适用于诸如C语言等其他面向过程的编程语言,或者面向对象的编程语言。
方法200开始于步骤S210,在此分析程序代码以确定程序代码的语句执行顺序。对代码的分析利用可以借助于代码分析器、解析器、编译器等来完成。特别地,根据本发明的实施例,在步骤S210处被分析的程序代码是基于模型而生成的。为讨论方便起见,将生成步骤S210处被处理的程序代码的模型转换称为“第一转换”。
模型定义程序代码所要实现的业务。具体而言,模型包含相应业务的抽象描述,而该业务将由基于模型生成的程序代码实现。例如,模型可以定义所要实现的业务的功能、流程、控制规则、逻辑,等等。支持模型驱动开发的任何模型均可与本发明的实施例结合使用,包括但不限于:企业架构模型、技术架构模型、领域模型、用户界面模型、数据库建模、业务规则模型、系统部署模型、测试模型,等等。模型可以通过任何适当的方式来表示,例如使用统一建模语言(UML)、可扩展标记语言(XML),等等。
通过对模型进行转换,可以生成能够实现相应业务的程序代码。例如,可以生成实现模型中的各个节点所描述的功能的程序代码。而后,可以按照节点的关系来组织所生成的程序代码。基于模型的代码生成是本领域中已知的,在此不再赘述,以避免混淆本发明的主题。
在一个实施例中,可以在步骤S210分析程序代码的执行逻辑,以便确定程序代码的语句执行顺序。一般而言,程序代码是顺序执行的。然而,当程序代码中存在导致执行跳转的语句(称为“跳转语句”)时,程序代码将不再顺序地执行。因此,在一个实施例中,可以查找程序代码中的跳转语句。以COBOL语言为例,跳转语句的示例包括但不限于“IF”、“THEN”、“ELSE”、“END-IF”、“PERFORM”,“CALL”,等等。可以理解,取决于程序语言,跳转语句可能发生变化。本发明的范围在此方面不受限制。根据跳转语句,可以识别出程序代码中发生执行跳转的分支部分。基于程序代码中顺序执行的主干部分和识别出的一个或多个分支部分,可以确定程序代码的语句执行顺序。
接下来,方法200进行到步骤S220,在此将程序代码的部分或者全部语句分组为功能块(functional block)。功能块也可以称为“段落”(paragraph),是指用于实现相对独立的一个或多个功能的程序代码片段。本领域技术人员可以理解,在诸如Java、C++之类的面向对象的编程语言中,每个方法可以被视作一个功能块。然而,在诸如COBOL之类的非面向对象的编程语言中,程序代码是以面向过程的方式编写的。由此,无法直接从代码中提取功能块。
为此,在一个实施例中,可以基于程序代码中包含的预定义关键字来解析所述程序代码的控制流(control flow),以便确定程序代码中的功能块。以COBOL编程语言为例,可以在程序代码中查找“PERFORM”表达式,并且将“PERFORM”表达式所调用的程序代码识别为一个功能块。
作为示例,图3示出了一段以COBOL编程语言编写的程序代码300。在程序代码300中,查找到“PERFORM”表达式310,其执行称为“5100-DEP-PASSBK-RTN”的过程320。由此,可以将过程“5100-DEP-PASSBK-RTN”320识别为一个功能块。对功能块的识别可以嵌套地执行。例如,在过程“5100-DEP-PASSBK-RTN”320中包含“PERFORM”表达式330。由此,可以将与该表达式相关联的过程“5110-CALL-KSADEP1-RTN”也识别为一个功能块,以此类推。
将会理解,“PERFORM”表达式仅仅是可被用来解析控制流的关键词的示例,无意限制本发明的实施例。例如,在一个实施例中,在COBOL编程语言编写的程序代码中,可以使用“CALL”表达式来识别功能块。实际上,可以理解的是,取决于不同的编程语言,可以使用不同关键词来解析程序代码的控制流。本发明的范围在此方面不受限制。
将会理解,尽管在图2和上文描述中步骤S210先于步骤S220执行,但是这仅仅是出于说明目的,无意以任何方式限制本发明的范围。在一个实施例中,步骤S220可以先于步骤S210执行。备选地,并行执行步骤S210和S220同样是可行的。
仍然参考图2,方法200进行到步骤S230,在此基于步骤S210处确定的语句执行顺序和步骤S220处确定的功能块,创建程序代码的可视化表示。作为示例,在一个实施例中,可视化表示是图形化表示。例如,可以使用流程图来表示程序代码。特别地,流程图的结构可以根据程序代码的语句执行顺序来确定。流程图中的一个或多个图元可以对应于程序代码中的功能块。当然,流程图中的一个或多个图元也可以直接由程序代码中的语句来充当。
图4示出了图3中所示的程序代码300的部分图形化表示的示意图。在图4所示的示例中,图形化表示被实现为流程图400。流程图400的总体结构由在步骤S210处分析得出的程序代码300的语句执行顺序确定。特别地,在流程图400中,图元410、420、440、450和470表示程序代码300中的功能块。另一些图元415、430和460是程序代码中的语句。通过向用户呈现程序代码的流程图400,用户能够直观地掌握程序的总体逻辑和上下文。这有助于用户确定程序代码中的哪些程序片段是需要保留的。
注意,流程图仅仅是程序代码的图形化表示的一个示例。在其他实施例中,可以使用任何其他类型的图形化表示,包括但不限于图、树、管道图、UML图,等等。而且,除了图形化表示之外,在步骤S230,还可以创建程序代码的其他可视化表示。例如,在一个实施例中,可以基于语句执行顺序和功能块生成程序代码的文本表示,例如伪代码。动画、视频、多媒体、富媒体等其他任何形式的可视化表示都是可行的。本发明的范围在此方面不受限制。
特别地,在程序代码的可视化表示中,可以向用户呈现与程序代码的语句和/或功能块相关联的、可读性更高的描述性信息。具体而言,在一个实施例,模型和/或根据模型生成的程序代码可以具有相关联的词汇表(vocabulary)。词汇表可以用来定义模型和/或程序代码中的变量名、过程名或者其他元素的语义含义。作为示例,在COBOL编程语言中,程序代码中使用的变量和过程的语义内容可以被定义在称为“Copybook”的文件中。此时,Copybook文件可以充当词汇表。在其他实施例中,可以使用任何适当形式的文件或其他数据结构来实现词汇表。例如,在一个实施例中,可以使用头文件(例如,在C语言中是后缀名为“.h”的文件)充当词汇表。备选地,也可以使用数据库的表、文本文件、XML文件等任何适当的技术来实现词汇表。
通过访问词汇表,可以确定程序代码中的变量、过程等元素的语义内容。由此,在步骤S230生成的可视化表示中,可以向用户呈现这些变量或过程的语义内容。作为示例,图5示出了程序代码300的部分图形化表示500的示意图。与图4中所述的图形化表示400相比,在图5所示的图形化表示500中,某些变量和过程的名称被替换为相关联的语义内容。例如,图形化表示400中的图元415所显示的内容是程序的原始过程名称“CCMPAR2”。假设通过访问词汇表确定:过程CCMPAR2的语义内容为“注册过程”。由此,在图形化表示500的对应图元515中,过程名称“CCMPAR2”被替换为其语义内容“注册过程”。类似地,根据词汇表,图元560处的变量名“TPT-TX-TYPE”和“C-CM-TXTYP-TR”分别被替换为其语义内容“操作类别”和“数据转移”。
注意,尽管在图5所述的示例中,变量和过程的名称被相关联的语义内容替换,但这不是必须的。在一个示例中,可以同时显示变量/过程的名称以及相关联的语义内容。本发明的范围在此方面不受限制。
通过在程序代码的可视化表示中使用变量和/或过程的语义内容,能够使得人类用户更快、更准确地掌握程序代码的逻辑和总体上下文。这样,用户能够更有效地确定哪些代码片段是需要保留的。当然,在程序代码的可视化表示中,并非一定要使用变量和/或过程的语义内容。在一个实施例中,可以在程序代码的可视化表示中使用程序代码中的变量或过程的原始名称。
接下来,在步骤S240,在此基于用户对步骤S230所生成和呈现的可视化表示的标注,确定程序代码中待保留的一个或多个代码片段。在随后对模型的再转换中,所确定的这些代码片段将被保留在新生成的代码中。每个代码片段包含一个或多个语句。根据本发明的实施例,在对模型执行后续转换(称为“第二转换”)时,在步骤S240处确定的代码片段将被保留在第二转换所生成的新程序代码中。
具体而言,在一个实施例中,在向用户显示程序代码的可视化表示之后,允许用户通过交互的方式来标注其中的一个或多个部分。作为示例,仍然考虑图形化表示的实施例。在这样的实施例中,可以为用户提供交互式选择工具,允许用户选择图形化表示中的一个或多个图元,例如流程图中的框。例如,用户可以通过点击图元而选择该图元。备选地,可以允许用户通过手势、组合键等任何适当的方式一次选择多个图元。
作为示例,仍然考虑图4所示的示例,用户可以使用鼠标之类的指点设备在程序代码的图形化表示400上描绘一个框480。落入框480范围内的图元420、430和440被选择中。相应地,所选图元所对应的代码将被确定为待保留的。将会理解,这仅仅是示例性的,无意以任何方式限制本发明的范围。任何目前已知或者将来开发的图元选择方式都是可行的。
对于用户所选择的每个图元,可以确定与该图元相对应的程序代码中的语句。如果图元本身就是一个或多个语句,则可以直接确定这些语句是应当在再转换中被保留的。反之,如果图元对应于一个功能块,则可以将这个功能块确定为应当保留的代码片段。特别地,如果图元所对应的内容包括变量或过程的语义内容,可以基于词汇表确定该语义内容所对应的变量或过程。相应地,该变量或过程将被确定为应当保留的部分。
在传统方案中,对于COBOL之类的非面向对象的编程语言而言,用户无法方便、有效、准确定指定代码中需要在模型再转换中被保留的代码片段。相反,通过上文描述将会理解,本发明的实施例有效地解决了该问题。而且,通过呈现变量或过程的语义内容,用户能够更加方便和准确地指定将要保留的代码片段。
根据本发明的实施例,可以通过各种适当的方式在模型的再转换过程中,确保在步骤S240处确定的代码片段被保留在新生成的程序代码中。图6示出了根据本发明实施例的用于在模型再转换中保留用户指定的代码片段的方法600的示意性流程图。
如图所示,方法600开始于步骤S610,在此生成描述在步骤S240处确定的将要保留的代码片段的元数据。在一个实施例中,可以针对程序代码中要保留的所有代码片段生成公共的元数据。备选地或附加地,在一个实施例中,也可以针对要保留的每个代码片段而生成元数据。
在一个实施例中,元数据可以描述将要保留的每个代码片段所属的功能块。例如,元数据可以使用功能块在程序中的标识符和/或过程名称等有关信息来指示功能块。
在一个实施例中,元数据可以描述将要保留的每个代码片段在程序代码中的位置。例如,在一个实施例中,元数据可以描述将要保留的每个代码片段在程序代码中的起始行号和结束行号。备选地或附加地,在一个实施例中,元数据可以描述将要保留的每个代码片段的起始行号和行数,和/或结束行号和行数。备选地,在一个实施例中,元数据可以描述将要保留的每个代码片段的至少一个先前代码片段和至少一个后继代码片段的标识信息。可以理解,元数据的具体内容可以变化,只要能够描述代码片段在程序代码中的位置即可。
除了代码片段所属的功能块以及在程序代码中的位置之外,在一个实施例中,元数据可以描述与代码片段有关的任何其他信息。例如,在一个实施例中,元数据可以描述将要保留的代码片段的创建时间、创建者、修改时间、修改者,等等。又如,元数据可以指示待保留的代码片段在模型再转换所生成的新程序代码中的插入位置。例如,已经发现:各个代码片段的顺序在原程序代码和新程序代码中通常保持不变。由此,在一个实施例中,新程序代码中的插入位置例如可以由待保留代码片段在原程序代码中的至少一个先前代码片段和/或至少一个后继代码片段来指示。当然,使用行号等其他信息指示插入位置同样是可行的。
方法600随后进行到步骤S620,在此存储元数据。在一个实施例中,元数据可以独立于程序代码而被存储。例如,可以将元数据与程序代码存储在彼此独立的文件中。这样做是有益的。例如,可以避免由于程序文件的迁移或损坏而破坏元数据。然而,元数据与程序代码的独立存储并非是必须的。例如,在一个实施例中,可以将元数据与程序代码存储在单个文件中。
元数据可以具有任何适当的格式。例如,在一个实施例中,元数据可以借助于XML来实现。作为示例,下面的XML文件片段示出了与图3中所示的代码片段5000和5100相关联的元数据。在所示的示例中,代码片段的位置使用起始行号(from)和结束行号(to)来指示。这仅仅是示例性的,如上所述,任何其他方式均是可行的。另外,元数据并非一定要使用XML文件来实现。例如,在备选实施例中,使用文本文件、数据库表等来保存元数据同样是可行的。
接下来,在步骤S630,利用元数据更新用于模型的转换策略(transformationpolicy)。如已知的,转换策略可以用来控制模型向代码的转换。例如,转换策略可以控制如何将模型中的节点转换为相应的程序代码,如何根据模型中的节点之间的关系来组织程序代码,等等。根据本发明的实施例,通过利用待保留代码片段的元数据来更新转换策略,更新后的转换策略具有哪些代码片段应被保留在再转换所生成的新程序代码中的知识。为讨论方便起见,更新后的转换策略被称为“再转换策略”。
方法600随后进行到步骤S640,在此基于在步骤S630生成的再转换策略控制模型的第二转换,即再转换。具体而言,如果将要保留的代码片段所对应的节点存在于模型中,则可以直接通过转换该节点生成相应的代码片段。这个过程是已知的,在此不再赘述。
另一方面,如果模型中不存在与将要保留的给定代码片段相对应的节点,则可以根据该给定代码片段的元数据,从先前生成的程序代码中取回该给定代码片段。如上所述,元数据至少可以指示代码片段在先前生成的程序代码中的位置。由此,可以根据所指示的位置取回代码片段。
取回的代码片段可以被插入到通过执行第二转换而生成的新程序代码中。例如,在一个实施例中,可以基于在方法200中的步骤S210处确定的语句执行顺序,完成所取回代码片段的插入。如上所述,对于任何将要保留的代码片段,元数据可以指示该代码片段在新程序代码中的插入位置。例如,如上所述,该插入位置可以由待保留代码片段的至少一个先前代码片段和/或至少一个后继代码片段来指示。以先前代码片段为例,可以根据元数据定位待保留代码片段的先前代码片段在新程序代码中的位置。这可以通过在新程序代码中搜索该先前代码片段来实现。而后,待保留的代码片段可以被插入在该先前片段之后的位置。以此方式,可以确保在方法200的步骤S240处确定的代码片段被保留在模型再转换所生成的新程序代码中的正确位置。
应当理解,方法600仅仅是示例性的,无意以任何方式限制本发明的范围。根据本发明的实施例,并不一定要通过更新转换策略来保留用户所指定的代码片段。例如,在一个备选实施例中,可以在模型的再转换完成之后,在新生成的程序代码中搜索每个应当保留的代码片段。如果任何待保留的代码片段未在新程序代码中被找到,则可以在新程序代码中的适当位置插入该代码片段。任何其他适当的实现均是可行的。
图7示出了根据本发明实施例的用于一种用于模型驱动开发的系统700的示意性框图。如图所示,系统700包括:语句顺序确定单元710,被配置为分析程序代码以确定所述程序代码的语句的执行顺序,所述程序代码通过对模型执行第一转换而生成,所述模型包含对所述程序代码所实现的业务的抽象描述;功能块分组单元720,被配置为将所述程序代码的所述语句的至少一部分分组为功能块;可视化表示创建单元730,被配置为基于所述执行顺序和所述功能块创建所述程序代码的可视化表示;以及代码片段确定单元740,被配置为基于用户对所述可视化表示的标注,确定所述程序代码中待保留的代码片段,所述代码片段将被保留在通过对所述模型执行第二转换而生成的新程序代码中。
在一个实施例中,所述功能块分组单元720可以包括:功能块确定单元,被配置为基于所述程序代码中的预定义关键字,解析所述程序代码的控制流以确定所述功能块。
在一个实施例中,所述可视化表示创建单元730可以包括:图形化表示创建单元,被配置为基于所述执行顺序和所述功能块创建所述程序代码的图形化表示。
在一个实施例中,所述可视化表示创建单元730可以包括:语义确定单元,被配置为基于与所述模型和所述程序代码中的至少一个相关联的词汇表,确定所述程序代码中的变量或过程的语义内容;以及语义呈现单元,被配置为在所述程序代码的所述可视化表示中呈现所述语义内容。
在一个实施例中,系统700还可以包括:元数据生成单元,被配置为生成描述所述代码片段的元数据;以及策略更新单元,被配置为利用所述元数据更新所述模型的转换策略,以用于控制对所述模型的所述第二转换。
在一个实施例中,所述元数据指示所述代码片段所属的功能块以及所述代码片段在所述程序代码中的位置。在一个实施例中,所述代码片段在所述程序代码中的位置由以下至少一项指示:所述代码片段在所述程序代码中的起始行号和结束行号;所述代码片段在所述程序代码中的起始行号和行数;所述代码片段在所述程序代码中的结束行号和行数;以及所述代码片段在所述程序代码中的至少一个先前代码片段和至少一个后继代码片段。在一个实施例中,所述元数据和所述程序代码可以独立地存储。
在一个实施例中,元数据可以指示待保留的代码片段在所述新程序代码中的插入位置。例如,插入位置可以由代码片段在所述程序代码中的至少一个先前代码段和/或至少一个后继代码段来指示。
在一个实施例中,系统700还可以包括:代码片段取回单元,被配置为响应于所述模型中不存在与所述代码片段对应的节点,根据所述元数据从所述程序代码中取回所述代码片段;以及代码片段插入单元,被配置为根据所述执行顺序,将所述代码片段插入所述新程序代码中。
应当注意,为清晰起见,图7中没有示出系统700所包括的可选单元或者子单元。上文所描述的所有特征和操作分别适用于系统700,故在此不再赘述。而且,系统700中的单元或子单元的划分不是限制性的而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实现。本发明的范围在此方面不受限制。
而且,系统700所包含的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。例如,在某些实施方式中,系统700可以利用软件和/或固件来实现。备选地或附加地,系统700可以部分地或者完全地基于硬件来实现。例如,系统700中的一个或多个单元可以实现为集成电路(IC)芯片、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA),等等。本发明的范围在此方面不受限制。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是-但不限于-电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言-诸如Java、Smalltalk、C++等,以及常规的过程式编程语言-诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
计算机可读程序指令也可加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (18)

1.一种用于模型驱动开发的方法,所述方法包括:
分析程序代码以确定所述程序代码的语句的执行顺序,所述程序代码通过对模型执行第一转换而生成,所述模型包含对所述程序代码所实现的业务的抽象描述;
将所述程序代码的所述语句的至少一部分分组为功能块;
基于所述执行顺序和所述功能块创建所述程序代码的可视化表示;
基于用户对所述可视化表示的标注,确定所述程序代码中待保留的代码片段,所述代码片段将被保留在通过对所述模型执行第二转换而生成的新程序代码中,所述第二转换在所述第一转换之后被执行;
生成描述所述代码片段的元数据,所述元数据可以指示该代码片段在新程序代码中的插入位置;以及
利用所述元数据更新所述模型的转换策略,以用于控制对所述模型的所述第二转换。
2.根据权利要求1所述的方法,其中将所述程序代码的所述语句的至少一部分分组为功能块包括:
基于所述程序代码中的预定义关键字,解析所述程序代码的控制流以确定所述功能块。
3.根据权利要求1所述的方法,其中基于所述执行顺序和所述功能块创建所述程序代码的可视化表示包括:
基于所述执行顺序和所述功能块创建所述程序代码的图形化表示。
4.根据权利要求1所述的方法,其中基于所述执行顺序和所述功能块创建所述程序代码的可视化表示包括:
基于与所述模型和所述程序代码中的至少一个相关联的词汇表,确定所述程序代码中的变量或过程的语义内容;以及
在所述程序代码的所述可视化表示中呈现所述语义内容。
5.根据权利要求1所述的方法,其中所述元数据指示所述代码片段所属的功能块以及所述代码片段在所述程序代码中的位置。
6.根据权利要求5所述的方法,其中所述代码片段在所述程序代码中的位置由以下至少一项指示:
所述代码片段在所述程序代码中的起始行号和结束行号;
所述代码片段在所述程序代码中的起始行号和行数;
所述代码片段在所述程序代码中的结束行号和行数;以及
所述代码片段在所述程序代码中的至少一个先前代码片段和至少一个后继代码片段。
7.根据权利要求1所述的方法,其中所述元数据和所述程序代码独立地存储。
8.根据权利要求6到7任一项所述的方法,还包括:
响应于所述模型中不存在与所述代码片段对应的节点,根据所述元数据从所述程序代码中取回所述代码片段;以及
根据所述执行顺序,将所述代码片段插入所述新程序代码中。
9.根据权利要求1所述的方法,其中所述元数据指示所述代码片段在所述新程序代码中的插入位置。
10.一种用于模型驱动开发的系统,所述系统包括:
语句顺序确定单元,被配置为分析程序代码以确定所述程序代码的语句的执行顺序,所述程序代码通过对模型执行第一转换而生成,所述模型包含对所述程序代码所实现的业务的抽象描述;
功能块分组单元,被配置为将所述程序代码的所述语句的至少一部分分组为功能块;
可视化表示创建单元,被配置为基于所述执行顺序和所述功能块创建所述程序代码的可视化表示;
代码片段确定单元,被配置为基于用户对所述可视化表示的标注,确定所述程序代码中待保留的代码片段,所述代码片段将被保留在通过对所述模型执行第二转换而生成的新程序代码中,所述第二转换在所述第一转换之后被执行;
元数据生成单元,被配置为生成描述所述代码片段的元数据,所述元数据可以指示该代码片段在新程序代码中的插入位置;以及
策略更新单元,被配置为利用所述元数据更新所述模型的转换策略,以用于控制对所述模型的所述第二转换。
11.根据权利要求10所述的系统,其中所述功能块分组单元包括:
功能块确定单元,被配置为基于所述程序代码中的预定义关键字,解析所述程序代码的控制流以确定所述功能块。
12.根据权利要求10所述的系统,其中所述可视化表示创建单元包括:
图形化表示创建单元,被配置为基于所述执行顺序和所述功能块创建所述程序代码的图形化表示。
13.根据权利要求10所述的系统,其中所述可视化表示创建单元包括:
语义确定单元,被配置为基于与所述模型和所述程序代码中的至少一个相关联的词汇表,确定所述程序代码中的变量或过程的语义内容;以及
语义呈现单元,被配置为在所述程序代码的所述可视化表示中呈现所述语义内容。
14.根据权利要求10所述的系统,其中所述元数据指示所述代码片段所属的功能块以及所述代码片段在所述程序代码中的位置。
15.根据权利要求14所述的系统,其中所述代码片段在所述程序代码中的位置由以下至少一项指示:
所述代码片段在所述程序代码中的起始行号和结束行号;
所述代码片段在所述程序代码中的起始行号和行数;
所述代码片段在所述程序代码中的结束行号和行数;
所述代码片段在所述程序代码中的至少一个先前代码片段和至少一个后继代码片段。
16.根据权利要求10所述的系统,其中所述元数据和所述程序代码独立地存储。
17.根据权利要求15到16任一项所述的系统,还包括:
代码片段取回单元,被配置为响应于所述模型中不存在与所述代码片段对应的节点,根据所述元数据从所述程序代码中取回所述代码片段;以及
代码片段插入单元,被配置为根据所述执行顺序,将所述代码片段插入所述新程序代码中。
18.根据权利要求10所述的系统,其中所述元数据指示所述代码片段在所述新程序代码中的插入位置。
CN201410498508.9A 2014-09-25 2014-09-25 用于模型驱动开发的方法和系统 Active CN105446725B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201410498508.9A CN105446725B (zh) 2014-09-25 2014-09-25 用于模型驱动开发的方法和系统
US14/799,602 US9645799B2 (en) 2014-09-25 2015-07-15 Method and system for model driven development
US14/801,888 US9639333B2 (en) 2014-09-25 2015-07-17 Method and system for model driven development

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410498508.9A CN105446725B (zh) 2014-09-25 2014-09-25 用于模型驱动开发的方法和系统

Publications (2)

Publication Number Publication Date
CN105446725A CN105446725A (zh) 2016-03-30
CN105446725B true CN105446725B (zh) 2019-01-18

Family

ID=55556974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410498508.9A Active CN105446725B (zh) 2014-09-25 2014-09-25 用于模型驱动开发的方法和系统

Country Status (2)

Country Link
US (2) US9645799B2 (zh)
CN (1) CN105446725B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016183211A1 (en) * 2015-05-12 2016-11-17 Phase Change Software Llc Machine-based normalization of machine instructions
CN106775683B (zh) * 2016-11-30 2020-06-19 华南理工大学 一种图形化编程控制与存储系统
JP6938250B2 (ja) * 2017-07-05 2021-09-22 キーサイト テクノロジーズ, インク. 測定システムのプログラム作成方法、測定システム、及び、コンピュータ可読記憶媒体
CN109960529B (zh) * 2017-12-21 2023-03-17 北京奇虎科技有限公司 一种程序代码的修复方法和装置
CN109582310B (zh) * 2018-11-30 2022-11-25 北京微播视界科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN111427560B (zh) * 2020-02-27 2022-05-20 平安医疗健康管理股份有限公司 规则代码的可视化创建方法、装置和计算机设备
CN111736820A (zh) * 2020-06-24 2020-10-02 支付宝(杭州)信息技术有限公司 一种可视化程序开发方法及装置
KR102434534B1 (ko) * 2020-07-24 2022-08-22 주식회사 레드브릭 블록 코딩을 지원하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능 기록 매체
CN112015403B (zh) * 2020-09-04 2022-05-24 刘婷婷 软件设计方法和系统
CN115993966B (zh) * 2023-03-24 2023-06-30 美云智数科技有限公司 应用开发系统及方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463732A3 (en) * 1990-06-28 1992-10-14 International Business Machines Corporation Method and system for animating the execution of a computer program
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6996806B2 (en) * 2001-09-21 2006-02-07 International Business Machines Corporation Graphical view of program structure during debugging session
US20060031820A1 (en) 2004-08-09 2006-02-09 Aizhong Li Method for program transformation and apparatus for COBOL to Java program transformation
US20060064667A1 (en) 2004-09-20 2006-03-23 Freitas Jose D System and method of model-driven development using a transformation model
US7478362B2 (en) 2004-12-01 2009-01-13 International Business Machines Corporation Computer method and apparatus for improving programming modeling with lightweight stereotypes
US8615729B2 (en) 2004-12-10 2013-12-24 International Business Machines Corporation Extending existing model-to-model transformations
US8756044B2 (en) * 2005-05-31 2014-06-17 The Mathworks, Inc. Graphical partitioning for parallel execution of executable block diagram models
US8209672B2 (en) * 2006-05-15 2012-06-26 Software Ag Systems and methods for transforming modeled business processes into executable processes
US8418125B2 (en) 2007-05-03 2013-04-09 International Business Machines Corporation Incremental model refinement and transformation in generating commerce applications using a model driven architecture
US10452768B2 (en) * 2007-11-03 2019-10-22 International Business Machines Corporation Managing source annotation metadata
US8869098B2 (en) * 2007-12-05 2014-10-21 International Business Machines Corporation Computer method and apparatus for providing model to model transformation using an MDA approach
US8479148B2 (en) 2007-12-05 2013-07-02 International Business Machines Corporation Computer method and apparatus for model transformation reapply
US8813024B2 (en) * 2008-09-22 2014-08-19 International Business Machines Corporation System and a method for cross-platform porting of business application and making them contextually-aware on target platforms
US20100138820A1 (en) * 2008-12-01 2010-06-03 Joshi Shrinivas B Framework for Control Flow-Aware Processes
GB0908913D0 (en) * 2009-05-26 2009-07-01 Univ Dundee Software development tool
US20110088011A1 (en) * 2009-10-14 2011-04-14 Vermeg Sarl Automated Enterprise Software Development
US9558103B2 (en) * 2011-08-25 2017-01-31 Hewlett Packard Enterprise Development Lp System and method to indicate code block execution
US9740868B2 (en) * 2012-09-27 2017-08-22 International Business Machines Corporation Customizing a security report using static analysis
US9542165B2 (en) * 2012-11-14 2017-01-10 Sap Se Model to Petri-Net transformation
US9418183B2 (en) * 2013-06-10 2016-08-16 Abb Research Ltd. Model development environment for assisting user in developing model describing condition of industrial asset
US20150113498A1 (en) * 2013-10-21 2015-04-23 Microsoft Corporation Modeling customizations to a computer system without modifying base elements
US10162609B2 (en) * 2014-08-26 2018-12-25 Microsoft Technology Licensing, Llc Model-driven object composition for data access using function-expressions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《An introduction to Model-Driven Architecture(MDA) Part II:Lessons from the design and the use of an MDA toolkit Level:Introductory》;Alan W. Brown et al.;《https://www.ibm.com/developerworks/rational/library/content/RationalEdge/apr05/brown/》;20050415;第3页第1段-第4页第2段,第13页倒数第2段

Also Published As

Publication number Publication date
US20160092177A1 (en) 2016-03-31
US20160092178A1 (en) 2016-03-31
CN105446725A (zh) 2016-03-30
US9639333B2 (en) 2017-05-02
US9645799B2 (en) 2017-05-09

Similar Documents

Publication Publication Date Title
CN105446725B (zh) 用于模型驱动开发的方法和系统
US7610545B2 (en) Annotations for tracking provenance
Kennard et al. Towards a general purpose architecture for UI generation
US11256755B2 (en) Tag mapping process and pluggable framework for generating algorithm ensemble
CN101253478A (zh) 类型推理和类型导向的后期绑定
US20160132304A1 (en) Contraction aware parsing system for domain-specific languages
CN104375875B (zh) 用于应用程序的编译优化的方法以及编译器
US9195567B1 (en) Debugging data format conversion
CN111316232A (zh) 使用程序的注释来提供优化
CN109739600A (zh) 数据处理方法、介质、装置和计算设备
US11100297B2 (en) Provision of natural language response to business process query
JP2012113706A (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
CN109313547A (zh) 用于cpu利用率和代码重构的查询优化器
US20160321218A1 (en) System and method for transforming image information for a target system interface
CN111656453A (zh) 用于信息提取的层次实体识别和语义建模框架
CN110460461B (zh) Yang模式语言到命令行的映射方法及系统
US11822896B2 (en) Contextual diagram-text alignment through machine learning
US10747941B2 (en) Tag mapping process and pluggable framework for generating algorithm ensemble
CN116028062A (zh) 目标代码的生成方法、npu指令的显示方法及装置
CN113687827B (zh) 基于微件的数据列表生成方法、装置、设备及存储介质
US9141342B2 (en) Programmatic conversion of support documentation into executable programs
US8548798B2 (en) Representations for graphical user interfaces of operators, data types, and data values in a plurality of natural languages
CN111651696B (zh) 产品标签的定制方法及装置、计算机存储介质、电子设备
CN104216706A (zh) Modelica模型的浏览方法
CN107102748A (zh) 用于输入字词的方法和输入法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant