计算机可执行的模型逆向工程方法及装置与流程

文档序号:11236529阅读:1036来源:国知局
计算机可执行的模型逆向工程方法及装置与流程

本公开涉及计算机可执行的模型逆向工程方法和装置,并且更具体地,涉及以下的计算机可执行的模型逆向工程方法和装置:定义结构和将程序的源代码转换为模型以自动生成期望类型的模型的规则,因此易于分析并重新设计程序结构。



背景技术:

可以通过使用户直接读取源代码或者通过使用效果分析工具将源代码可视化来对现有的计算机程序进行分析。前一种方法主要取决于分析人员的技术能力,而后一种方法简单并机械地将程序的模型按照原样可视化,使得需要花费费用来将程序处理成期望类型的数据。在这两种方法中,所生成的产品仅仅是参考数据并且不能重复使用。

由模型逆向工程表达的产品主要分为两种类型。一种类型是被设计为一般使用的建模语言,其与uml(统一建模语言)对应。另一种类型是由与changeminer对应的效果分析工具使用的专用表达方案。图7a例示了通用建模语言uml的结构元素,并且图7b例示了作为效果分析工具的changeminer。

在前一种类型的情况下,虽然其可以提供通用符号以便生成用于各种sw环境和编程语言的模型,但其体积巨大。另外,虽然能够制作粗略的sw模型,但其符号不是由uml提供的源代码信息丢失。因此,不能利用通过逆向工程生成的模型来再次生成可执行的源代码。在后一种类型的情况下,由效果分析工具提供的逆向工程的产品在能够表达各种源代码信息的角度具有高利用率。然而,在后一种情况下,仅仅提供了不能实现二次利用的简单报告,包括将逆向工程的产品用作模型并且基于该模型执行设计,这导致利用率降低。另外,由于产品按照原样显示了源代码的模型,所以其包含了许多不必要的信息。

因此,需要提供以下装置:该装置能够通过逆向工程制作所期望的模型形状以在设计中重复使用,利用源代码的所有信息,并且随后产生在各种编程语言中可执行的源代码。使用该装置,能够提高sw开发的便利性及其质量。

韩国专利注册no.10-0463833公开了组件自动转换系统和方法,其自动地分析系统的源代码,并且使用面向对象的计算系统中的分析信息将源代码转换为组件。

韩国专利注册no.10-0965706公开了能够重新插入代码的计算机装置和代码重新插入方法,该代码重新插入方法通过能够在开发期间的各个步骤中执行的一组可扩展和构造的代码重新插入单元来提供代码单元的重新插入和转换、代码单元的布置和执行。



技术实现要素:

技术课题

本公开的一实施方式提供了一种计算机可执行的服务器模型逆向工程方法和装置,该服务器模型逆向工程方法和装置能够将现有的源代码转换为期望类型的模型以易于执行程序的分析、结构理解和重新设计。

本公开的另一实施方式提供了一种计算机可执行的模型逆向工程方法和装置,该模型逆向工程方法和装置能够在模型中没有任何信息丢失地表达源代码的所有信息,并且仅使用模型来确认源代码的所有内容。

本公开的又一实施方式提供了一种计算机可执行的模型逆向工程方法和装置,该模型逆向工程方法和装置能够将源代码转换为抽象格式的表达以抽象地表达所有信息,而不受限于准备源代码的编程语言。

本公开的又一实施方式提供了一种计算机可执行的模型逆向工程方法和装置,该模型逆向工程方法和装置能够使用模型来生成执行与各种编程语言相同的功能的程序。

技术解决方案

根据本公开的实施方式,提供了一种计算机可执行的模型逆向工程方法,该方法包括以下步骤:(a)接收源代码;(b)接收用于将所述源代码转换为目标模型的转换规则;(c)使用与所述源代码相关的解析器来解析所述源代码,以将具有特定实质结构(materialstructure)的解析数据存储在存储器中;(d)将所存储的解析数据转换为元模型;以及(e)根据所接收的转换规则将所述元模型转换为目标模型。

根据一实施方式,该方法还可以包括以下步骤:(f)按照适合于统一建模语言(uml)标准的形式再对转换后的目标模型进行转换,以被存储在文件中。

