CN104662514A - 基于模型关联关系的遗产软件系统的现代化 - Google Patents
基于模型关联关系的遗产软件系统的现代化 Download PDFInfo
- Publication number
- CN104662514A CN104662514A CN201380049860.8A CN201380049860A CN104662514A CN 104662514 A CN104662514 A CN 104662514A CN 201380049860 A CN201380049860 A CN 201380049860A CN 104662514 A CN104662514 A CN 104662514A
- Authority
- CN
- China
- Prior art keywords
- dsm
- unit
- application
- cluster
- row
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 32
- 238000011161 development Methods 0.000 claims abstract description 11
- 238000013461 design Methods 0.000 claims abstract description 7
- 238000013508 migration Methods 0.000 claims description 12
- 230000005012 migration Effects 0.000 claims description 12
- WEBQKRLKWNIYKK-UHFFFAOYSA-N demeton-S-methyl Chemical compound CCSCCSP(=O)(OC)OC WEBQKRLKWNIYKK-UHFFFAOYSA-N 0.000 claims 7
- 239000011159 matrix material Substances 0.000 abstract description 11
- 238000004458 analytical method Methods 0.000 description 36
- 230000006870 function Effects 0.000 description 18
- 230000001617 migratory effect Effects 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 11
- HJUFTIJOISQSKQ-UHFFFAOYSA-N fenoxycarb Chemical compound C1=CC(OCCNC(=O)OCC)=CC=C1OC1=CC=CC=C1 HJUFTIJOISQSKQ-UHFFFAOYSA-N 0.000 description 9
- 238000013507 mapping Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012098 association analyses Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000005755 formation reaction Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035699 permeability Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013456 study Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
Abstract
本文描述用于将非面向对象的应用迁移到面向对象的平台的方法、系统和计算机可读介质。可以接收非面向对象的应用。非面向对象的应用可以被解析为非面向对象的应用的元素。可以生成元素的设计结构矩阵(DSM)表示(110)。可以基于DSM表示(110)生成最终对象模型(126)。所述最终对象模型(126)可以被映射到面向对象的开发环境的代码框架表示(128)。
Description
技术领域
背景技术
FORTRAN(FORmula TRANslation,公式翻译程式语言)是一种适于执行大型、复杂数值和科学计算的程序设计语言。自20世纪50年代引入FORTRAN以来,已经使用FORTRAN开发了很多不同规模和复杂度的系统。这些系统中的一些可能有几十年之久并且仍然可以有效用于各个行业中。因此,这些系统可以被称为遗产(legacy)FORTRAN系统。
遗产FORTRAN系统能够存在各种缺点。第一,遗产FORTRAN系统可能具有少量或没有文档。第二,遗产FORTRAN系统可能是使用过时的软件设计方法开发的或者完全没有使用软件设计方法开发。第三,可能存在多个程序员从事遗产FORTRAN系统,从而产生的代码具有多种编程风格并且有时具有不同的编程风格。第四,当前进入劳动力市场的新的大学毕业生可能接收很少或没有接收正式的遗产编程语言(如FORTRAN)的培训,从而减少了能够从事遗产FORTRAN系统的熟练程序员的数量。这些缺点和其他缺点能够影响组织者对遗产FORTRAN系统的维护、迁移和/或现代化的能力。
基于这些考虑和其他考虑,提出本文所述公开。
发明内容
应当理解,以简化形式提供此发明内容引入了一些概念,它们将在下面的具体实施方式中进一步描述。此发明内容目的不用于限制所要求保护主题的范围。
本文描述的方法、系统和计算机可读介质用于将非面向对象的应用(application,应用/应用程序)迁移到面向对象的平台。根据本文提出的实施例,可以接收非面向对象的应用。非面向对象的应用可以被解析为非面向对象的应用的元素。可以生成元素的设计或关联关系结构矩阵(design or dependency structure matrix,DSM)表示。基于DSM表示可以生成最终对象模型。最终对象模型可以映射到面向对象的开发环境的代码框架表示。
本文讨论的特征、功能和优点能够独立地在本发明的各种实施例中实现或者可以被组合在其他实施例中,这些特征、功能和优点的进一步细节能够参考下面的说明书和附图而了解到。
附图说明
图1示出根据本文提出的实施例的迁移系统的框图,迁移系统被配置为将源应用迁移到面向对象的平台;
图2示出根据本文提出的实施例的DSM表示的示例性实施方式的屏幕显示图;
图3是根据本文提出的实施例在划分模块已经划分DSM表示之后,示例性划分的DSM表示的屏幕显示图;
图4是根据本文提出的实施例在聚类模块已经识别DSM表示中的聚类之后,示例性聚类的DSM表示的屏幕显示图;
图5示出根据本文提出的实施例的目标系统对象模型的一个示例性实施方式的屏幕显示图;
图6示出根据本文提出的实施例的最终对象模型的示例性实施方式的屏幕显示图;
图7示出根据本文提出的实施例的聚类的类定义的示例性实施方式的屏幕显示图;
图8和图9示出根据本文提出的实施例的代码框架表示的示例性实施方式的屏幕显示图;
图10示出根据本文提出的实施例的用于将非面向对象的应用迁移到面向对象的平台的方法的流程图;以及
图11示出计算系统的一个说明性计算机硬件和软件架构的框图,该计算系统能够实施本文提出的实施例的各个方面。
具体实施方式
下面的具体实施方式涉及用于将遗产软件应用(例如FORTRAN应用)迁移到现代的面向对象的平台的方法、系统、计算机可读介质和其他合适的技术。根据各种实施例,所述技术可以被配置为执行三级迁移过程。在第一级中,所述技术可以被配置为接收源应用、提取源应用的元素、获取元素之间的关联关系,并生成设计或关联关系结构矩阵(DSM)表示,该设计或关联关系结构矩阵表示图形化描绘了提取的元素和它们被获取的关联关系。在第二级中,所述技术可以被配置为执行DSM表示的分析,以生成源应用的模块化框架。一些示例分析可以包括域知识独立分析(domain knowledge independent analysis)和功能性知识分析。在第三级中,所述技术可以被配置为基于模块化框架生成面向对象的目标系统中的代码框架。程序员可以利用代码框架有效且高效地将源应用从它的源语言(例如,FORTRAN)翻译为面向对象的目标语言(例如,JAVA)。
一般情况下,DSM是复杂系统的紧凑简洁的可视化表示。可以利用使用DSM的分析技术来模拟系统以便解决分解和整合问题。根据各种实施例,软件分析使用的DSM是n×n方阵,其中对角线单元表示系统的节点或模块。每个对角线单元可以与数值权重相关联,该数值权重表示相应节点相对于整个系统包括的代码的百分比。矩阵中的所有其他单元可以表示阴影(或以其他方式进行高亮)指示的元素或模块的组和/或对角线之外的数值加权的单元之间的潜在关联性或关系。
出于说明目的,本文描述的实施例主要涉及遗产FORTRAN应用向现代的面向对象的平台的迁移。然而,应当理解,这些实施例仅是示例性的,目的不是限制性的。具体地,本文描述的概念和技术可以类似地用于以其他遗产编程语言(例如,LISP、COBOL等)撰写的应用的现代化。
在下面具体实施方式中,参考构成本发明的一部分并通过图示说明的方式示出具体实施例或示例的附图。在参考附图时,多个图中相似的附图标记表示相似元件。
图1示出根据本文提出的实施例的迁移系统100的框图,迁移系统100被配置为将源应用迁移到面向对象的平台。迁移系统100可以包括DSM生成模块102、DSM分析模块104和目标系统映射模块106。
DSM生成模块102可以包括FORTRAN解析器108和DSM表示生成工具110。FORTRAN解析器108的一个示例是SCIENTIFIC TOOLWORKS公司(也称为SCITOOLS,科学工具厂公司)生产的UNDERSTAND静态代码分析工具。DSM表示生成工具110的一个示例是LATTIX公司的LATTIX LDM。在这种情况下,术语LDM可以指代轻量级关联关系模型。FORTRAN解析器108和/或DSM表示生成工具110的其他实施方式可以由本领域技术人员想到。
FORTRAN解析器108可以接收FORTRAN应用112作为输入。FORTRAN解析器108可以将FORTRAN应用112分解为它的基本元素,该元素组成系统结构114。例如,系统结构114可以包括FORTRAN应用112的FORTRAN模块、源文件、子程序、函数、公共块、变量。
DSM表示生成工具110可以接收系统结构114作为输入、识别系统结构114中的元素之间的关联关系并生成表示元素和它们的关联关系的DSM表示116。两个元素之间的关联关系可以在一个元素使用另一个元素时识别。例如,在第一子程序调用第二子程序时,第一子程序和第二子程序之间可以存在关联关系。两个元素之间的关联关系还可以在一个元素包括另一个元素时识别。例如,在子程序包括公共块时,子程序和公共块之间可以存在关联关系。如本文使用的,当第一元素使用或包括第二元素时,第一元素可以被称为“关联于”第二元素。
DSM表示116可以包括FORTRAN应用112的元素的图形化表示。DSM表示116可以被配置为具有多行、多列和多个单元的方阵。每个单元可以对应于一行和一列。每行可以被标记并对应于FORTRAN应用112的元素或元素组。每列可以被标记并且也对应于FORTRAN应用112的元素或元素组。给定元素或元素组可以嵌套,以扩展元素或元素组导致显示嵌套元素。
行和列可以根据元素的相同顺序(order,顺序/阶)设置。因此,DSM表示116的每个对角线单元可以对应于沿着行和沿着列的相同的元素。DSM表示116中的每个对角线外的单元可以指示相应的列表示的元素和相应的行表示的元素之间是否存在关联关系。DSM表示116可以反映DSM生成模块102提取的FORTRAN应用112的原始数据。因此,元素可以不按照对FORTRAN应用112进行有意义分析的方式布置、分离或分组。下面描述图2中示出的DSM表示116的一个示例。
DSM分析模块104可以接收DSM表示116作为输入。DSM分析模块104可以包括划分模块118、聚类模块120和功能性知识分析模块122。划分模块118和聚类模块120可以被配置为对DSM表示116执行域知识独立分析的各种方面。功能性知识分析模块122可以被配置为对DSM表示116执行功能性知识分析的各个方面。
划分模块118可以对DSM表示116执行基于组件的划分,以便识别DSM表示116内的层。层可以表示DSM表示116中的元素组的分层结构。划分模块118可以基于DSM表示116中的元素的关联关系分离所述元素,使得每层包含一组或更多组相关元素。
在一些实施例中,所述层可以包括顶层、中间层和底层。顶层中的元素可以关联于其他元素(例如,中间层和底层中的元素),但是没有其他元素可以关联于顶层中的元素。中间层中的元素可以关联于其他元素(例如,底层中的元素),并且其他元素(例如,顶层中的元素)可以关联于中间层中的元素。底层中的元素不可以关联于其他元素,但是其他元素(例如,顶层和底层中的元素)可以关联于底层中的元素。
顶层、中间层和底层可以分离FORTRAN应用112的区别特征。顶层可以表示顶层程序接口。中间层可以表示程序逻辑。底层可以表示函数、公共块、子程序等。通过将FORTRAN应用112的元素分离为这些不同层,划分模块118能够获得FORTRAN应用112的模块性。在其他实施例中,划分模块118可以生成任何数量的层。下面描述图3中示出的已经执行基于组件的划分之后的DSM表示116的一个示例。
聚类模块120可以对DSM表示116执行提供者临近性聚类(providerproximity clustering),以便识别DSM表示116内的聚类。提供者临近性分析一般可以指用于确定矩阵中的任何任意元素与矩阵中的其他元素的接近程度的技术。基于这种技术的聚类可以基于关联关系权重识别最接近的邻点。在DSM表示116中,使用提供者临近性分析识别的每个聚类可以包括每列以下的元素,该元素关联于相同列之上的其他元素。由于提供者临近性分析可以不需要或利用域知识,所以这种分析可以被称为域独立分析。
每个聚类可以包括紧密连接的元素(例如子程序、函数和/或公共块)的组合。具体地,聚类模块120可以基于数据仿射性(affinity)(例如,公共块仿射性)和程序逻辑仿射性(例如,子程序仿射性)对元素聚类。这种仿射性可以通过聚类每列以下的元素组来识别,其中该元素关联于相同列之上的其他元素。每个聚类中的元素中的至少一些可以具有相邻关联关系。下面描述图4中示出的已经执行提供者临近性聚类之后的DSM表示116的一个示例。
功能性知识分析模块122可以基于基于组件的划分和/或提供者临近性聚类的结果生成目标系统对象模型124。目标系统对象模型124可以根据聚类模块120识别的聚类,通过重组DSM表示116的标记而生成。标记可以提供通用标识符(例如,聚类1、聚类2等)或详述每个聚类的功能或类别的具体标识符。标记可以嵌套以使每个标记能够被扩展从而显示包括在对应聚类内的元素。根据划分模块118识别的层和/或聚类模块120识别的聚类,目标系统对象模型124可以被布置为下三角矩阵。因为功能性知识分析会需要或利用域知识,这种分析可以被称为域关联分析。下面描述图5示出的目标系统对象模型124的一个示例。
通过功能性知识分析模块122的接口,用户能够应用功能性域知识验证元素的每个聚类,作为面向对象的框架中的潜在类或低层模块。如果标记被通用地命名,用户还可以将标记修订为更具功能性和更有意义的名字。通过功能性知识分析模块122的接口,用户可以进一步将多个聚类聚合为面向对象的框架中的高层模块、子系统或包,从而产生最终对象模型126。下面描述图6示出的最终对象模型126的一个示例。
目标系统映射模块106可以接收最终对象模型126作为输入。最终对象模型126中的每个聚类可以是面向对象的框架中的潜在类或低层模块。给定聚类内的一些元素可以形成类的属性。聚类内的一些其他元素可以形成类的方法。目标系统映射模块106可以对最终对象模型126中的每个聚类执行低层分析,以便识别每个聚类的属性和方法。给定聚类的属性和方法的集合可以形成聚类的类定义。下面描述图7中示出的对应于目标系统对象模型124的类定义的一个示例。
利用每个聚类的类定义,目标系统映射模块106可以将最终对象模型126中的高层模块、子系统或包映射为面向对象的开发环境的代码框架表示128。代码框架表示128可以定义包、类、方法、函数和/或其他结构,这些结构组成面向对象的开发环境中的面向对象的表示。这些结构可以在不同的面向对象的开发环境之间改变。面向对象的开发环境的一些示例可以包括ECLIPSE基金会公司(THE ECLIPSE FOUNDATION,INC)的ECLIPSE和MATHWORKS公司(也称为MATHWORKS)的MATLAB。下面描述的图8和图9中示出的代码框架表示128的示例。程序员可以利用代码框架表示128有效和高效地将FORTRAN应用翻译为面向对象的目标语言(例如,JAVA)。
图2示出根据本文提出的实施例的DSM表示116的示例性实施方式的屏幕显示图。如前面描述的,DSM表示116可以基于FORTRAN应用112通过FORTRAN解析器108和DSM表示生成工具110生成。DSM表示116可以包括行202的集合和列204的集合。行202和列204可以包括相同顺序的元素的相同列表。如图2中示出的,信息窗口206指定元素列表包括42个公共块、90个公共块成员、45个FORTRAN文件、一个FORTRAN程序、11个函数和56个子程序。也就是说,元素的组合组成FORTRAN应用112的系统结构114。
DSM表示116可以包括多个单元。阴影单元可以指示对应行中的组件和对应列中的组件之间的关联关系。如图2中示出的,阴影单元指示对应列中的组件关联于对应行中的组件。换句话说,阴影单元可以指示对应行中的组件关联于对应列中的组件。对角线单元208可以加阴影,因为这些单元对应于沿着相同行和沿着相同列的相同的元素。在其他实施例中,其他合适的高亮可以用于替代阴影。
DSM表示生成工具110可以基于FORTRAN解析器108的原始输出生成DSM表示116。因此,如图2中示出的,元素列表可以不按照对DSM表示116提供的数据进行有意义解释的方式布置、分离或分组。如下面描述的,DSM分析模块104可以对DSM表示116执行分析,以便布置、分离或分组元素列表,使得能够更有效地解释DSM表示116。
图3是根据本文提出的实施例在划分模块118已经划分DSM表示116之后的示例性划分的DSM表示300的屏幕显示图。划分模块118可以根据元素之间的关联关系,对DSM表示116执行基于组件的划分,以便识别顶层302、中间层304和低层306。划分模块118可以根据识别的层重新布置DSM表示116中的元素列表(行202的集合和列204的集合中)。顶层302中的元素可以关联于其他元素,但是没有其他元素可以关联于顶层中的元素。中间层中的元素可以关联于其他元素,并且其他元素可以关联于中间层中的元素。底层中的元素不可以关联于其他元素,但是其他元素可以关联于底层中的元素。
在一些实施例中,顶层302可以表示FORTRAN应用112的顶层程序接口。中间层304可以表示FORTRAN应用112的程序逻辑。低层306可以表示函数、公共块和子程序。如图3中示出的,划分的DSM表示300可以布置为下三角矩阵。
图4是根据本文提出的实施例在聚类模块120已经识别DSM表示116中的聚类之后的示例性聚类的DSM表示400的屏幕显示图。聚类模块120可以对DSM表示116执行提供者临近性聚类,以便识别DSM表示116中的聚类,如聚类402、404、406。聚类模块120可以根据识别的聚类重新布置DSM表示116中的元素列表(行202的集合和列204的集合中)。
每个聚类可以包括紧密连接的元素(例如子程序、函数和/或公共块)的组合。具体地,聚类模块120可以基于数据仿射性(例如,公共块仿射性)和程序逻辑仿射性(例如,子程序仿射性)对元素聚类。这种仿射性可以通过聚类关联于DSM表示116的对角线单元208附近的元素组来识别。例如,聚类402、404、406示出对角线单元附近的聚类的密集度。如图4中示出的,聚类的DSM表示400可以布置为下三角矩阵。
图5示出根据本文提出的实施例的目标系统对象模型124的示例性实施方式的屏幕显示图。如前面描述的,功能性知识分析模块122可以基于划分的DSM表示300中的层和/或聚类的DSM表示400中的聚类生成目标系统对象模型124。目标系统对象模型124可以包括行502的集合和列504的集合。行502和列504可以包括相同顺序的相同聚类列表。聚类的列表可以对应于聚类模块120识别的聚类。聚类列表还可以根据划分模块118识别的层被布置。
如图5中示出的,用于列出聚类的标记是通用的(例如,vp_1、vp_2、vp_3等)。在其他实施例中,用于列出聚类的标记可以是详述每个聚类的功能或类别的具体标识符。标记可以嵌套以使每个标记能够被扩展以便显示相应聚类内包含的元素。例如,如在图5中示出的,标记vp_15已经被扩展为显示元素506,元素506嵌套在对应于标记vp_15的聚类508内。每个聚类,包括聚类508,可以表示面向对象的平台中的潜在类或低层模块。
多个对角线单元510中的每个可以指示关于对应关联关系的百分比。例如,百分比可以表示给定聚类或元素沿着行和沿着列做出调用的量与FORTRAN应用112中的所有聚类或元素做出调用的总量的关系。多个对角线外单元512中的每个还可以指示关于对应关联关系的整数。例如,整数可以指定从对应列的聚类或元素到对应行的聚类或元素做出的调用的量。在其他实施例中,整数可以指定从对应行的聚类或元素到对应列的聚类或元素做出的调用的量。
图6示出根据本文提出的实施例的最终对象模型126的示例性实施方式的屏幕显示图。如前面描述的,通过功能性知识分析模块122的接口,用户能够应用功能性域知识验证元素的每个聚类,作为面向对象的框架中的潜在类或低层模块。用户可以将多个聚类进一步重新布置和聚合为面向对象的框架中的高层模块、子系统或包。在一个示例中,第一模块602可以包括聚类vp_1和聚类vp_5。在另一个示例中,第二模块604可以包括聚类vp_2、聚类vp_17、聚类vp_15和聚类vp_16。
图7示出根据本文提出的实施例的聚类508的类定义702的示例性实施方式的屏幕显示图。如前面描述的,目标系统映射模块106可以对最终对象模型126中的每个聚类执行低层分析,以便识别每个聚类的属性和方法。例如,图7示出聚类508的类定义702。类定义702可以包括属性704的集合和方法706的集合。
图8和图9示出根据本文提出的实施例的代码框架表示128的示例性实施方式的屏幕显示图。图8示出最终对象模型126的一个示例性实施方式。图8还示出从最终对象模型126映射的ECLIPSE表示802和从最终对象模型126映射的MATLAB表示804。
图9示出ECLIPSE表示802和MATLAB表示804两者中的其中一个模块的扩展。在ECLIPSE表示802中,每个模块可以表示JAVA包。每个JAVA包可以包括一个或更多个JAVA类。每个JAVA类可以包括一个或更多个JAVA方法。例如,JAVA包806可以被扩展以示出JAVA类808,以及JAVA类可以被扩展以示出JAVA方法810。在MATLAB表示804中,每个模块可以存在一个MATLAB包。每个MATLAB包可以包括一个或更多个MATLAB类。每个MATLAB类可以包括一个或更多个MATLAB函数。例如,MATLAB包812可以被扩展以示出MATLAB类814,以及MATLAB类814可以被扩展以示出MATLAB函数816。
现在转到图10,将提供关于本文提出的用于将非面向对象的应用迁移到面向对象的平台的实施例的附加细节。应当理解,本文描述的逻辑操作被实施为(1)运行在计算系统上的计算机实施的动作或程序模块的序列和/或(2)计算系统内的互联机器逻辑电路或电路模块。所述实施方式是取决于计算系统的性能和其他操作参数的选择问题。相应地,不同情况下,本文描述的逻辑操作被称为操作、结构性装置、动作或模块。这些操作、结构性装置、动作和模块可以以软件、固件、硬件、专用数字逻辑和其任何组合实施。还应当理解,可以执行比本文描述的以及图中示出的更多或更少的操作。这些操作还可以以并行方式执行或与本文描述的顺序不同的顺序执行。
图10示出用于将非面向对象的应用迁移到面向对象的平台的例程1000。例如,可以利用例程500将FORTRAN应用迁移到ECLIPSE或JAVA的代码框架表示。在一些实施例中,例程1000可以由迁移系统100的DSM生成模块102、DSM分析模块104和/或目标系统映射模块106执行。
例程1000在操作1002处开始,其中迁移系统100可以接收非面向对象的应用。例如,非面向对象的应用可以是FORTRAN应用。在操作1002之后,例程1000可以行进到操作1004。
在操作1004处,迁移系统100可以将非面向对象的应用解析为非面向对象的应用的元素。例如,FORTRAN应用的元素可以包括FORTRAN模块、源文件、子程序、函数、公共块和/或变量。在操作1004之后,例程1000可以行进到操作1006。
在操作1006处,迁移系统100可以生成元素的DSM表示。DSM表示可以包括对应于元素顺序的行的集合、对应于元素顺序的列的集合和单元的集合。每个单元可以对应于一行和一列。在操作1006之后,例程1000可以行进到操作1008。
在操作1008处,迁移系统100可以对DSM表示执行各种分析。如前面描述的,这种分析可以包括DSM分析模块104执行的操作。具体地,DSM分析模块104可以执行域独立分析(例如,划分或聚类)和域关联分析(例如,重组DSM表示中的标记以便与应用的业务功能对齐)。在操作1008之后,例程1000可以行进到操作1010。
在操作1010处,迁移系统100可以基于DSM表示的分析结果生成最终对象模型。迁移系统100可以基于划分和/或聚类生成目标系统对象模型。迁移系统100可以通过聚合聚类的组以识别目标系统对象模型中的包。迁移系统100可以基于目标系统对象模型中识别的包来生成最终对象模型。在操作1010之后,例程1000可以行进到操作1012。
在操作1012处,迁移系统可以将最终对象模型映射到面向对象的开发环境的代码框架表示。一些示例性面向对象的开发环境可以包括ECLIPSE和MATLAB。在ECLIPSE中,代码框架表示可以定义JAVA包、JAVA类和JAVA方法。在MATLAB中,代码框架表示可以定义MATLAB包、MATLAB类和MATLAB函数。在操作1012之后,例程1000可以重复(例如,周期性地、连续地或按照所需要求)或终止。
图11示出能够执行本文描述的软件元素以用于将非面向对象的应用迁移到面向对象的平台的说明性计算机1100。计算机1100可以具体化在单个计算设备中或在一个或更多个处理单元、存储单元和/或其他计算设备的组合中。计算机1100包括一个或更多个中央处理单元1102(“CPU”)、包括随机存取存储器1114(“RAM”)和只读存储器1116(“ROM”)的系统存储器1108和将存储器连接到CPU 1102的系统总线1104。
CPU 1102可以是标准可编程处理器,其执行计算机1100的操作所必需的算术和逻辑运算。CPU 1102可以通过操纵开关元件执行从一个离散物理状态转变为下一个状态所必需的操作,这些开关元件区分并改变这些状态。开关元件通常可以包括保持二进制状态的其中一个的电子电路,例如触发器,和基于一个或更多个其他开关元件(如逻辑门)的状态的逻辑组合提供输出状态的电子电路。这些基本开关元件可以被组合以便产生更复杂的逻辑电路,包括寄存器、加减器、算术逻辑单元、浮点单元等。
计算机1100还包括大容量存储设备1110。大容量存储设备1110可以通过大容量存储控制器(未示出)连接到CPU 1102,大容量存储控制器进一步连接到总线1104。大容量存储设备1110及其相关计算机可读介质提供计算机1100的非易失性、非临时存储。大容量存储设备1110可以存储操作系统1118以及具体应用模块或其他程序模块,例如DSM生成模块102、DSM分析模块104和目标系统映射模块106,如上面参考图1描述的。大容量存储设备1110还可以存储各种系统和模块(例如DSM表示116、最终对象模型126和代码框表示128)收集或利用的数据。
计算机1100可以通过转换大容量存储设备的物理状态以反应存储的信息,从而在大容量存储设备1110上存储程序和数据。在本公开的不同实施方式中,物理状态的具体转换可以基于各种因素。这种因素的示例可以包括,但不限于,用于实施大容量存储设备1110的技术、大容量存储设备是否被表征为主要或次要存储装置等。例如,计算机1100可以通过存储控制器发布指令以便改变磁盘驱动设备内的具体位置的磁特性,光存储设备内的具体位置的反射或折射特性,或固态存储设备中的具体电容器、晶体管或其他离散元件的电学特性,从而将信息存储到大容量存储设备1110。前面提供的示例仅为了帮助本说明书的描述,在不脱离本发明的范围和精神的情况下,物理介质的其他转换是可能的。计算机1100可以进一步通过检测物理状态或大容量存储设备内的一个或更多个具体位置的特性,从大容量存储设备1110读取信息。
尽管本文包含的计算机可读介质的描述涉及大容量存储设备,例如硬盘或CD-ROM驱动器,本领域技术人员应当理解,计算机可读介质能够是能够被计算机1100存取的任何可用的计算机介质。计算机可读介质包括通信介质(例如信号)和计算机可读存储介质。作为示例,但不限于,计算机可读存储介质包括以任何方法或技术实施的以用于存储信息的易失和非易失、可移除和不可移除介质,例如计算机可读指令、数据结构、程序模块或其他数据。例如,计算机可读存储介质包括,但不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字视盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备,或能够用于非临时方式存储期望信息和能够被计算机1100存取的任何其他介质。根据一个实施例,计算机1100可以存取存储计算机可执行指令的计算机可读存储介质,当该指令被计算机执行时,执行例程500以将基于天气的符号临时显示在图形地图显示器上,如参考图5描述的。
根据各种实施例,计算机1100可以通过网络(例如网络1120),使用到远程计算机的逻辑连接,在联网环境中操作。计算机1100可以通过连接到总线1104的网络接口单元1106连接到网络1120。应当理解,网络接口单元1106还可以用于连接到其他类型的网络和远程计算机系统。计算机1100还可以包括输入/输出控制器1112,用于提供输出到显示设备,例如计算机监视器、打印机或其他类型的输出设备。输入/输出控制器1112可以进一步从如键盘、鼠标、电子笔、触屏等设备接收输入。还应当理解,计算机1100可以不包括图11中示出的所有元件,可以包括图11中没有明确示出的其他元件,或可以利用与图11中示出的架构完全不同的架构。
基于前面的描述,应当理解,本文提供用于将非面向对象的应用迁移到面向对象的平台的技术。尽管本文提出的主题已经用语言针对计算机结构特征、方法性动作和计算机可读介质描述,将理解,所附权利要求所限定的本发明不必要限制到本文描述的具体特征、动作或介质。相反,具体特征、动作和介质作为实施权利要求的示例形式描述。
上面描述的主题仅仅以图示说明的方式提供,且不应当理解为限制性。可以不遵循示出和描述的示例性实施例和应用,并且在不脱离下面的权利要求书中阐述的本发明的真正精神和范围的情况下,对本文描述的主题做出各种修改和改变。
Claims (20)
1.一种用于将非面向对象的应用迁移到面向对象的平台(100)的方法,所述方法包括:
接收所述非面向对象的应用;
将所述非面向对象的应用解析为所述非面向对象的应用的元素;
生成所述元素的设计结构矩阵表示(110),即DSM表示;
基于所述DSM表示(110)生成最终对象模型(126);以及
由计算机(1100)将所述最终对象模型(126)映射到面向对象的开发环境的代码框架表示(128)。
2.根据权利要求1所述的方法,其中接收所述非面向对象的应用包括接收FORTRAN应用(112)。
3.根据权利要求2所述的方法,其中将所述非面向对象的应用解析为元素包括:
将所述FORTRAN应用(112)解析为FORTRAN模块、源文件、子程序、函数、公共块和变量中的至少一种。
4.根据权利要求1所述的方法,其中生成所述元素的所述DSM表示(110)包括:
生成包括对应于所述元素的顺序的多个行、对应于所述元素的所述顺序的多个列和多个单元的所述DSM表示(110),所述多个单元的每个对应于所述多个行中的一行和所述多个列中的一列。
5.根据权利要求4所述的方法,所述方法进一步包括:
当对应于一个单元的第一元素关联于对应于所述单元的第二元素时,高亮所述多个单元中的所述单元。
6.根据权利要求5所述的方法,其中当对应于所述单元的所述第一元素关联于对应于所述单元的所述第二元素时高亮所述多个单元中的所述单元包括:
当所述第一元素使用所述第二元素时,高亮所述多个单元中的所述单元。
7.根据权利要求5所述的方法,其中当对应于所述单元的所述第一元素关联于对应于所述单元的所述第二元素时高亮所述多个单元中的所述单元包括:
当所述第一元素包含所述第二元素时,高亮所述多个单元中的所述单元。
8.根据权利要求1所述的方法,其中基于所述DSM表示(110)生成所述最终对象模型(126)包括:
通过对所述DSM表示(110)执行基于组件的划分,识别所述DSM表示(110)中的多个划分;
通过对所述DSM表示(110)执行提供者临近性聚类,识别所述DSM表示(110)中的多个聚类;
基于所述多个划分和所述多个聚类,生成目标系统对象模型;
通过聚合所述多个聚类的组,识别所述目标系统对象模型中的多个包;以及
基于在所述目标系统对象模型中识别的所述多个包,生成所述最终对象模型(126)。
9.根据权利要求8所述的方法,其中识别所述DSM表示(110)中的所述多个划分包括:
识别所述DSM表示(110)中表示所述非面向对象的应用的顶层程序接口的顶层、表示所述非面向对象的应用的程序逻辑的中间层和表示所述非面向对象的应用的函数、公共块和子程序的底层。
10.根据权利要求8所述的方法,其中通过对所述DSM表示(110)执行提供者临近性聚类,识别所述DSM表示(110)中的多个聚类包括:
聚类一列或更多列以下的元素的组,所述元素关联于相同的那一列之上的其他元素。
11.一种包括计算机可执行指令的计算机可读存储介质,当所述指令由计算机(1100)执行时,其使得所述计算机(1100)执行以下操作:
接收非面向对象的应用;
将所述非面向对象的应用解析为所述非面向对象的应用的元素;
生成所述元素的设计结构矩阵表示(110),即DSM表示;
基于所述DSM表示(110)生成最终对象模型(126);以及
将所述最终对象模型(126)映射到面向对象的开发环境的代码框架表示(128)。
12.根据权利要求11所述的计算机可读存储介质,其中所述非面向对象的应用包括FORTRAN应用(112);并且其中所述元素包括FORTRAN模块、源文件、子程序、函数、公共块和变量中的至少一种。
13.根据权利要求11所述的计算机可读存储介质,其中所述DSM表示(110)包括:对应于所述元素的顺序的多个行、对应于所述元素的所述顺序的多个列和多个单元,所述多个单元的每个对应于所述多个行中的一行和所述多个列中的一列。
14.根据权利要求13所述的计算机可读存储介质,进一步包括当由所述计算机(1100)执行时使得所述计算机(1100)执行以下操作的计算机可执行指令:
当对应于一个单元的第一元素关联于对应于所述单元的第二元素时,高亮所述多个单元中的所述单元。
15.根据权利要求14所述的计算机可读存储介质,其中当所述第一元素使用所述第二元素时,高亮所述多个单元中的第一单元;并且其中当所述第一元素包含所述第二元素时,高亮所述多个单元中的第二单元。
16.根据权利要求14所述的计算机可读存储介质,其中基于所述DSM表示(110)生成所述最终对象模型(126),当所述计算机可执行指令由所述计算机执行时,使得所述计算机(1100)执行以下操作:
通过对所述DSM表示(110)执行基于组件的划分,识别所述DSM表示(110)中的多个划分;
通过对所述DSM表示(110)执行提供者临近性聚类,识别所述DSM表示(110)中的多个聚类;
基于所述多个划分和所述多个聚类,生成目标系统对象模型;
通过聚合所述多个聚类的组,识别所述目标系统对象模型中的多个包;以及
基于在所述目标系统对象模型中识别的所述多个包,生成所述最终对象模型(126)。
17.根据权利要求16所述的计算机可读存储介质,其中所述多个划分包括:表示所述非面向对象的应用的顶层程序接口的顶层,表示所述非面向对象的应用的程序逻辑的中间层和表示所述非面向对象的应用的函数、公共块和子程序的底层。
18.根据权利要求16所述的计算机可读存储介质,其中所述多个聚类包括:一列或更多列以下的元素的组,所述元素关联于相同的那一列之上的其他元素。
19.一种用于将非面向对象的应用迁移到面向对象的平台的系统,所述系统包括:
处理器;
存储器,其通信地连接到所述处理器;和
程序模块,其来自所述存储器、在所述处理器中执行,并且当其由所述处理器执行时,使得所述处理器执行以下操作:
接收FORTRAN应用(112);
将所述FORTRAN应用(112)解析为包括FORTRAN模块、源文件、子程序、函数、公共块和变量的元素;
生成所述元素的设计结构矩阵表示(110),即DSM表示;
基于所述DSM表示生成最终对象模型(126);以及
将所述最终对象模型(126)映射为面向对象的开发环境的代码框架表示(128)。
20.根据权利要求19所述的系统,其中基于所述DSM表示(110)生成所述最终对象模型(126),当所述程序模块由所述处理器执行时,使得所述处理器执行以下操作:
通过对所述DSM表示(110)执行基于组件的划分,识别所述DSM表示(110)中的多个划分;
通过对所述DSM表示(110)执行提供者临近性聚类,识别所述DSM表示(110)中的多个聚类;
基于所述多个划分和所述多个聚类,生成目标系统对象模型;
通过聚合所述多个聚类的组,识别所述目标系统对象模型中的多个包;以及
基于在所述目标系统对象模型中识别的所述多个包生成所述最终对象模型(126)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/626,333 | 2012-09-25 | ||
US13/626,333 US8930919B2 (en) | 2012-09-25 | 2012-09-25 | Modernization of legacy software systems based on modeled dependencies |
PCT/US2013/054485 WO2014051864A1 (en) | 2012-09-25 | 2013-08-12 | Modernization of legacy software systems based on modeled dependencies |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104662514A true CN104662514A (zh) | 2015-05-27 |
CN104662514B CN104662514B (zh) | 2018-06-05 |
Family
ID=49083748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380049860.8A Active CN104662514B (zh) | 2012-09-25 | 2013-08-12 | 基于模型关联关系的遗产软件系统的现代化 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8930919B2 (zh) |
EP (1) | EP2901276B1 (zh) |
JP (1) | JP6267711B2 (zh) |
CN (1) | CN104662514B (zh) |
WO (1) | WO2014051864A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2952239A1 (en) | 2014-06-16 | 2015-12-23 | Silverthread, Inc. | Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring |
CN105700860B (zh) | 2014-11-27 | 2019-11-12 | 国际商业机器公司 | 用于生成产品模型的方法和装置 |
US10261985B2 (en) | 2015-07-02 | 2019-04-16 | Microsoft Technology Licensing, Llc | Output rendering in dynamic redefining application |
US9733915B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Building of compound application chain applications |
US9785484B2 (en) | 2015-07-02 | 2017-10-10 | Microsoft Technology Licensing, Llc | Distributed application interfacing across different hardware |
US9658836B2 (en) | 2015-07-02 | 2017-05-23 | Microsoft Technology Licensing, Llc | Automated generation of transformation chain compatible class |
US10198252B2 (en) | 2015-07-02 | 2019-02-05 | Microsoft Technology Licensing, Llc | Transformation chain application splitting |
US9860145B2 (en) | 2015-07-02 | 2018-01-02 | Microsoft Technology Licensing, Llc | Recording of inter-application data flow |
US9733993B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Application sharing using endpoint interface entities |
US9712472B2 (en) | 2015-07-02 | 2017-07-18 | Microsoft Technology Licensing, Llc | Application spawning responsive to communication |
US10198405B2 (en) | 2015-07-08 | 2019-02-05 | Microsoft Technology Licensing, Llc | Rule-based layout of changing information |
US10031724B2 (en) | 2015-07-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Application operation responsive to object spatial status |
US10277582B2 (en) | 2015-08-27 | 2019-04-30 | Microsoft Technology Licensing, Llc | Application service architecture |
CN105930262B (zh) * | 2016-03-02 | 2018-04-20 | 平安科技(深圳)有限公司 | 应用程序用户界面自动化测试方法及电子设备 |
US10474438B2 (en) | 2017-07-21 | 2019-11-12 | Accenture Global Solutions Limited | Intelligent cloud engineering platform |
US11029934B2 (en) * | 2017-12-15 | 2021-06-08 | Uniquesoft, Llc | Method and system for updating legacy software |
US10969929B2 (en) | 2018-10-19 | 2021-04-06 | Oracle Financial Services Software Limited | Dependency graph-controlled object and compute pipeline migration |
US11354108B2 (en) | 2020-03-02 | 2022-06-07 | International Business Machines Corporation | Assisting dependency migration |
US11176027B1 (en) | 2020-04-22 | 2021-11-16 | International Business Machines Corporation | Generation of microservices from a monolithic application based on runtime traces |
US11157267B1 (en) | 2020-09-09 | 2021-10-26 | International Business Machines Corporation | Evaluation of dynamic relationships between application components |
US20220138617A1 (en) * | 2020-11-03 | 2022-05-05 | International Business Machines Corporation | Artificial intelligence based application modernization advisory |
US11704118B2 (en) | 2021-08-19 | 2023-07-18 | International Business Machines Corporation | Application modernization |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1509433A (zh) * | 2001-05-11 | 2004-06-30 | ���������˼�빫˾ | 把传统软件应用程序转换为现代面向对象系统的方法和系统 |
CN102054217A (zh) * | 2009-11-05 | 2011-05-11 | Sap股份公司 | 基于元模型的工具中的实体变形 |
US7966356B2 (en) * | 2003-09-19 | 2011-06-21 | Lattix, Inc. | Apparatus and methods for displaying and determining dependency relationships among subsystems in a computer software system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU1323395A (en) * | 1993-12-30 | 1995-07-17 | Raymond Obin | Method for compiling a procedural program to an object class definition |
US5675801A (en) * | 1994-09-30 | 1997-10-07 | International Business Machines Corporation | Object oriented system and method for generating target language code |
US5790861A (en) * | 1995-07-07 | 1998-08-04 | Sun Microsystems, Inc. | Method and apparatus for generating executable code from object-oriented C++ source code |
US6002874A (en) * | 1997-12-22 | 1999-12-14 | International Business Machines Corporation | Method and system for translating goto-oriented procedural languages into goto-free object oriented languages |
US7047524B1 (en) * | 2000-12-30 | 2006-05-16 | Hyperformix | Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language |
US7240338B1 (en) * | 2003-05-29 | 2007-07-03 | Itt Manufacturing Enterprises, Inc. | Computer language translation system and method of converting procedural computer language software to object-oriented computer language software |
US7130863B2 (en) * | 2003-09-24 | 2006-10-31 | Tablecode Software Corporation | Method for enhancing object-oriented programming through extending metadata associated with class-body class-head by adding additional metadata to the database |
US9182962B2 (en) * | 2010-12-09 | 2015-11-10 | Todd Bradley KNEISEL | Method for translating a cobol source program into readable and maintainable program code in an object oriented second programming language |
-
2012
- 2012-09-25 US US13/626,333 patent/US8930919B2/en active Active
-
2013
- 2013-08-12 JP JP2015533064A patent/JP6267711B2/ja active Active
- 2013-08-12 WO PCT/US2013/054485 patent/WO2014051864A1/en active Application Filing
- 2013-08-12 EP EP13753933.4A patent/EP2901276B1/en active Active
- 2013-08-12 CN CN201380049860.8A patent/CN104662514B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1509433A (zh) * | 2001-05-11 | 2004-06-30 | ���������˼�빫˾ | 把传统软件应用程序转换为现代面向对象系统的方法和系统 |
US7966356B2 (en) * | 2003-09-19 | 2011-06-21 | Lattix, Inc. | Apparatus and methods for displaying and determining dependency relationships among subsystems in a computer software system |
CN102054217A (zh) * | 2009-11-05 | 2011-05-11 | Sap股份公司 | 基于元模型的工具中的实体变形 |
Non-Patent Citations (2)
Title |
---|
ISTVAN GERGELY CZIBULA: "A clustering approach for transforming Procedural into object-oriented software systems", 《HTTP://WWW.CS.UBBCLUJ.RO/~STUDIA-I/2009-KEPT/STUDIA-2009-KEPT-3-KSE.PDF》 * |
SAGAR PIDAPARTHI等: "Resource Usage Matrix in Object Identification and Design Transformation of Legacy Procedural Software", 《14TH AUTOMATIC SOFTWARE ENGINEERING CONFERENCE》 * |
Also Published As
Publication number | Publication date |
---|---|
US20140089888A1 (en) | 2014-03-27 |
US8930919B2 (en) | 2015-01-06 |
JP2015532991A (ja) | 2015-11-16 |
WO2014051864A1 (en) | 2014-04-03 |
EP2901276B1 (en) | 2018-05-02 |
EP2901276A1 (en) | 2015-08-05 |
CN104662514B (zh) | 2018-06-05 |
JP6267711B2 (ja) | 2018-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104662514A (zh) | 基于模型关联关系的遗产软件系统的现代化 | |
US9645801B2 (en) | Compilation of transformation in recalculation user interface | |
Jansson et al. | A coupled model of water, heat and mass transfer using object orientation to improve flexibility and functionality | |
CN101601012B (zh) | 具有场景支持的面向生成器图的编程框架 | |
US20140306964A1 (en) | Incremental compiling of a declarative program | |
Benelallam et al. | Distributed Model-to-model Transformation with ATL on MapReduce | |
EP2984585B1 (en) | Binding of data source to compound control | |
CN103052943A (zh) | 源代码转换方法和源代码转换程序 | |
CN103744647A (zh) | 一种基于工作流GPD的Java工作流开发系统及其方法 | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
Mann et al. | SMT-switch: a solver-agnostic C++ API for SMT solving | |
WO2004006141A1 (en) | Method and system for processing graphics simulation data | |
Chung et al. | Service-oriented reverse reengineering: 5W1H model-driven re-documentation and candidate services identification | |
CN104778323A (zh) | 集成多源性能分析数据的复杂装备作业流程仿真方法 | |
Sáenz-Adán et al. | Automating provenance capture in software engineering with UML2PROV | |
Wojszczyk et al. | The process of verifying the implementation of design patterns—used data models | |
US9471723B2 (en) | Input parsing and array manipulation in reservoir simulation | |
Romanov et al. | Representing programs with dependency and function call graphs for learning hierarchical embeddings | |
Sprogis | Configuration language for domain specific modeling tools and its implementation | |
Soukup et al. | Data Structures, Patterns, and UML | |
Castrillón Mazo et al. | Sequential Code Flow | |
Flodin | Design and Validation of Configurable Filter for JAS 39 Gripen Mission Planning Data | |
Englebert et al. | Metadone a flexible metacase to support evolution |
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 |