没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记127(2005)129-137www.elsevier.com/locate/entcs模型驱动开发Johann Oberleitner2TechnischeUniversitéatWienIstttfur?InformationssystemeArgentinierstraße 8/E1841A-1040 Wien,奥地利摘要模型驱动开发和模型驱动架构(MDA)的宏伟愿景是从应用程序的高级模型自动生成实现。模型驱动开发的主要内容是应用程序的平台无关模型(PIM)和平台特定模型(PSM),后者是从给定目标平台的PIM中派生出来的。如果定义了必要的映射,则可以自动完成从PIM到PSM的转换。即使这个宏伟的愿景在未来的某个时候实现,以这种方式开发的应用程序的发展仍然提出了有趣的挑战。我们指出了在发展应用程序以支持不同平台和不同技术时出现的具体问题。然后,我们提出了一个支持工具,称为保留字:模型转换、一致性与协同进化1介绍模型驱动体系结构(MDA)的一个目标是支持随着时间的推移优雅地发展的持久系统模型驱动开发的主要内容是应用程序的平台无关模型(PIM)和平台特定模型(PSM),该模型是从给定平台的PIM中派生出来的,例如CORBA、EJB等。1EMail:jazayeri@infosys.tuwien.ac.at2EMail:joe@infosys.tuwien.ac.at1571-0661 © 2005 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2004.08.039130M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129-137如果定义了必要的映射,则可以自动完成从PIM到PSM的转换。通过定义新的PSM和新的转换,使用这种方法开发的应用程序可以随着时间的推移而发展,以在不同的和更新的平台上运行。然而,这种方法假设PIM足够抽象,以至于PIM中使用的所有概念都可以转换为新的具体PSM。 这个假设至少有两个问题。 第一、PIM的设计通常是许多权衡的结果,其中一些权衡考虑了预期平台和技术的能力(即,交易是否可用?实体bean是否足以完成任务)。当引入新的平台和技术时,并非所有这些分析都可以在系统的生命周期内保持不变甚至有可能新的平台可能不支持PIM假定的所有特性。第二,引入新的平台或技术,并使用新的功能改进现有平台当有更新、更好的功能可用时,PIM继续使用旧功能并不总是一个好主意。从PIM到PSM的转换必须能够利用这些改进。然而,PIM可能不被设计为支持这样的增强。在这份立场文件中,我们提出了一个“可移植性”检查器,支持开发人员检查源模型是否与目标平台支持的功能相冲突。使用此检查器,可以验证如果目标平台和技术发生更改,模型转换的哪些部分可移植性检查器标记哪些源或目标模型元素集不能在新技术平台中转换,并提供哪些模型元素对映射到过时的平台特征并因此应该被重新建模的信息。在下文中,我们将解释这种工具的不同用途。很明显,模型驱动的开发仍然处于起步阶段,在它成为一种实用的方法之前,还需要进行一个重要的需求是能够组合来自不同领域的模型,例如,一个用于用户界面,一个用于事务,另一个用于执行平台。然后,模型编译器[4]可以转换和合并这些模型,类似于方面编织。同样在这种情况下,可移植性检查器可以提供有用的帮助。2背景本节描述的概念对于理解MDA最重要的概念和本文的其余部分软件开发中最重要的生产力改进是通过提高抽象层次来实现的[2],包括M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129131使用汇编指令而不是机器代码,使用高级编程语言而不是汇编语言,以及使用设备驱动程序接口而不是手动编写设备访问代码。模型驱动体系结构(MDA)是OMG的解决方案,旨在进一步提高分布式系统开发的抽象级别。MDA大量使用OMG的建模标准,这些模型表示独立于特定中间件平台的系统因此,这些模型被称为平台无关模型(PIM)。PIM用于为特定的中间件系统构建可执行代码。MDA工具通过使用PIM作为输入的生成器生成这些代码。通常,不可能直接生成完整的可执行代码。替代地或附加地,生成平台特定模型(PSM)。从PIM到PSM的映射将允许工具自动生成PSM和/或代码。但是,如果输入模型不完整,开发人员必须手动修改PSM以获得平台特定代码的完整实现。MDA对于企业应用程序中应用程序逻辑很简单并且可以从模型中推导出来的部分非常有效最近,一种UML动作语言已经被引入[4],它甚至允许为过程指定语义。此外,专门的UML概要文件,UML的扩展,已经被定义为描述一个模型,例如一种类型的应用程序(例如,分布式计算)或一种类型的平台(例如EJB或CORBA)。符合这些配置文件的模型可以用作代码生成器的输入。我们的可移植性检查器也使用了这些UML概要文件。值得注意的是,无论我们如何尝试使模型独立于实现平台,实际的考虑往往会在模型中强加一些实现依赖性。使用普通编程语言的程序员熟悉的MDA中的一个例子是,当设计人员知道代码生成器无法为独立模型中的特别高级构造生成高效代码时。在这种情况下,设计者通过依赖于实现(或生成器)的更改来修改模型,以确保有效的转换。3一种可移植性检查器及其应用可移植性(或一般的兼容性)检查器将输入模型和一个或多个目标模型作为输入,并且用信号通知任何检测到的不兼容性。该工具还使用用于将源模型(即PIM)转换为目标模型(即PSM)的转换规则。此外,检查器还使用可能映射的规则,并考虑con-mapping。132M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129-137源模型元素(例如事务)和目标模型元素(例如事件)之间的约束。这些映射用于确定转换是否导致完整的目标模型或完整的可执行目标代码。这些转换规则和映射约束是检查器的配置的一部分,并且不由用户输入。由于篇幅的限制,我们依赖读者在本节的剩余部分中,我们列出了在模型驱动开发中使用可移植性检查器的一些方法。这些例子的目的是展示模型驱动架构的理想在哪里遇到了实际问题,以及可移植性检查器如何干预开发过程,以使过程尽可能接近理想3.1从头开始开发便携式软件可移植性检查器的基本用途是为不同的目标平台开发相同的软件MDA允许设计一个独立于平台的模型(PIM),并假设自动生成特定于平台的实现。PIM应该是为所有目标平台生成代码的基础。这种生成是基于不同目标平台的不同UML概要需要不同的UML概要文件的原因是,并非所有平台都支持所有相同的功能,并且根本不能保证PIM所需的所有功能都被UML概要文件支持。因此,自动生成将失败。设计者可以在开发PIM时使用可移植性检查器,以确保PIM特性与UML概要描述的目标平台所提供的支持相匹配。可移植性检查器检测到的不兼容性会引起设计人员的注意,并可以用不同的方式进行处理设计人员可以重新设计模型以支持所有目标平台,或者接受不兼容性并支持不同平台上的不同功能,或者手动实现有问题的代码部分。这种方法可以迭代地用于处理所有有问题的位置。除了更改源代码模型之外,开发人员还可以扩展和调整代码生成器,以支持 目标平台。虽然从零开始为两个目标平台(如CORBA和EJB)同时实现整个分布式系统是不可能的,但对于构建组件或子系统的设计人员来说,这确实是一种常见的情况M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)1291333.2移植现有的基于MDA的系统在模型驱动开发中,比从头开始更有可能的场景这是一个典型的进化场景。在简单的情况下,我们使用可移植性检查器来发现PIM与新平台的不兼容性。同样,我们有与以前相同的选项:修改PIM并调整现有的实现,或者手动调整新平台的实现。然而,更困难的情况是,新平台的应用程序是否在这种情况下,必须同时在两个平台中引入新功能。新增强功能的开发必须遵循上一小节中描述的开发新可移植软件的过程开发新软件和移植现有软件的场景组合表明了过程迭代开发和嵌入式演化软件生命周期的需要。3.3为不断变化的技术显然,不可能预测技术因素(如事务模型或安全支持)的每一个可能变化。然而,人们通常事先就知道技术的某些领域会发生变化或不成熟。此外,公司有时会制定政策,不允许使用特定的技术。可移植性检查器可用于识别使用此类功能并可能导致潜在问题的模型元素。与上面描述的可移植性检查器使用的规则完全基于不同目标平台的通用可用UML概要文件的场景相反,在这种情况下,我们必须修改这些概要文件,以便它们描述哪些模型元素不符合公司3.4一起使用不同的MDA工具只使用一个MDA工具及其支持的目标平台集不会引入新的困难,除非上面提到。然而,特定领域的MDA工具和模型将会到来。基于MOF的模型可以通过其MOF/XMI表示相对容易地合并到其他MDA工具中。然而,代码生成器的集成更加困难。 可以同时使用多个MDA工具。但是模型中有一些过渡对于模型中的交互工作至关重要。可移植性检查器还可以用来识别那些需要手工实现的转换元素。134M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129-1373.5遗留系统很少有系统是孤立工作的。许多系统必须建立在现有的和正在运行的遗留系统上,这些遗留系统必须集成到新系统中。这些遗留系统通常没有UML兼容模型,因此集成必须绕过MDA工具手动完成可移植性检查器可以通过规则进行扩展,以验证遗留系统的哪些接口元素可以自动与MDA方法集成,哪些元素必须手工编码。3.6重新实施现有系统不使用MDA工具构建的现有系统需要移植的情况并不少见。此系统的模型不存在或不能用作MDA工具的输入。不能直接在此应用程序的二进制文件上应用可移植性检查器。 然而,对于某些平台,构建这种系统的粗略模型相对简单通过使用这些平台的反射方法。这个模型并不完整,但显示了类或组件的粗略的相互关系。由于这个模型是不完整的,它不能立即用作MDA工具的输入。有趣的是,可移植性检查器可以使用这样一个模型来提供有关不同目标平台的重新实现的难度的信息。4例如在本节中,我们将给出一个简单的示例,详细说明可移植性检查器的有用性。它只使用元模型之间可能的最简单的约束:相似概念的存在。Fig. 1. PIM到.NET图1显示了一个图书馆管理软件的(缩小的)体系结构。左侧的PIM使用了OMG的企业协作体系结构(ECA)的扩展UML结构,M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129135实体.这些概要文件添加了表示实体对象(如人或书籍)和过程对象(如图书馆本身)的UML原型。尽管.NET的UML概要文件还没有定义,但是从可用的PIM自动生成.NET模型和源代码是相当容易的。图二. PIM到EJB相同的应用程序后来被移植到EnterpriseJavaBeans(参见图2)。同样,这是直接的,因为找到PIM到EJB的UML概要文件的映射没有问题,该映射将实体映射到实体bean,并将流程组件映射到会话bean。这两个平台都基于相同的PIM。这个应用程序的一个有用的补充是一个通知机制,通知对特定书籍感兴趣的人,这本书已经被归还给图书馆。设计这种方法的一种方法是使用由返回的书向感兴趣的人触发的事件。还在ECA中提议了活动。此事件的使用如图3所示。.NET的代码生成可以很容易地完成,因为我们的.NET映射不受任何UML配置文件的约束,而且.NET Remoting本身甚至支持跨远程边界的事件。图三. PIM到.NET但是,当EJB应用程序必须更新以支持通知时会发生什么?EJB UMLprofile不支持事件。此外,企业bean目前不支持内置回调。可移植性检查器知道EJB元模型和关联的代码生成器不支持事件,并将返回适当的警告。136M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129-1375相关工作不同的研究领域与我们的可移植性检查器有关。在生成输出代码时,如果出现某些不一致,则可能会生成错误有趣的是,没有一个OMG规范包含当PIM到PSM的映射不完整时应该做什么或者如何检查这个即使是即将到来的OMG转换标准的建议,对于视图,视图和转换[3],也提到了反应是一个实现问题。在文献[1]中,作者提出了一种在实时环境下UML模型演化的一致性保持方法。他们将UML-RT模型映射到CSP,并研究模型的变化如何改变原型的一致性或死锁自由度的保持。相比之下,我们的工作涉及如何过渡到一个新的和不同的目标平台可以完成。在[7]中提出了一个基于UML的表示转换的框架。它支持一种算法,可以检查两个UML模型是否是彼此的重构。由于基于MOF和UML的模型可以被机械地导出为XMI表示,我们想要解决的问题可以被认为是验证XML文件之间约束的一致性。xlinkit框架[5]支持检查异构文档的一致性,这些文档要么已经用XML表示,要么可以转换为XML。这些文档之间的约束是用基于一阶逻辑的语言描述的它被限制为在多项式时间内可判定[5]。与其他一致性检查器相比,xlinkit的不同之处在于它考虑了不一致性存在的原因和位置。在未来,我们希望使用xlinkit来支持在非常细粒度的级别上检查PIM和PSM6结论在这份立场文件中,我们已经确定了一些实际的软件演化问题,这些问题是由基于MDA的工具和转换引起的我们已经提出了一个工具,我们称之为可移植性检查器,以帮助解决其中的一些问题。可移植性检查器依赖于MOF/UML模型和UML概要文件来检测源模型和目标平台之间的不匹配。在可移植性检查器的帮助下,设计人员和开发人员可以从头开始设计可移植系统,或者将现有软件移植到新的平台上。 的作用可移植性检查器的一个重要功能是自动检测模型中使用的功能与平台中支持的功能之间的M. Jazayeri,J. Oberleitner / Electronic Notes in Theoretical Computer Science 127(2005)129137我们目前正在实现可移植性检查器,并计划支持不同的中间件平台,如EJB、CORBA和. NET。可以将这里使用的可移植性的概念概括化,其指的是与执行平台的兼容性,因此适用于可移植性、其他领域和检测其他不兼容性。这是我们目前工作的主题。7参考书目[1] Engels,G. 、R. H eckel,J. M. Ku?st erandL. Groenewegen,Consistency-preservingingmodelevolutionthrough transformations,in:Proceedings of UML 2002(2002),pp.212-227[2] 弗兰克尔,D。美国,“Model Driven Architecture: Applying MDA to Enterprise Computing,”Wiley[3] 加德纳,T.,C. Gin,J. Koehler和R. Hauser,OMG mof 2.0 query / views / transformationsubmissions and recommendations towards the final standard(2003)。[4] Mellor,S. J.和M. J. Balcer,[5] Nentwich,C.,W. Emmerich,A. Finkelstein和E.陈晓,张晓,等.柔性一致性检验.北京:计算机科学出版社,1999.工程师,Methodol。12(2003),pp. 28比63[6] 索利河“Model Driven Architecture - White Paper,” OMG[7] Whittle,J.,Transformations and Software Modeling Languages:Automating transformationsinuml,in:Proceedings of UML 2002(LNCS 2460)(2002),pp. 227-242
下载后可阅读完整内容,剩余1页未读,立即下载
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功