根据一实施方式,所述步骤(b)可以包括以下步骤:接收由源转换规则、模型转换规则、命名规则和关系规则配置的转换规则。这里,所述步骤(e)可以包括以下步骤:根据所述转换规则来指定并转换所述源代码的特定元素或所述目标模型的特定元素。

根据一实施方式,所述步骤(c)可以包括以下步骤:根据所述源代码的编程语言类型将所述源代码解析为具有不同实质结构的数据。

根据一实施方式,所述步骤(d)可以包括以下步骤:独立于源代码类型和编程语言类型而将所述解析数据转换为按照特定实质结构显示所述源代码的所有元素的元模型。

根据一实施方式,该方法还可以包括以下步骤:(g)将无关的源代码排除在外,以便不根据所述转换规则进行转换。

根据一实施方式,该方法还可以包括以下步骤:(h)接收用于不能用uml表达的源代码信息的单独转换规则。在另一实施方式中,所述步骤(h)还可以包括以下步骤:针对不能用所述uml表达的所述源代码信息,在消息生命线、异常生命线、验证生命线或代码生命线中的至少一个中生成消息。

根据一实施方式,该方法还可以包括以下步骤:验证所述源代码的所有信息是否被包括在所述目标模型中。

根据一实施方式,所述步骤(e)可以包括以下步骤:(e-1)根据所接收的转换规则将所述元模型转换为源模型;(e-2)接收用于将所述源模型转换为所述目标模型的模型至模型转换规则;以及(e-3)根据所述模型至模型转换规则将所述源模型转换为所述目标模型。

根据一实施方式,该方法还可以包括以下步骤:(i)接收所述目标模型,以执行用于生成源代码的配置;(j)读取所述目标模型的元素,以确认所述元素是否用于生成所述源代码;(k)根据所述元素所具有的验证规则对用于生成所述源代码的模型元素进行验证;以及(l)根据验证结果生成所述源代码。

根据一实施方式,所述步骤(i)可以包括以下步骤:注册所述目标模型的元素和针对相应元素的转换规则,并且指定所述转换规则的执行条件以执行所述配置。

根据本公开的实施方式,提供了一种模型逆向工程装置,该装置包括:存储器,所述存储器被配置成将模型逆向工程可用的程序存储在所述存储器中;以及处理器,所述处理器被配置成执行所述程序,其中,所述处理器使用解析器来将所接收的源代码解析为具有特定实质结构的解析数据,将解析后的数据转换为元模型,根据所接收的转换规则将所述元模型转换为目标模型,并且使用转换后的目标模型生成源代码。

根据一实施方式,所述处理器可以接收源代码和用于将所述源代码转换为目标模型的转换规则,并且将具有解析后的特定实质结构的解析数据存储在存储器中。在另一实施方式中,所述处理器可以根据所述源代码的编程语言类型将所接收的源代码解析为具有不同类型的实质结构的数据。

根据一实施方式,所述处理器可以独立于源代码类型和编程语言类型而将所述解析数据转换为按照特定实质结构来显示所述源代码的所有元素的元模型。在另一实施方式中,所述处理器可以接收用于不能用uml表达的源代码信息的单独转换规则。

根据一实施方式,所述处理器可以根据将所接收的源模型转换为所述目标模型的模型至模型转换规则将所述源模型转换为所述目标模型。在另一实施方式中,所述处理器可以接收由所述源模型的限定名和所述目标模型的限定名配置的模型至模型转换规则。

根据一实施方式,所述处理器可以接收所述目标模型以执行用于生成源代码的配置,读取所述目标模型的元素以确认所述元素是否是源代码生成目标元素,根据所述元素所具有的验证规则对所述生成目标模型元素进行验证,并且根据验证结果生成源代码。在另一实施方式中,所述处理器可以注册所述目标模型的元素和针对相应元素的转换规则,并且指定所述转换规则的执行条件以执行所述配置。

根据本公开的实施方式,提供了一种计算机可读存储介质,在该计算机可读存储介质中存储有用于执行模型逆向工程方法的程序,该方法包括以下步骤:(a)接收源代码;(b)接收用于将所述源代码转换为目标模型的转换规则;(c)使用与所述源代码相关的解析器来解析所述源代码,以将具有特定实质结构的解析数据存储在存储器中;(d)将所存储的解析数据转换为元模型;以及(e)根据所接收的转换规则将所述元模型转换为目标模型。

