没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记314(2015)23-44www.elsevier.com/locate/entcs传统Web应用向基于CMS的Web应用的迁移Feliu Trias1、Valeria de Castro2、Marcos Lopez-Sanz3和Esperanza Marcos4KybeleResearchGroup,ReyJuanCarlosUniversity,M'ostoles,西班牙摘要近年来,内容管理系统(CMS)已被证明是维护由Web应用程序管理的大量数字内容的最佳平台因此,许多组织都经历了将其Web应用程序基于这些CMS平台的必要性为此,他们启动了一个复杂且容易出错的迁移过程。为了支持这一过程,我们提出了一种基于架构驱动的现代化(ADM)的原则,自动迁移的Web应用程序的CMS为基础的Web应用程序的方法。本文重点介绍该方法的两个构件的实现:1)DSL ASTMPHP,一种用于从PHP代码定义模型的建模语言(ASTM PHP模型)和2)模型到模型的转换规则,从ASTM PHP模型自动生成KDM模型。为了展示这种实现的可行性,我们使用了一个案例研究的基础上,在PHP实现的小部件,列出了一个Web应用程序的在线用户关键词:内容管理系统,Web应用程序,架构驱动的现代化,软件迁移,逆向工程和模型驱动工程。1介绍在过去的几年里,由Web应用程序管理的数字内容的数量呈指数级增长。因此,组织已经体验到使用强大的管理平台以健壮和可靠的方式维护这些数字内容的必要性[3][17]。最受欢迎的解决方案之一是使用内容管理系统(CMS)作为平台,以建立其大规模Web应用程序[3] [34]。这些基于CMS的Web应用程序提供了将其与传统Web应用程序区分开来的优势[41]。[40]其中,1电子邮件:feliu. urjc.es2电子邮件:valeria. urjc.es3电子邮件:marcos. urjc.es4电子邮件:esperanza. urjc.eshttp://dx.doi.org/10.1016/j.entcs.2015.05.0031571-0661/© 2015作者。出版社:Elsevier B.V.这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。24F. Trias等人/理论计算机科学电子笔记314(2015)23优点是:1)创建动态数字内容的可能性,2)内容和设计之间的明确分离,或3)扩展Web应用程序功能的灵活性。考虑到这些优点,许多组织已经将其传统的Web应用程序迁移到基于CMS的Web应用程序。问题是,这一重新设计过程是按照一种临时的方式进行的,这给组织带来了风险和高昂的成本[35]。因此,对象管理组织(OMG)[24]提出了架构驱动的现代化(ADM)[16],这是一个标准,提倡应用模型驱动架构(MDA)[19]技术和工具来系统化软件再工程过程,并降低其高风险和成本。此外,ADM开发了一组标准元模型来表示软件再工程过程中涉及的信息。其中两个元模型是:抽象树元模型(ASTM)[23],它允许在特定于平台的级别上表示实现遗留系统的源代码的语法,以及知识发现元模型(KDM)[26] [30],它允许在独立于平台的级别上表示遗留系统的语法和语义在文献回顾[37]之后,我们发现一些方法专注于基于CMS的Web应用程序的开发[33][36][41],但没有一种方法解决传统Web应用程序迁移到这些CMS平台的问题,即使这些平台提供了现有的必要性和优势为了解决这个问题,我们提出了一个基于ADM的方法迁移遗留的Web应用程序到CMS平台。这种迁移方法处理了马蹄形过程[7]之后的三个经典的再工程阶段:1)逆向工程阶段,包括从遗留Web应用程序中提取知识2) 重组阶段,重新定义遗留系统,同时考虑目标CMS平台的功能; 3)正向工程阶段,解决信息系统的经典自上而下实施问题。本文提出的工作是集中在逆向工程阶段。一方面,我们定义了一种领域特定语言(DSL),称为ASTM PHP DSL [12]。该DSL是一种基于ASTM标准元模型的建模语言,允许定义特定于平台的模型(ASTM PHP模型),这些模型表示在PHP代码中实现的遗留软件构件的语法。 另一方面,我们提出了实现模型到模型(M2M)的转换,允许在一个平台无关的ASTM PHP模型表示。这些生成的模型符合KDM标准元模型(KDM模型)。为了展示这种迁移方法的可行性,我们提出了一个案例研究,我们将一个用PHP实现的小部件从传统的Web应用程序迁移到名为Drupal的CMS平台[9]。Drupal是目前最常用的开源CMS平台之一。迁移的小部件列出了连接到Web应用程序的用户。本文的其余部分组织如下:第2节提供了对ADM原则的解释,重点是ASTM和KDM元模型。第3节F. Trias等人/理论计算机科学电子笔记314(2015)2325解释了我们提出的基于ADM的迁移方法。第四节给出了案例研究,用于显示我们的方法的可行性。第5节介绍ASTM PHP DSL的定义第6节介绍了ASTM PHP模型到KDM模型之间的M2M转换的实现。第7节介绍了文献综述中发现的其他基于ADM的方法,最后,第8节介绍了结论和未来的工作。2架构驱动的现代化模型驱动开发(MDD)[18]已经证明了它作为自顶向下的软件开发范式的有效性,现在它被扩展到软件再工程和迁移过程。2003年,OMG提出了架构驱动的现代化(ADM)[15][29]倡议,遵循MDD原则。ADM基于在不同抽象级别[21]使用模型来促进系统现代化:计算独立模型(CIM)级别,平台独立模型(PIM)级别和平台特定模型(PSM)级别。此外,它提出了使用自动化的转换,从遗留系统生成新的系统,通过以下马蹄形的过程。ADM定义了七个标准元模型,但目前只有三个有:抽象树元模型(ASTM)[23]、知识发现元模型(KDM)[26]和软件树元模型(SMM)[27]。本文重点介绍ASTM和KDM元模型的使用ASTM是一个元模型,它代表了系统的低层视图。它允许在PSM级别定义模型,表示遗留系统的源代码语法为了获得这些模型,有必要定义文本到模型(T2M)的转换,让代码语法和ASTM标准元模型的元素之间的映射。这个元模型有两个部分:通用抽象树元模型(GASTM),它包含了大多数编程语言的公共元素;以及特定抽象树元模型(SASTM),它代表了编程语言的特定属性最后,KDM [26]允许在模型中表示PIM级别的软件系统的语法和语义。语义可以在代码本身、GUI事件和业务规则中找到。它提供了一种通用的交换格式,旨在表示现有的软件资产,允许在PIM级别的不同方法的互操作性,解决再工程过程。KDM包括几个包(核心,kdm,源代码,代码或动作),它们被分为四层,以提高模块化和关注点分离(基础设施,程序元素,运行时资源和抽象)[30]。3一种基于ADM的迁移方法本文提出的偏移方法是基于ADM原理的。 它被定义为由三个经典阶段组成的再工程过程,26F. Trias等人/理论计算机科学电子笔记314(2015)23示于图1:1)逆向工程阶段,2)重组阶段和3)正向工程阶段。在本节中,我们将介绍这些阶段以及组成这些阶段的任务。如图1中虚线所示,本文中提出的工作是在我们的迁移方法的逆向工程阶段中进行的;具体来说,是在称为生成KDM模型的第二个任务中。Fig. 1. 我们基于ADM的迁移方法逆向工程阶段这个阶段由三个任务组成:1)知识提取,从遗留的PHP代码中提取ASTM PHP模型。为了定义这个模型,我们定义了ASTM PHP DSL,这是一种建模语言,它允许在特定于平台的级别上以正确和无歧义的方式表示PHP代码的语法和语义。DSL的定义在第5节中给出; 2)KDM模型的生成,从ASTM PHP模型中,我们自动生成KDM模型,这些模型表示遗留代码的语法和语义,但在平台无关的级别上。这些KDM模型符合KDM标准元模型的代码和操作这些模型是通过在Atlas转换语言(ATL)中实现的M2M转换这些M2M转换的定义和实现是第6节中提出的这项工作的另一个目标; 3)CMS模型的生成,使用M2M转换,我们从KDM模型中捕获的信息自动生成CMS模型。该模型表示在CMS领域中提取的独立于平台的知识。CMS模型符合[37]中提出的CMS公共元模型,并在本节末尾介绍这个元模型是由我们的研究小组定义的,它被认为是我们基于ADM的迁移方法的基石之重组阶段在此阶段,CMS模型由开发人员手动重新构建,同时考虑目标CMS平台的特定功能从这次重组-F. Trias等人/理论计算机科学电子笔记314(2015)2327基于CMS模型,可以将迁移后的Web应用程序实现到新的CMS平台中。前沿工程阶段这个阶段将经典的自顶向下的软件开发过程定义为马蹄形再工程过程。它由三个任务组成:1)生成目标KDM模型,从重构的CMS模型中,我们生成目标KDM模型,这些模型表示目标基于CMS的Web应用程序在平台无关级别的实现; 2)生成目标ASTM PHP模型,在此任务期间,我们从目标KDM模型中生成目标ASTM PHP模型,这些模型表示目标基于CMS的Web应用程序在平台特定级别的实现; 3)代码生成,我们从目标ASTM PHP模型中生成实现基于CMS的Web应用程序的软件工件。3.1CMS通用元模型如前所述,CMS公共元模型是我们基于ADM的迁移方法的主要贡献之一。它允许在我们的方法的逆向工程阶段的第三个任务(CMS模型的生成)期间定义CMS模型这个元模型代表了对基于CMS的Web应用程序建模的关键元素。因此,它捕获了诸如主题,词汇,模块和该领域的其他特定元素等元素这些元素被分为五个视图,考虑到Web工程提出的视图[13][22]:• 导航:它考虑定义Web应用程序导航结构的元素其中一些元素是:页面,菜单或菜单项。• 表示:它定义了组成Web应用程序的页面的结构和外观。该视图中包含的元素包括:主题和区域。• 内容:它捕获由基于CMS的Web应用程序管理的数据和数据类型。在这个观点中,我们考虑的元素包括:内容、期限或义务等。• user:它定义与分配给基于CMS的Web应用程序的用户的角色和权限相关的元素这些元素决定了具体用户如何导航和使用Web应用程序此视图中考虑的一些元素包括:角色、权限或用户。• CMS行为:该视图的元素允许定义基于CMS的Web应用程序的功能。 在这个视图中,定义的元素是:块,模块和功能。在图2中,我们展示了CMS公共元模型的摘录,其中包含表示和导航视图的元素。正如我们所看到的,这个视图的一些元素是:主题,区域,页面和菜单项。28F. Trias等人/理论计算机科学电子笔记314(2015)23图二、CMS通用元模型摘录4为例为了显示我们的ADM为基础的迁移方法的可用性,我们提出了一个案例研究,我们迁移一个小部件上市在线用户从遗留的Web应用程序到基于CMS的Web应用程序实现Drupal。这是一个名为Websana的健康和营养中心的网络应用程序,为用户提供有关饮食,锻炼和健康习惯建议的信息。图3.a显示了遗留Web应用程序中的小部件,3.b在Drupal中实现了相同的小部件[9]。图三. a)遗留Web应用程序b)基于CMS的Web应用程序从这个PHP代码中提取了一个ASTM PHP模型。然后,从这个模型中,KDM模型是自动生成的独立平台的水平,在ATL中实现的M2M转换。图4显示了这个遗留PHP代码的摘录,它实现了我们案例研究中的小部件5ASTM PHP DSL在本节中,我们介绍了ASTM PHP DSL,这是一种建模语言,允许在特定于平台的级别定义模型,表示PHP代码的语法和语义。ASTM PHP DSL的实现需要两个任务:1)通过ASTM PHP元模型定义抽象语法,2)通过实现树状图形编辑器定义具体语法,该编辑器允许以图形方式定义符合ASTM PHP元模型的模型。在下文中,我们将更详细地解释这些任务F. Trias等人/理论计算机科学电子笔记314(2015)2329图四、实现迁移的小部件的PHP代码5.1抽象概念的定义抽象语法通过ASTM PHP元模型来指定,该元模型捕获在模型中表示PHP代码在平台特定级别的语法和语义所需的元素。ASTM PHP元模型是由ADM提出的ASTM标准元模型的扩展,它由两个域组成:通用抽象树元模型(GASTM),它定义了大多数编程语言的公共元素,以及特定抽象树元模型(SASTM),它表示具体编程语言的特定元素,例如。PHP、Java或C++。对于ASTM PHP元模型的定义,我们使用PHP编程语言的特定语法和语义元素扩展了SASTM。这些元素是GASTM中定义的元素的特殊化。SASTM中定义的元素分为两组:1)代表GASTM中未考虑的新元素(新)和2)代表GASTM中现有的元素,但适用于PHP规范(重新定义)。在下文中,我们将介绍添加到SASTM中的其中一些元素。图5显示了将元素Expression ( 存 在 于 GASTM 中 ) 专 门 化 为 四 个 元 素 : ObjectAccess 、ClassAccess、DuplaArray和ArrayArray PHP。• ObjectAccess和ClassAccess:这两个元素表示GASTM中没有定义的两个表达式。前者表示对成员的访问,一个对象的函数,后者表示对同一个类的相同项的访问。正如我们在图5中所看到的,这两个元素的定义是相似的,但是从语义的角度来看是不同的,因此我们决定定义两个不同的元素。• 数 组 数 组 PHP : 这 个 元 素 表 示 对 数 组 位 置 的 访 问 。 它 被 定 义 为 GASTM 的ArrayAccess元素的重新定义具体地说,我们重新定义了关系下标的基数。这个关系指定了数组的位置(例如array [1] [2])。这些位置的默认定义是必需的,因为下标的基数是1..*。否则,PHP中的数组访问可以在不定义任何位置的情况下指定,30F. Trias等人/理论计算机科学电子笔记314(2015)23图五、元素表达式的特殊化需要将下标的基数重新定义为0..*。这种变化在图5中用红色虚线标出。• DuplaArray:它是SASTM中包含的新元素来表示键值对。它由两个属性组成,称为索引和值,定义为两个聚合关系,如图5所示。一方面,index是一个非必需的属性,它引用表示对的index的表达式,另一方面,value是一个必需的属性,它链接到表示值的表达式表1列出了添加到SASTM中的所有元素。第一列是指SASTM元素专门化的GASTM元素的名称;第二列表示SASTM元素的名称;第三列表示SASTM元素是新的还是重新定义的,最后,第四列是对生成的SASTM元素的描述。这些SASTM元素中的大多数表示新的运算符和表达式。否则,其中三个表示重新定义的元素(两个语句和一个表达式)。5.2混凝土至于具体的语法,它已经实现了一个树状的图形编辑器,允许符合ASTM PHPMeta模型的模型表示。该实现基于Eclipse建模框架(EMF)[6],该框架允许从生成器模型(GenModel)自动实现树状图形编辑器。这个GenModel,EMF能够生成组织在三个不同包中的Java代码,如我们在图6中看到的:模型代码(Java模型)、编辑模型(Java编辑)和编辑器代码(Java编辑器)。这些项目是相互关联的。具体地说,Java模型是ASTM PHPF. Trias等人/理论计算机科学电子笔记314(2015)2331表1在SASTMGASTM元件SASTM元件全新或重新定义描述BinaryOperatorXOR新布尔运算符不完全相同新布尔运算符相同新布尔运算符InstanceOf新布尔运算符UnaryOperator新新创建一个对象克隆新创建对象声明ForStatementPHP重新定义For循环SwitchStatementPHP重新定义切换条件ForEachStatement新对于每个环联系方式安装UnitPHP重新定义包含PHP代码的文件元模型此Java代码被视为元模型的逻辑。它定义了一个API,允许以编程方式访问元模型,生成符合此元模型的模型,并在XMI中序列化这些模型。否则,Java编辑和Java编辑器使用Java模型来生成Java代码,以实现所得到的树状图形编辑器的用户界面。图第六章EMF编辑器生成概述为了说明ASTM PHP DSL的应用,我们从实现案例研究小部件的PHP代码中提取了一个ASTM PHP模型。这个模型已经用我们实现的树状图形编辑器表示。图7.a显示了实现小部件的PHP代码片段,图7显示了实现小部件的PHP代码片段。7.b通过使用图形编辑器显示生成的ASTM PHP模型。正如我们在图中看到7、函数定义用红色标记此外,这些函数定义的名称已用绿色标记,传递给它们的参数用蓝色标记。最后,符合函数定义主体的语句(switch语句、数组定义和return语句)用橙色标记。32F. Trias等人/理论计算机科学电子笔记314(2015)23图第七章PHP代码和ASTM PHP模型之间的对应关系6M2M转换的实现:从ASTM PHP模型到KDM模型在本节中,我们将解释基于ADM的迁移方法的M2M转换的实现。这些转换自动从以前的ASTM PHP模型生成KDM模型。这些转换代表了我们的迁移方法的第二个任务(生成KDM模型)(见图1)。①的人。这些转换的主要目标是通过生成一个平台无关的模型来提高ASTMPHP模型的抽象级别这些M2M转换已经通过一组在元模型级别定义的转换规则(在ASTM PHP元模型和KDM元模型之间)进行了指定。这些转换规则的实现有两个任务:1)定义自然语言; 2)在ATL中实现转换规则。ATL提供了一个插件,该插件包括一组用于实现M2M转换的功能为了说明这两个任务,我们使用了图1中捕获的元素。第七章表2给出了自然语言中转换规则的定义。第一列和第二列是指ASTM PHP元模型的元素及其属性(这些M2M转换规则的源元素)。另外,第三和第四列引用KDM元模型的元素及其属性(转换规则的目标元素在下文中,我们解释表2中呈现的转换规则。• 元素FunctionDefinition和元素MethodUnit之间的转换规则:ASTM PHP Meta模型的元素FunctionDefinition映射到KDM元模型的元素MethodUnit。这些元素的主要属性是:export、name和codeElement。属性导出表示方法的可见性 它的值来自FunctionDefinition元素的属性accesskind。属性codeElement允许存储函数体的语句以及参数F. Trias等人/理论计算机科学电子笔记314(2015)2333表2ASTM PHP元模型与KDM元模型ASTM PHP ele-ment属性KDM元件属性功能定义accessKind标识符NameformalParameters主体方法单元export = accessKindname = identi文件名代码元素=formalPa-参数/身体形式参数定义locationInfo标识符名称定义类型参数单元source = locationInfoname = identifilerName type =definitionTypeSwitchStatementPHPSwitchExpression案例联系我们kind =开关代码元素=开关表达式,案例表达语句表达联系我们kind =表达式返回声明returnValue联系我们kind =返回codeElement = returnValue为MethodUnit定义。该属性的值映射自元素FunctionDefination的属性body和formalParameter。最后,属性name从属性identi filerName中获取值。• 转型规则之间的元件FormalParameter定义和 的元素参数单元:传递给函数定义的参数由ASTM PHP元模型的元素FormalParameterDefinition表示。该元素映射到KDM元模型的参数单元元素参数单元的主要属性是:源,名称和类型。属性source将ParameterUnit元素与源代码相关联。此属性的值取自元素FormalParameterDefinition的属性locationInfo。属性名定义参数的标识符。此属性的值映射自元素FormalParameterDefinition的属性identierName。最后,属性类型定义了参数的数据类型,其值取自元素FormalParameterDefinition的属性definitionType。• 元 素 SwitchStatementPHP 和元 素 Element : ASTM PHP 元 模 型 的 元 素SwitchStatementPHP映射到KDM元模型的元素Element。该元素的主要属性是:kind和codeElement。属性kind是一个字符串,它定义了动作的语义。 在这种情况下,该元素被定义为一个switch语句。属性codeElement允许存储在switch语句体中定义的语句以及执行switch决策所评估的值。该属性的值取自元素SwitchStatementPHP的属性cases和switchExpression。• 元素ExpressionStatement和theelement元素:的元件表达语句的ASTM PHP元模型映射到KDM元模型的元素Element。如前所述,XML元素的主要属性是:kind和codeElement。在这种情况下,属性kind的取值取决于元素ExpressionStatement的属性表达式中存储的表达式。例如,如果它是一个加法表达式(ADD expres-34F. Trias等人/理论计算机科学电子笔记314(2015)23属性kind的值将是一个add。存储在属性表达式中的表达式将存储在属性codeElement的属性codeElement中。• 转型规则之间 的元件返回声明 和 元素RESTRESSElement:ASTM PHP元模型的元素ReturnStatement映射到KDM元模型的元素RESTRESSElement。在这种情况下,元素RightElement的属性kind采用元素ReturnStatement的属性returnValue中存储的表达式。在用自然语言定义了这些转换规则之后,我们给出了它们在ATL中的实现。正如我们可以看到在图中提出的标题.8,这些转换规则被称为astm2kdm,它们将ASTM PHP模型作为IN模型,将KDM模型作为OUT模型。图八、M2M转换规则表头ATL中这些转换规则的实现可以定义为三种不同的类型:映射规则,称为规则或惰性规则[11]。映射的规则是主要的规则,因为它们在执行M2M转换规则时直接启动。它们由两种模式定义:表示要转换的元素的源模式和引用要生成的元素的目标模式。被调用的规则和惰性规则从执行的映射规则启动它们之间的主要区别是,被调用规则不需要定义源模式,而惰性规则则不需要。表3显示了如何在ATL中实现前面介绍的转换规则。表3ASTM PHP元模型和KDM元模型ASTM PHP元素KDM元件ATL规则类型功能定义方法单元FunctionDef2MEthodUnit匹配形式参数定义参数单位参数单位称为SwitchStatementPHP联系我们Switch2Action匹配表达语句联系我们ExpressionStatement2操作匹配返回声明联系我们返回2行动匹配表3的第一列呈现M2M变换的源元素,并且第二列是目标元素。第三列是在ATL中实现的转换规则的名称。最后,最后一个返回该规则的类型(匹配、调用或惰性)。图9显示了ATL中的函数Def2MethodUnit转换规则的实现。正如我们在图中看到的,它是作为匹配规则实现的。源模式(from)定义了变量funcdef,表示ASTMPHP元模型的Function-Definition元素否则,目标模式F. Trias等人/理论计算机科学电子笔记314(2015)2335(to)创建一个名为meth的变量,表示KDM元模型的新MethodUnit元素在目标模式 的 主 体 中 , 元 素 MethodUnit 的 属 性 name 、 export 和 codeElement 从FunctionDefinition元素的属性中获取值。值得注意的是,为了映射存储在元素FunctionDefination的属性formalParameters中的值,需要创建一个Signature元素,该元素是通过使用调用的规则Signature创建的。见图9。FunctionDef2函数元素ATL规则图图10显示了ASTM PHP模型的元素之间的对应关系(如图10所示)。10.a)和KDM模型的元素,从执行的astm2kdmM2M转换(图中所示)。10.b)。图10. ASTM PHP模型与KDM模型的对应关系已经通过执行转换规则functionDef2MethodUnit预处理从FunctionDefin元素生成的MethodUnit36F. Trias等人/理论计算机科学电子笔记314(2015)23在Fig. 9、被标为红色。我们用绿色标记了从FunctionDefinition的名称映射的MethodUnit的名称。另外,我们用蓝色标记了从Formal-ParameterDefinitions生成的参数单元。正如我们在图中看到的。10.b,在Signature元素中生成了参数单元最 后 , 在 图中 用 橙 色 标 记 的 SwitchStatementPHP 、 ExpressionStatement 和ReturnStatement10.a 已 映 射 到 KDM 模 型 中 的 XML 元 素 。 至 于 元 素 Switch-StatementPHP,我们可以观察到KDM模型中生成的PHP元素使用switch的值定义了它的属性种类。7相关作品在本节中,我们介绍了一些目前在文献中发现的基于ADM的方法。 在表4中,我们分析了每种方法,并将它们与我们提出的基于ADM的迁移方法进行了比较。为了彻底分析这些方法,我们定义了以下五个标准• 源代码:该标准与实现遗留系统的源代码有关,该方法从遗留系统中提取模型并启动再工程过程。• 元模型:该标准允许分析不同方法用于定义模型的元模型。相应地,这些方法可以:1)定义它们自己的元模型来表示任何抽象级别的模型,2)使用现有的标准元模型或4)使用ADM标准元模型(ASTM、KDM 或SMM)。• M2M变换:该标准用于分析方法所考虑的M2M变换的类型。可以找到两种类型的M2M变换,垂直或水平[20]。垂直M2M变换涉及变换的结果模型的抽象级别的改变,例如PSM被变换成PIM。否则,水平M2M变换在与源模型相同的抽象级别生成结果模型• 上下文:该标准分析了方法的重点,因此可以找到重点关注的方法:1)数据库的重新设计,2)Web服务的重新设计或3)遗留系统(通用上下文)。• 工具包:这一标准是关于支持每种再工程方法中定义的任务的工具的可用性,例如用于创建模型的图形编辑器或允许运行自动化转换的框架在提出这些标准之后,我们分析了应用它们的不同方法。Van Hoorn等人-DynaModVan Hoorn等人在[38]DynaMod中提出了一种称为DynaMod解决了模型驱动的软件系统现代化F. Trias等人/理论计算机科学电子笔记314(2015)2337该方法由三个任务组成:1)从Java中提取一个符合KDM元模型的Java体系结构模型,该提取考虑了静态和动态分析; 2)利用系统专家提供的额外信息重构Java体系结构模型; 3)自动生成符合KDM元模型的目标系统的目标体系结构模型。DynaMod使用的所有模型都在PIM级别定义为了自动生成目标架构模型,他们定义了M2M转换。DynaMod不专注于任何特定领域,也不受任何工具包的支持,用于系统化再工程过程或编辑模型。Sadovykh等人Sadovykh等人在[32]中提出了一种将C++实现的遗留系统迁移到Java实现的目标系统它涉及三项任务:1) 从符合UML元模型的C++代码中提取特定于平台的UML模型[4],2)从特定于平台的UML模型中生成独立于平台的UML模型,3)重新构建生成的独立于平台的UML模型,消除平台依赖性并提取业务逻辑,最后4)从独立于平台的UML模型中生成特定于平台的Java UML模型。这种方法所指定的UML模型是在PSM级别和PIM级别定义的。 从代码中提取的UML模型(第一个)以及Java UML模型是在PSM级别定义的,而从第一个代码中获得的UML模型是在PIM级别定义的。为了自动生成平台无关的UML模型和Java UML模型,它们定义了M2M转换。这种方法主要针对商用现成软件(COTS)。最后,这种方法得到了UML2 Toolki [10]的支持,可以在PIM级别生成UML模型Perez-Castillo等人-PrecisoPerez-Castillo等人在[31]中提出了一个称为Preciso的再工程过程,以自动方式从关系数据库中恢复和实现Web服务这个过程是基于ADM的,它由以下四个阶段组成:1)根据SQL-92元模型从关系数据库中提取SQL-92模型,2)将此SQL-92模型转换为符合UML 2元模型的对象模型,这提高了系统的抽象级别,3)从对象模型生成符合WSDL元模型的WSDL模型[8这些代码是实现Web服务基础结构的基础。SQL-92模型和WSDL模型在PSM级别定义,而对象模型在PIM级别定义。为了从SQL-92模型获得对象模型以及从对象模型获得WSDL模型,定义了一组M2M转换。这种方法的重点是从关系数据库中自动提取Web服务。最后,这一方法得到了一个综合工具的支持。该工具支持并自动化所有过程,并建议使用编辑器来定义模型。38F. Trias等人/理论计算机科学电子笔记314(2015)23Bruneliere等人-MoDiscoBruneliere等人在[5]MoDisco中提出了一种用于模型驱动逆向工程的可扩展方法这种方法只考虑逆向工程阶段,具体的知识提取的任务。因此,MoDisco可以从符合KDM的PIM级别和符合一组平台元模型,如Java、XML和JSP元模型。该方法不定义M2M变换,而是定义T2M变换。它不受特定上下文的限制,因此可以应用于任何遗留系统。它由一个全面的工具包支持Blanco等人[2]中提出的工作提出了一种基于ADM的方法,该方法专注于从遗留OLAP系统中获取概念安全模型[1]。它允许分析OLAP系统,以包括新的安全需求,以提高架构以及迁移到其他平台。该过程由以下任务组成:1)从OLAP系统中自动提取 -符合安全多维逻辑元模型(SECMDDW)的数据仓库模型,该安全多维逻辑元模型考虑OLAP系统的公共结构2) 从这个逻辑模型中,它们自动生成一个符合SECDW元模型的概念模型,该元模型允许表示数据仓库的结构方面和定义几种安全规则。它由专注于数据仓库机密性的访问控制和审计(ACA)模型补充。代码通过执行M2T转换生成。这种方法在不同的抽象层次上对OLAP系统的不同方面进行建模数据仓库模型在PSM级别定义,而概念模型和ACA模型在PIM级别定义。重组阶段在PIM一级进行。为了提取数据仓库模型,他们定义了T2M转换。另一方面,为了获得概念模型和ACA模型,他们定义了M2M变换。这种方法主要针对遗留的OLAP系统。它没有考虑到任何解决方法自动化的工具Vasilecas等人Vasilecas等人在[39]中提出了一个模型驱动的过程,用于从现有的遗留系统中提取业务规则。该方法由以下阶段组成1)从遗留源代码中提取符合ASTM元模型的ASTM模型,2)将ASTM模型映射到符合KDM元模型的代码模型,3)将软件设计恢复技术应用于KDM模型以提取业务规则,这些技术基于GUIDE业务规则项目[14],该项目将业务规则分为四类:业务术语,事实,约束和派生,最后4)使用提取和分类的业务规则创建KDM概念模型。该模型符合业务词汇和业务规则语义(SBVR)[25]。ASTM模型是在PSM级别定义的,因为它描述了遗留系统的源代码F. Trias等人/理论计算机科学电子笔记314(2015)2339系统,而代码模型在PIM级别定义。代码模型的重构以获得KDM概念模型是在PIM级别进行的,但是最终的KDM概念模型是在CIM级别定义的。对于ASTM模型的提取,他们定义了T2M转换,对于代码模型的自动生成,他们指定了M2M转换。这种方法不关注任何特定的背景。它被定义为从任何遗留信息系统中提取业务规则的方法。它由一组基于Eclipse建模框架(EMF)的工具支持[6]。转换由ATL IDE支持,而要编辑、查询和导入/导出到XMI格式的KDM模型,则使用KDM SDL工具包。Perez-Castillo et al -MarblePerez-Castillo 等 人 在 [28]Marble ( ModernizationApproachforRe-coveringBusiness Processes from Legacy systems)中提出了一种基于ADM的框架,用于从遗留系统中恢复业务流程Marble定义了三个转换任务:1)模型提取,从实现遗留系统的Java代码中获得代码模型2)生成KDM模型,该KDM模型是考虑KDM元模型的代码和操作包定义的,3)获取业务流程模型,符合BPMN [42]的业务流程模型代表发现的业务,由业务专家手工重构。在Marble中,我们可以找到在不同抽象层次上定义的模型。代码模型在PSM级别定义,而KDM模型在PIM级别定义。最后,在CIM级别定义业务流程模型。为了获得代码模型,他们实现了T2M转换。为了从Java模型获得KDM模型,从KDM模型获得业务流程模型,他们定义了M2M转换。这种方法不关注任何特定的背景。最后,一个完整的工具支持Marble的再工程过程的自动化,尽管他们没有提到使用图形编辑器来管理模型。在表4中,我们介绍了所发现的方法,并将其与基于ADM的迁移方法进行了比较。表4中的第二列指的是ap-proach从中提取模型的源代码。 Van Hoorn等人、Bruneliere等人(MoDisco)、Blanco等人和Perez-Castillo等人(Marble)从Java代码中提取模型。此外,Bruneliere等人(MoDisco)从XML和JSP代码中提取模型。另外,Perez-Castillo等人(Preciso)从SQL-92中提取,Sadovych等人从C++中提取。最后,Vasileca等人从Visual Basic代码中提取模型。正如我们所观察到的,它们都没有解决从PHP代码中提取模型的问题。因此,我们基于ADM的迁移方法可能是实现T2M转换以从该编程语言提取模型的唯一方法第三列是指每种方法提取的模型所符合的元模型。一些方法定义了自己的元模型来 构 建 模 型 。 例 如 , Perez-Castillo 等 人 ( Preciso ) 定 义 了 SQL-92 元 模 型 ,Bruneliere等人(MoDisco)指定了Java、XML和JSP40F. Trias等人/理论计算机科学电子笔记314(2015)23表4基于ADM的迁移方法方法源代码元模型M2m上下文工具包Van Hoorn等人(Dy-naMod)JavaKDMPIM2PIM(地平线-tal)通用没有Sadovykh等人C++UMLPSM2PIM(垂直)通用是的Perez-Castillo(Preciso)etalSQL-92SQL-92PSM2PIM(垂直)数据库和Web服务是的Bruneliere(Modisco)etalJav
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功