有益效果

所公开的技术可以具有以下效果。然而,由于其并不意味着特定实施方式应包括所有效果或仅仅只有这些效果,所以不应理解所公开的技术的范围限制于此。

根据本公开的一实施方式,计算机可执行的服务器模型逆向工程方法和装置能够将现有的源代码转换为期望类型的模型以易于执行程序的分析、结构理解和重新设计。

根据本公开的另一实施方式,计算机可执行的模型逆向工程方法和装置能够在模型中没有任何信息丢失地表达源代码的所有信息,并且仅使用模型来确认源代码的所有内容。

根据本公开的又一实施方式,计算机可执行的模型逆向工程方法和装置能够将源代码转换为抽象格式的表达以抽象地表达所有信息,而不受限于准备源代码的编程语言。

根据本公开的又一实施方式,计算机可执行的模型逆向工程方法和装置能够使用模型来生成执行与各种编程语言相同的功能的程序。

附图说明

图1是例示模型逆向工程装置的配置的框图。

图2是例示图1中的模型逆向工程程序执行器的配置的框图。

图3是例示图2中的源代码模型转换器的配置和操作的视图。

图4是例示由图3中的转换规则接收器接收的逆向规则的视图。

图5是例示图2中的模型至模型转换器的配置和操作的视图。

图6是例示根据图2中的源代码模型转换器的代码系列表达式逆向工程方法的视图。

图7是例示图2中的代码生成器配置和用于生成代码的方法的视图。

图8是例示通用建模语言uml和作为效果分析工具的changeminer的元素。

具体实施方式

本公开的说明仅仅是针对结构或功能说明的实施方式,因此本公开的范围不应被解释为限制于实施方式中所说明的实施方式。即,由于可以在不脱离实施方式的特性的情况下按照若干种形式来实施实施方式,所以也应理解的是,除非另有明确说明,否则所描述的实施方式不受前述描述的任何细节的限制,而是应在所附的权利要求所限定的范围内进行宽泛地解释。因此,落入权利要求的范围或这样的范围的等同物内的各种改变和修改因此旨在被所附权利要求所涵盖。

另外,本公开中所描述的术语可以理解如下:

虽然诸如“第一”和“第二”等的术语可以用于描述各种组件,但这样的组件不能被理解为限制于以上术语。以上术语用于将一个组件与另一个组件相区分。例如,在不脱离本公开的权利范围的情况下,第一组件可以被称为第二组件,并且同样地,第二组件可以被称为第一组件。

将理解的是,当一个元件被称为“连接至”另一元件时,所述元件可以被直接连接至所述另一元件,或者也可以存在中间元件。相反,当元件被称为“直接连接至”另一元件时,不存在中间元件。另外,除非明确地描述为相反,否则词语“包括”和诸如“包括了”或“包括有”的变型将被理解为隐含包含所陈述的元件,但不排除包含任何其它元件。另外,可以同样地解释描述组件之间的关系的诸如“在…之间”、“直接在…之间”或“与…相邻”以及“直接与…相邻”的其它表达。

除非上下文另有明确的指示,否则本公开中的单数形式“一”、“一个”和“该”旨在也包括复数形式。还将理解的是,诸如“包含”或“具有”等术语旨在指示说明书中公开的特征、数字、操作、动作、组件、部件或其组合的存在,而并不旨在排除可以存在或可以添加一个或更多个其它特征、数字、操作、动作、组件、部件或其组合的可能性。

各个步骤中的标识字母(例如,a、b、c等)用于说明的目的,而不描述各个步骤的顺序。除非上下文明确提及,否则各个步骤可以从所提及的顺序改变。即,可以按照所述的相同顺序来执行各个步骤,可以基本上同时执行各个步骤,或者可以按照相反的顺序执行各个步骤。

可以在计算机可读记录介质和计算机可读代码中具体实现本公开,并且计算机可读记录介质可以包括存储计算机系统可读数据的任何类型的记录装置。计算机可读记录介质的示例可以是包括按照载波(例如,通过互联网的传输)的形式来具体实现的介质的rom、ram、cd-rom、磁带、软盘、光学数据存储装置等。另外,计算机可读记录介质可以分布在通过网络连接在一起的计算机系统中,使得计算机可读代码按照分布方案来存储和实现。

本申请中所使用的术语仅用于描述特定的实施方式,而不旨在限制本公开。除非另有定义,否则本文所使用的包括技术或科学术语的所有术语具有与本公开所属领域的普通技术人员通常所理解的含义相同的含义。除非本申请中明确定义,否则诸如在通常使用词典中定义的术语要被解释为具有与相关领域中的上下文含义相同的含义,而不应被解释为具有理想或过度正式的含义。

图1是例示模型逆向工程装置的配置的框图。

参照图1,根据本公开的实施方式的模型逆向工程装置10可以包括处理器110、非易失性存储器120、易失性存储器130、网络接口140、输入装置150和输出装置160。

处理器110处理器210可以包括模型逆向工程程序执行器112和存储管理器114。模型逆向工程程序执行器112执行模型逆向工程程序以通过源代码逆向工程执行模型生成和转换过程。存储管理器214管理由模型逆向工程程序执行器112读取和写入的非易失性存储器120和易失性存储器130中的存储区域。

非易失性存储器120可以由固态盘ssd或硬盘驱动器ddd配置,并且用于存储模型逆向工程程序以及执行该模型逆向工程程序所需要的数据。易失性存储器130用于临时存储非易失性存储器120中所存储的模型逆向工程程序。

网络接口140可以包括用于将模型逆向工程装置10连接至外部服务器(例如,用于局域网lan通信的适配器)的环境。

输入装置150可以包括用于接收用户输入的环境,例如包括鼠标、轨迹球、触摸板、图形输入板、扫描仪、触摸屏、键盘或指向装置。输出装置160可以包括用于输出用户特定信息(例如,元模型、目标模型或源代码)的环境,其可以例如包括监控器或触摸屏。在一个实施方式中,输入装置150和输出装置160可以通过远程连接彼此连接。

图2是例示图1中的模型逆向工程程序执行器的配置的框图。

参照图2,根据本公开的实施方式的模型逆向工程程序执行器112包括源代码模型转换器210、模型至模型转换器220和代码生成器230。模型逆向工程程序执行器112是能够通过源代码逆向工程生成并转换模型的装置,其能够接收源代码或源模型以生成并转换用户期望形式的模型,并且当准备并应用转换规则时指定灵活多样的验证规则。另外,模型逆向工程程序执行器112在模型中存储要转换为编程语言的源代码的所有信息。下面将参照图3至图7描述源代码模型转换器210、模型至模型转换器220和代码生成器230。

图3是例示图2中的源代码模型转换器的配置和操作的视图。

参照图3,根据本公开的实施方式的模型转换器210包括转换规则接收单元212、解析器214、元模型转换单元216和模型转换单元218。当输入了源代码时,转换规则接收单元212可以接收转换规则,解析器214可以解析源代码以将数据存储在存储器中,并且元模型转换单元216可以获取存储器中所存储的数据以将源代码信息存储在独立于程序语言的元模型中。模型转换单元218可以接收转换规则并且将元模型转换为目标模型,计算满足uml标准的模型。源代码是要被转换为uml模型的代码,其可以是由多种编程语言(例如,java、c和cobol)准备的源中的一种。

转换规则接收单元212可以接收用于将所接收的源代码转换为目标模型的转换规则。当源代码中存在命名约定时,转换规则接收单元212可以理解该约定并且接收包括转换目标模型的配置的转换规则。转换规则接收单元212可以接收包括关于所输入的源代码的信息、关于要转换的目标模型的信息、关于命名约定的信息以及关于关系的信息的转换规则。下面将参照图4描述转换规则。

解析器214可以解析源代码以将具有特定实质结构的解析数据存储在存储器中。即,解析器可以解析源代码以将具有树格式的实质结构的数据上传到存储器上。解析器214可以根据源代码所具有的编程语言而具有不同的形式。解析是编译器或翻译器在计算机中将源代码翻译成机器语言的过程的步骤,其是对各个句子的语法结构或语法进行分析的过程。即,接收源程序中出现的标记字符串以将该标记字符串配置为语法正确的解析树是一个任务。因此,解析器214可以根据源代码的种类而具有不同的形式,并且根据源代码的编程语言的种类利用具有不同实质结构的数据来解析源代码。

元模型转换单元216可以将所存储的解析数据转换为元模型。元模型转换单元216可以将由各种源代码所准备的数据转换为元模型实质结构。当不管源代码具有什么编程语言都改变解析器214时,元模型转换单元216使模型逆向工程装置10能够生成具有相同质量和形式的uml模型。因此,元模型转换单元216可以独立于源代码和编程语言的种类而将数据转换为将源代码的所有元素显示为特定实质结构的元模型。

模型转换单元218可以根据由转换规则接收单元212接收的转换规则将由元模型转换单元216转换的元模型转换为目标模型。模型转换单元218可以将转换后的目标模型再转换为满足uml标准的形式,以将其写在文件上。模型转换单元218可以接收用于没有被表达为uml模型的简单表达式系列的语法的单独转换规则,以将其转换为uml模型。可以按照uml模型的形式来存储通过模型转换单元218转换的模型,并且可以通过诸如ibm合理软件架构(rationalsoftwarearchitect)的uml编辑软件来确认该模型。模型转换单元218可以根据转换规则排除与要转换的对象无关的源代码,并且根据转换规则指定要转换的源代码的特定元素或目标模型的特定元素。源代码的特定元素是源代码的组件当中的要被转换为目标模型的对象项目,所述源代码的特定元素可以与源代码的包、类、属性和操作对应,并且目标模型的特定元素是转换后的目标模型的转换结果项目,所述目标模型的特定元素可以与包、接口、类、属性、操作、协作、序列图、类图、代码生命线、消息生命线、验证生命线、异常生命线对应。这里,无关的源代码是可以由用户选择的没有被指定为特定元素的元素。例如,当用户将注释或未调用的信息选择作为无关的源代码时,可以丢弃相关信息。另外,模型转换单元218可以验证源代码的所有信息是否都被包括在目标模型中。

图4是例示由图3中的转换规则接收器接收的逆向规则的视图。

在图4中,转换规则可以由关于输入源代码的信息(源转换规则)111、关于转换后的目标模型的信息(模型转换规则)112、关于转换后的模型元素的命名约定的信息113、以及关于模型元素之间的关系的信息来配置。

源转换规则40可以使用正则表达式来指定要被转换为模型的源。该源可以包括正则表达式,该正则表达式包括限定名、属性、功能、源种类。限定名是指定逆向工程目标源的正则表达式。仅将与包括包或文件夹的类名当中的项目中定义的正则表达式匹配的源代码转换为模型。当包或类名具有命名约定时,模型转换单元218可以使用项目对源进行分类并将源转换为模型,并且排除与逆向工程目标无关的源代码。属性是指示类或文件中所包括的功能的正则表达式。模型转换单元218可以将仅与文件中所包括的功能当中的所有或特定功能或者限定名匹配的类转换为模型。当源不是用java而是用c或其它语言编写并且文件名仅用文件扩展名标识时,模型转换单元218可以在项目中设置与文件扩展名对应的值以仅将特定类型的源转换为模型。

模型转换规则420可以显示目标模型的结构信息。仅id是可以由用户给定的用于识别要转换为模型的元素的值。模型元素是用于指定要转换的模型的元素的项目,该模型元素指定包、接口、类、属性、操作、协作、序列图、类图、代码生命线、消息生命线、验证生命线和异常生命线。源元素是指定要转换为源的元素的项目,该源元素可以指定包、类、属性和操作。当没有指定源元素时,可以插入未在源和目标模型中的元素。版型(stereotype)可以具有按照在转换后的模型元素中被指定的方式书写的版式。上层元素id用于指定包括相应元素的上层元素id。

命名约定430可以指示关于用于对要转换的模型元素进行命名的命名约定的信息。源前缀是当转换为模型时要去除的源的前缀。模型前缀是当转换为模型时被包括在模型中的前缀。源前缀是当转换为模型时要去除的源的前缀。模型前缀是当转换为模型时被包括在模型元素名称中的前缀。命名约定是当将与模型元素对应的源名称转换为模型命名时所应用的命名约定。可以指定诸如“无”、“韩语”、“自定义”这样的项目,其中,“无”使用源名称作为模型名称,“韩语”使用预先输入的韩语名称-英文名称词典来将源的英文名称转换为韩语名称以将该韩语名称用作模型名称,并且“自定义”准备在其不是简单的英语-韩语转换的情况下要指定的源程序。命名类指示当在项目被指定为命名约定中的“自定义”的情况下确定模型名称时所使用的java类信息。

即使源代码中不存在转换后的模型元素之间的关系,但是在需要时,关系转换规则440可以设置转换后的模型元素之间的关系。类型(type)指示诸如关联、泛化、实现和依赖这样的关系类型。关系元素id指示用于设置关系的模型元素id。

图5是例示图2中的模型至模型转换器的配置和操作的视图。

在图5a中,模型至模型转换器220包括模型至模型转换规则接收单元222和模型至模型转换单元224。

在一个实施方式中,源代码模型转换器210可以根据所接收的转换规则将所输入的源代码转换为uml形式的源模型。模型至模型转换器220可以接收模型至模型转换规则,并且根据模型至模型转换规则将源模型转换为最终目标模型。在图5中详细地描述了模型至模型转换规则。

更具体地,模型至模型转换器220可以根据模型至模型转换规则移动并重建源模型的包和类的位置。即,模型至模型转换器220可以在源模型包的类很多的情况下将包进行分离,并且在类的操作很多的情况下将类进行分离。按照相同的方式,模型至模型转换器220可以在源模型包的类很少的情况下整合包并且在类的操作很少的情况下整合类。换句话说,当需要根据转换规则在元模型中整合并重组转换后的源模型的包或类时,模型至模型转换器220可以根据模型至模型转换规则将源模型转换为目标模型。

转换规则接收单元

图5b是例示模型至模型转换规则的视图。

在图5b中,模型至模型转换规则由源模型qualifiedname510和目标模型qualifiedname520配置。源模型qualifiedname510是要转换为目标模型的源模型元素的限定名,并且由该限定名指示的源模型元素的所有下层模型元素被复制到由目标模型qualifiedname520指示的模型元素上。当被复制到目标模型时,与源模型qualifiedname510不同但是与目标模型qualifiedname520相同的源模型元素被整合为一个目标模型元素。相反,分别复制与源模型qualifiedname510的高级元素名称相同的源模型元素以及与目标模型qualifiedname520的高级元素名称不同的源模型元素。目标模型qualifiedname520指示将由源模型qualifiedname510指示的元素复制到其上的目标模型元素的qualifiedname520。

图6是例示根据图2中的源代码模型转换器的代码系列表达式逆向工程方法的视图。

在图6a中,源代码模型转换器210可以首先接收正则表达式类型的转换规则以转换该表达式,并且选择并解析要转换的源代码以将解析后的数据存储在存储器中。接下来,源代码模型转换器210可以通过元模型转换器216获取存储器中所存储的数据,以将源代码信息存储在独立于编程语言的模型中。模型转换器218可以接收所接收的转换规则,以根据该转换规则转换由元模型转换单元216转换的数据。可以按照满足uml标准的形式再将转换后的数据进行转换并且将其存储在文件中。

当根据转换规则将元模型转换为uml模型时,uml模型中未表达的简单表达式系列的语法可以通过接收单独的转换规则来进行转换。下面给出转换规则的详细描述。

1)常见事物:未被表达为功能的内部逻辑当中的功能调用或组合片段的逻辑表达式可以在适合于使用目的的代码系列生命线中生成诸如代码、验证、异常和消息这样的同步信息,并且可以在文档栏中被表达为逻辑代码。

2)消息:生成消息的语法可以在消息生命线中生成消息。根据是否存在与由生成消息的特定功能提出的正则表达式匹配的功能来确定是否在消息生命线中生成消息。

3)异常消息:导致错误消息的语法可以在异常生命线中生成消息。根据是否存在与由生成错误的特定功能提出的正则表达式匹配的功能来确定是否在异常生命线中生成消息。

4)验证消息:在验证诸如基本输入值检查的输入参数的同时导致错误的语法可以在验证生命线中生成消息。根据是否存在与由功能和与输入值验证对应的语法模式提出的正则表达式匹配的功能来确定是否在验证生命线中生成消息。

5)代码消息:没有被转换为操作调用、组合片段的其它逻辑和注释可以在代码生命线中生成消息。在操作将调用表达为同步消息或者生成组合片段之前的内部逻辑被完全表达在代码生命线中。就在建模元素出现之前,源代码的操作调用语法和与组合片段对应的原始语法也被表达在代码生命线中(完全表达原始源代码以验证模型转换匹配)。

6)参数声明和初始化:可以使用以英语单词名称-韩语单词名称的形式输入的并且按照与逻辑表达式匹配的形式改变的在先信息来用韩语书写参数名称。至于类型名称,基本类型根据通过映射源类型和模型类型而产生的映射表来转换类型名称,并且除了基本类型以外的类型将类型(type)名称转换为根据布置符号而转换为模型的类型名称,该布置符号是根据是否被布置而在逻辑表达式中定义的。参数初始化意味着按照原样转换语法。

7)功能转换:根据预先定义的正则表达式规则,将语法转换为正则表达式。示例)strcpy\((参数名称),在满足(参数名称)的左手定则的情况下)\)->${1}=${2},该语法被转换为右手表达式。因此,诸如strcpy(a,b)的语法被转换为a=b语法。

图6b例示了如何在序列图中表达不能被指示为uml表达式的简单序列系列的表达式。源代码模型转换器210生成针对代码系列表达式的诸如代码、验证、异常和消息这样的任意生命线以在序列图中指示代码系列表达式,利用该生命线来绘制消息,并且将该消息的文档内容存储在表达式中。

图7是例示图2中的代码生成器配置和用于生成代码的方法的视图。

在图7a中,代码生成器230可以包括代码生成器配置232、模型扫描仪234、模型验证236和代码制作器238。代码生成器230是基于模型生成各种编程语言的源代码的模块。代码生成器230可以基于针对模型元素和逻辑表达式中的每一个进行映射的转换规则来生成程序源代码。代码生成器230可以使用模型来生成各种语言的源代码。

在图7b中,代码生成器配置232可以执行准备转换规则以描述所期望的源代码的配置(s710)。首先,生成一个转换规则项目以注册要在该项目中转换的模型元素,并且针对各个元素生成并注册转换规则。当注册转换规则时,描述转换规则的转换行为并且指定转换规则的执行条件。当针对所有元素都完全注册了转换规则时,定义要准备的源代码的结构。

当期望在完全准备软件模型之后或者正在准备软件的同时生成针对所准备模型的代码时,需要的是选择用于期望模型的转换规则项目,并且然后执行源代码生成功能。不管是整个模型还是部分模型,都能够生成源代码。

当执行源代码生成功能时,在代码生成器230中执行模型扫描仪234。模型扫描仪234可以按照从上到下的方案从最顶层元素中连续地读取元素,以确认相关元素是否是源代码生成目标元素。在源代码生成目标元素的情况下,模型扫描仪234向模型验证236发送相关元素(s720)。

模型验证236可以接收源代码生成目标元素并且根据针对相关元素的验证规则执行验证(s730)。当完成验证之后存在错误时,模型验证236可以将该错误传送给模型扫描仪234,并且模型扫描仪234可以存储验证结果。

当完全验证所有模型元素并且存在错误时,模型扫描仪234可以在屏幕上输出所有验证的结果(s740)。当作为验证的结果不存在错误时,代码制作器238可以根据转换规则生成源代码(s750)。

尽管本文提供了本公开的优选实施方式的描述,但本领域技术人员将理解的是,可以在不脱离所附的权利要求所限定的技术原理和范围的情况下按照各种方式修改或改变本公开。

工业实用性

根据本公开,提供了以下的计算机可执行模型逆向工程方法和装置:该计算机可执行模型逆向工程方法和装置定义结构以及将程序的源代码转换为模型以自动生成所需类型的模型的规则,因此易于分析和重新设计程序结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1