没有合适的资源?快使用搜索试试~ 我知道了~
图变换在面向对象软件重构中的应用及实现方法研究 - 重构指定与验证的技术革新
理论计算机科学电子笔记152(2006)53-67www.elsevier.com/locate/entcs用于重构的Berthold Ho ZurmannBerthold Ho Zurmann1,4TechnologiezentrumInformatikUniversitéatBremenD-28334 Bremen,GermanyDirk Janssens2,4Niels Van Eetvelde3安特卫普信息大学B-2020安特卫普,比利时摘要重构是一种软件工程技术,旨在增强面向对象软件的结构,同时保持其行为。几位作者研究了如何使用图变换来指定重构,因为这样的指定更精确,因此原则上更容易验证以保持程序的行为。事实证明,图变换的“标准”方法不足以定义重构:如果它们在这个应用领域有用,它们的表达能力必须增加。到目前为止,已经提出了两种机制:一种用于克隆,一种用于通过图扩展节点。然而,所需的机制和符号相当复杂。在本文中,我们提供的背景下,双推出图变换,一个更优雅和直观的描述。它基于规则实例化的概念,其中实例化通过克隆和扩展将规则模式转换为规则实例。该技术的力量是通过两个著名的重构操作的应用程序证明。保留字:面向对象程序设计,重构,图变换,变量1Email:hof@tzi. De2Email:Dirk. 是的,我知道。梭Be3Email:Niels. 我的意思是,我的意思是,梭Be4作者得到了ESPRIT工作组可视化建模技术的语法和语义集成(SE GRA VIS)的支持。1571-0661 © 2006 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.01.01454B. Hoffmann等理论计算机科学电子笔记152(2006)531引言虽然图变换提供了一种明显的方法来形式化离散结构的管理,但它们在具体问题中的应用通常需要指定大量类似的变换规则,因此需要特定的机制来支持这种指定。本文的目的是提出两个这样的机制,克隆和扩展,使用的问题,正式描述重构操作作为一个测试用例。这两种机制以前都曾采用过,但技术上很复杂,而且不能令人满意。重构是重构面向对象程序同时保持其行为的软件转换[7,11,14]。其关键思想是在类层次结构中重新分布实例变量和方法,以便为将来的扩展做好准备。如果应用得好,重构可以改善软件的设计,使软件更容易理解,帮助发现错误,并帮助更快地编程[7]。虽然可以重新定义-对于手动操作,工具支持被认为是至关重要的。诸如重构浏览器之类的工具支持半自动方法[15],这也被工业强度的软件开发环境所采用。这些工具依赖于基于自然语言描述的每个重构的直接实现,如[7]中的那些。然而,这样的描述是模糊的。在[10]和[1]中,图变换被提出作为表示重构和推理其性质的形式主义。图转换的一个重要的潜在优势是,规则可以产生复杂转换的简洁可视化表示。不幸的是,传统的图转换规则缺乏使用单个图转换规则来指定重构所需的表达性。这可以通过使用受控图转换来解决,但危险在于,最终的描述中大部分复杂性都在控制结构中,即类似于传统的命令式程序而不是声明式规范。Van Eetvelde和Janssens [18]提出通过在规则中添加图变量和克隆机制来解决这个问题。这允许只使用一个或几个图变换规则来指定一组完整的基本重构[19]。然而,它们使用了一种复杂而强大的机制,其中节点和边以及它们的连接都可以用图来代替。HoMuslimann [9]在图变换规则中区分了三种不同类型的变量:图变量、属性变量和克隆变量。他还提供了一种机制,可以实例化包含其中一种变量的规则。然而,大多数重构需要在一个规则中使用几种变量。在本文中,我们开发了一种形式主义,允许定义规则方案,其中可能包含任何类型的B. Hoffmann等理论计算机科学电子笔记152(2006)5355变量,并将它们实例化为具体的规则。本文的结构如下:第二节对基本的图变换作了简要的总结.第3节说明了为什么这不足以指定重构。在第4节中,我们定义了克隆和扩展机制,并展示了另一种重构。最后,我们在第5节中对相关工作和未来工作进行了一些说明。2基本图形转换本节简要回顾了双推出图变换[5]。我们使用这种方法作为基础,因为它被广泛使用,并且具有丰富的理论。定义2.1[G]一个raphG=Gstec,G<$,sG,tG由不相交的有限集合sGstecof节点和边G<$组成,以及source和targetfunctionsG,tG:G<$→Gstec。一个态射m:G→H是两个有向图G和H的一个相容功能mstec:Gstec→Hstec和m<$:G<$→H<$ 保留了来源和目标即,sHm<$=mstec◦ sG和tHm<$=mstec◦ t G.Let=固定类型,分别为固定类型、固定类型、源类型和目标类型。 则图G连同态射l G:G→ G是标号图(在G上)。5当l H m = l G时,标号图之间的态射m:G→H是标号图.所有的图和态射在此以后使用的是默默地假定为标记。图中的边被称为与其源节点和目标节点关联,并使这些节点彼此相邻。定义2.2[图变换]一个(图变换)规则t=(L<$I→R)由两个单射态射I→L和I→R组成。我们说t把一个图G变换成一个图H,记为G<$tH,如果有一个态射I→C有两个推出我,,我MRJ J JG、C、H在标号图和标号图态射范畴在上面的规则t中,我们假设它的接口I是它的左手边L和右手边R的子图,并且态射是包含。这允许t被表示为规则图LR,其本身可以进行图变换。[5]这类图通常称为类型图[2]。56B. Hoffmann等理论计算机科学电子笔记152(2006)53我们在G中找到t的匹配(即,态射m:L→G满足粘合条件),通过用R\I中的节点和边的新副本替换m(L\I)中的节点和边,可以构造变换G→H。详情见[5]3下推方法重构在本节中,我们考虑一个规则,它指定了一个具体的重构,该重构将被用作一个运行示例。这个例子是基于程序图,一种面向对象程序的表示方法,它是为[10]中讨论的局域网仿真而开发的。3.1程序图程序由程序图表示。在程序图中,软件实体(如类、变量、方法和方法参数)这是一个典型的例子。这是一种新的类型,={C,M,B,V,P,E}rep-介绍了程序实体的基本类型C类、方法签名、B锁结构、变量、字符串和E表达式。可能的关系在这些元素中被列出dinn={l,i,m,t,e,ap,fp,·,c,a,u,va l}:method查找、继承、成员身份、(子)类型、表达式、实际参数、函数参数、级联表达式(·)、调用、变量访问和更新、更新值。这些节点类型和关系可以在类型图中可视化,如图1所示。程序图是在这个图上键入的。方法体表示为具有根(B节点)的简化语法树,连接到不同的E节点,可以表示调用,赋值和访问的变量和参数。FPFig. 1. 程序图3.2将重构表示为图变换将软件程序表示为图使得将程序转换(例如重构)建模为图转换成为可能。如果跨-C我MlmBeePu不tmMCV一个u一Eeval apB. Hoffmann等理论计算机科学电子笔记152(2006)5357形成是局部的,即它只对程序图的一小部分产生影响,那么将其表示为规则是有意义的。 这是重构的典型情况。下推方法重构的一个具体实例如图2所示。方法originate的主体从其包含类(Node)复制到其子类(Workstation和PrintServer)。方法体,包含对方法send的调用,由规则左侧的简化语法树表示,由类型B的节点和两个类型E的节点组成。这个子图在右侧出现两次。具体的类和方法名称标识规则接口中的节点。在本文的其余部分,我们使用数字来表示接口。当应用时,该规则的左手边与程序图相匹配,然后该规则删除左手边的语法树(阴影部分,不在接口中),并添加两个副本作为两个子类的一部分。节点C节点CPrintServerC起源MImiLBeEapECC工作站一PrintServerCMBe我我起源lMlC工作站MBe发送MparPEapEaCcEapE一发送MparP图二.具体的下推方法重构规则这个规则的一个明显的缺点是,它只适用于一种特定的程序情况:它不能被其他方法体重用,因此,为了描述下推方法的所有可能出现,需要为每个新的方法体制定一个新的规则为了获得精确和简洁的表示,期望具有更抽象的规则,一旦已经决定在哪里(在哪个类和哪个方法中)应用下推方法(这可以通过提供类名和方法名作为抽象规则的参数来完成),则可以实例化该规则以产生所需的具体规则。作为一种方法,以获得这样的更抽象的规则,我们建议引入图形变量。由图变量标记的节点充当一组图的占位符;在我们的示例中,我们引入一个图变量β和一个用任意方法体代替它的扩展然而,图2的规则还有第二个弱点:即使方法体的结构没有固定,它的上下文是:两个E节点是58B. Hoffmann等理论计算机科学电子笔记152(2006)53只连接到一个M节点和一个P节点。一般来说,一个方法体可以访问更多的方法签名、变量和参数,并且它还可以包含任意数量的局部变量,这些局部变量具有对应类的类型边缘。而且,它只能将方法体复制到两个子类中。如果在程序中有Node的一个额外的子类FileServer,它也应该接收方法的一个副本。因此,表示重构的规则应该提供一个额外的机制,其中涉及的子类数量以及它们的相邻节点可以变化:再次需要一个更抽象的规则,可以实例化为具有所需数量的子类的具体版本,并创建相应数量的方法体副本。因此,我们引入了第二种机制:克隆,它允许一个人复制规则的一部分所需的次数。应用规则现在变成了一个两阶段的过程。对于下推方法重构,这意味着在匹配Node类和originate方法之后,确定Node有两个子类(通过克隆),并且语法树包含对方法send的调用(通过扩展)。4用于重构的需要一些额外的符号来定义前一节的概念。首先,我们用变量扩展了类型图,然后定义了本文提出的主要概念:模式和规则模式。在接下来的两节中,我们将从规则模式的概念开始,定义4.1[扩展类型图]我们将类型图扩展为用X参数表示变量X(X)的类型图变量和一个我是X将X的图形变量连接到X的节点类型的tenchmark类型此外,我们固定一个基数变量的字母表Y,与X不相交。对于这篇文章,我们假设X包含给定的变量β,X′的tenumbertypes调用、名称、根、类型,Y是基数变量u、w、x、y和z。扩展的类型图如图所示。3 .第三章。定义4.2[模式]一个模式是一个图G,它被标记在X上,到-与一个局部函数G:G变换−−·Y一个带标号的态射m:G→H在模式G和H之间是一个模式态射,如果对所有节点n∈Dom ( #G ) , mstec ( n ) ∈Dom ( #H ) 且 nd#G ( n ) =#H ( mstec(n)).定义4.3[规则模式]规则模式是规则s=(L←I→R),其中L、I和R是模式,态射是模式态射。我们要求一个规则方案是封闭的;这意味着X→Y中出现在R中的每个变量也必须出现在LB. Hoffmann等理论计算机科学电子笔记152(2006)5359名称根名称类型调用fpC我MlmBeePu不tmMCV一个u一Eeval ap例4.4[一个重构的规则方案]图4中的规则方案pdm4定义了完全通用的下推方法重构这里,图变量β表示一个任意的方法体,其右侧的注释x方法主体和其他实体之间的关系(例如,存在对方法的调用或方法引用某些名称的事实)由β标记节点的触角表示。当该规则应用于具体的程序图时,图变量β和基数变量x,y,u,w,z被绑定(分别绑定到方法体和一组自然数)。前者决定如何扩展标签为β的节点,后者决定每个基数变量需要多少个指定给它的规则部分的副本(克隆)(例如,x的值决定子类的数量)。在图4中,基数变量u、w、y、z只出现一次(对应的节点属于界面,所以它们在左边的出现与在右边的出现是相同的)。最后,请注意,克隆被视为比扩展更抽象的操作:图变量的出现,如β,可以被克隆,但图变量的扩展版本不包含可克隆节点。规则方案s的应用分为三个步骤:(i) 方案中具有相关基数的节点根据多重性函数μ进行克隆。(ii) 克隆方案中的图变量根据一个替换γ展开为图。(iii) 这样得到的规则实例t=(sµ)γ是一个普通的规则,它通过变换GtH根据Def应用。2.2.规则方案的克隆、扩展和应用在下面的子节4.1到4.3中定义。图三. 扩展的打字机60B. Hoffmann等理论计算机科学电子笔记152(2006)53yy1CmBli根21CBxLMi根2pdm=CxCxx类型姓名电话类型名字名字名字电话CuP wV yM zC uP wV yM z4 5 6 74 5 6 74.1克隆见图4。下推方法重构的规则模式PDM克隆根据分配给基数变量的多重性将节点与定义的基数相乘。在克隆之后,模式的基数函数被完全定义,并且模式被称为克隆的。其基数被定义且等于y∈Y的节点称为y-fold。定义4.5 [克隆]设G是一个模式。 基数variabley∈Y的主图是G的子图Gy,它由Gstec中的n个节点、它们的关联边和它们的相邻节点诱导而成,使得基数函数对于n∈G空间定义d,其中h#G(n)=0,如果#G(n)=y,且nd#G(n)=#G(n)y y否则,请执行以下操作。 边界图G0是Gy的离散子图,除了G的y重节点之外的所有节点。对于一些k0,k倍y克隆Gk通过以下方式获得图案G的去掉y-折叠节点及其关联边,并将Gy的k个不相交副本粘到G中相应的边界节点上.引理4.6(克隆是可交换的)(G k)m=(G m)k。6x y y x引理4.6允许定义克隆操作。定义4.7 [克隆]考虑一个包含集合{y1,.,yn}的基数变量,并设μ:Y→ N是一个重数函数,其中μ(yi)= ki,其中1 ≤i≤ n。则模式G的μ-克隆是通过克隆序列获得的克隆模式GμGμ=(· · ·(Gk1)k2· · ·)kny1y2yn规则方案s=(L<$I→R)的μ-克隆sμ是通过克隆规则图L<$R并将每个克隆的边和节点关联到sμ中它在s中的原始部分所属的那部分来获得的。6Here,asinDef. 四、16、设备是可操作的,“符合标准”。3M3MB. Hoffmann等理论计算机科学电子笔记152(2006)53611CmBl我我根CC2 3姓名电话P M1 4pdmµ=5 6 5 6图五. 图2中的规则方案pdm的克隆方案pdmμ4例4.8[克隆]图4中下推方法重构pdm的克隆pdmµ,使用多重性函数µ,其中µ(x)= 2,µ(y)=µ(u)= 0,µ(z)=µ(w)= 1,如图5所示。4.2膨胀扩展是通过图形来扩展克隆模式中的变量节点。如果y是由X轴确定的,则节点被定性为变量。特别地,Gstecx表示模式G中可变节点的子集,其中x∈X为符号。展开后的克隆图不含变量,是图上的普通图。图变量的扩展基于一种简单的图变换形式,称为句柄替换。定义4.9[句柄]图变量x∈X的句柄的集合Hxcont_n使用n_de_H_stec={n0,n1, . . nk}和tentaclesH<$={e1, . . ,e,k}使得一个节点e,sayn0与x标记,并且通过恰好一个端点与每隔一个节点n1连接,对于k0. 节点n0是称为中心节点。 一个柄H的离散子图包含所有在Hstec中没有任何一个记为H。除了中心节点称为H的边界图,定义4.10[句柄替换]规则r=(L←I→R)over cloned模式是一个关于图的变量x∈X的处理规则I=L,如果R是展开的。如果L∈HX,我们说,通过句柄替换规则r,执行句柄替换。例4.11图6中的规则显示了语法树变量β的句柄替换规则。当在模式图上匹配时,它用规则右侧所示的语法树替换变量节点β4MCBBL我M我M根根CC2 3名字名字P呼叫呼叫MM62B. Hoffmann等理论计算机科学电子笔记152(2006)531B根骂人M3个P句柄替换应用于将相同规则应用于具有相同标签的所有变量节点,以便唯一地确定结果。为了实现这一点,这些变量节点的出现必须是同质的,以便单个规则适用于所有这些变量节点。2 2见图6。 一个适合图2中克隆方案pdmµ的5定义4.12[齐次模式]一个变量x在一个模式G中是齐次的,如果所有的变量nodesv∈Gstecxoccurasectorofhandles,且触角的数量和类型一个模式是齐次的,如果它的所有变量都是齐次的。句柄的替换是不连续的,因为变量的触角可能有相同的标签。例如,在一个示例中,用重数μJ(z)= 2克隆图4中的规则方案,产生类似于图5中的克隆方案,其中变量β具有两个标记调用的触角。然后,β的句柄替换规则可以因此,我们为模式配备了一个对应关系,以确保同名的不同变量的触角彼此之间具有一一对应的关系。定义4.13[直线模式]直线模式由同构模式G和G中触角上的等价关系G组成,称为对应,使得以下成立:(i) 一个可变结点的不同触角属于不同的等价类。(ii) 对于具有相同标签的不同变量节点v和vJ,每个tenchesofv satifieseeJ恰好是vJ的一个时间段eJ,所以eJ有相同的标签,并且其目标节点具有与e相同的标签和基数。同质性和直线性的概念也适用于具有基数的模式。Def的克隆操作4.5可以扩展,1BeEAPEC一M3个PB. Hoffmann等理论计算机科学电子笔记152(2006)5363yyX跟踪对应关系,并在克隆变量或其相邻节点时插入新的对应关系:• 对于主图Gy中的所有y重变结点,它们在Gk中的10重变结点的克隆相互对应.• Gy中的其他对应被转移到Gk中的Gy的每个副本。定义4.14【展开步骤】设G是一个直线模式,r =(L<$I→R)是一个展开规则。则H是x在G中通过r的扩展步骤,记为G<$rH,如果存在将r应用于所有的ndev∈G都表示它们的matesrpetG,即. ,当ver态射m,mJ:L→Gmapatacleen∈L<$on以区分G<$中的元素e和eJ,分别,则eeJ。替换将变量映射到句柄替换规则上,这些规则可以应用于克隆模式中出现的变量。定义4.15[代换]代换是一个函数γ,它将图变量X映射到它们的一个展开规则上。 如果规则γ(x)匹配图G中每个名为x的变量节点,则称置换γ适合图G,对所有x∈X.变量的句柄仅在其边界节点中重叠。这使得扩展步骤彼此并行独立,使得这些步骤产生唯一的结果,而与它们的应用顺序无关定义4.16[扩展]设γ是适合克隆模式G的替换。图G的γ-展开式是通过展开步骤得到的图GγG=G0<$γ(x1)G1<$γ(y2)··<$γ(yn)Gn=Gγx1x2xn其中r e{x1,x2, . . . ,xn}X秒是出现在G中的图变量的集合。扩展可以提升到克隆规则t=(L<$I→R),方法是根据γ扩展规则图L<$R,并将插入(L<$R)γ中的每个节点和边与规则tγ中插入它的变量所属的部分相关联。例4.17[展开]图6中的句柄替换规则定义了运行示例的γ(β当将此规则应用于pdmµ三次时,所得到的扩展规则(pdmµ)γ是图1中的规则二、4.3图转换与实例化我们现在可以定义带变量的图变换64B. Hoffmann等理论计算机科学电子笔记152(2006)53定义4.18[带变量的图变换]设G是一个图,s=(L←I→R)是一个直规则方案。 则s将G变换为图H,记为G$sH,如果存在重数函数μ,和适合sμ的替换γ,使得对于规则t=(sμ)γ,G≠tH。第4.18章不能动手我们不能生成规则方案s的克隆和扩展,直到我们找到一个实例t=(sµ)γ,该实例适用于将被变换的图G因为,每个规则方案都有无限多的克隆和扩展。相反,变换必须从s的核的匹配开始(没有任何相乘的和可变的节点),并通过将多个节点和图变量与图匹配来增量地确定合适的多重性和替换。例4.19[应用pdm]图4所示的规则方案pdm可以匹配如下:• 匹配内核节点1、2和中间的B节点。• 匹配节点1的所有子类,定义µ(x)和节点2的克隆• 匹配方法体,从B节点开始,沿着所有的边,在代表类型、名称和方法的节点处停止,这些节点被叶E节点访问;这定义了γ(β),以及变量u、w、y和z的多重性。• 克隆展开γ(β)和B节点µ(x)次。一旦选择了要推送的类和方法(节点1和2),匹配就是确定性的。克隆和扩展允许另一种重构,即内联方法,它也可以用一个re模式来描述例4.20[内联方法重构]图7中的规则模式im指定了内联方法重构,即用方法体的副本替换方法该方法的每个参数都被转换为局部变量,该局部变量被赋予调用的实际参数的值。 赋值由一个E-节点表示,该E -节点由一个u边连接到一个V型节点,并由一个val边连接到表示赋值的r-值的节点。最后,方法体被复制,对形参的引用被变量的引用替换。然后删除原始方法(悬空条件确保不存在对该方法的其他调用)。需要一个基数变量x来表示参数的数量。其他三个(u、w和y)代表方法体中使用的方法、变量和类型。注意,β的展开式与下推法中的含义相同。图中的替代γ6适合于克隆方案imv,但仅当B. Hoffmann等理论计算机科学电子笔记152(2006)53651BeBem Vx tuExeVal2Ex名字B根类型电话名字4Cu5Mw6Vy3Cxim=4见图7。 用于内联方法重构的规则模式im重数函数ν定义为ν(u)= 0且ν(w)=ν(y)+ν(x)= 1;否则,β在imν中出现的触角太少或太多5结论通过克隆和扩展实现规则模式的实例化,使图变换更具表现力。这对于以声明的方式描述重构操作是必不可少的。在本文中,作者加入了他们早期的工作:这里提出的规则方案比[18]中提出的规则方案简单得多,克隆与扩展比[9]中更紧密地结合在一起。而且,实例化现在在双推出方法[5]中产生规则,这是一种具有丰富理论的图变换的标准方法的集合节点PROGRES[16]和Fujaba对应于克隆单个节点。在模型转换语言GMORPH[17]中,提供了一个更通用的克隆概念,它使用与克隆变量的主图相对应的嵌套集合容器。然而,这两种替代方案都缺乏与图变量相结合的可能性,从而可以表达像下推方法和内联方法这样的重构操作,其中需要具有不同数量触角的图变量。在我们的案例研究[19]中,[7]列表中的一组有代表性的基本重构操作可以用使用这些概念的规则方案和最小的控制流程来描述。在[12]中,超边(具有固定数量触角的节点)首次被用作图形变量。在 本文中,我们没有考虑所有与重构相关的图转换概念。禁止子图和负应用条件有1BeEAPCMFPL2Ex3Cx不Px名字B根类型电话名字Cu5 MW6 Vy66B. Hoffmann等理论计算机科学电子笔记152(2006)53已经在[10]中讨论过了;一些其他的概念仍然应该被添加到形式主义中。属性可以用来确定数值或字符串,通过表达式(属性)变量,根据一些给定的数据类型进行评估[13]。在重构规则中明确定义变量的可能替换集也是必要的。形状文法[4]是一个很有前途的候选者。最后,为了描述复杂的重构策略,需要命名和参数化重构操作,并控制它们的应用方式。图编程语言Diaplan[8]应提供所有这些概念。引用[1] P. Bottoni,F. Parisi-Presicce和G.坦策将重构与分布式图形转换集成。In M. Nagl等人,编辑,Applications of Graph Transformation with Industrial Relevance ( AGTIVESpringer ,2004.[2] A. Corradini,H.埃里希大学Montanari,and J. Padberg.类型图文法范畴及其与导子范畴的附属在Cuny et al.[3],第56[3] J. Cuny等人,编辑。Graph Grammars and Their Application to Computer Science,《计算机科学讲义》第1073Springer,1996年。[4] F. 德鲁韦斯湾Ho Jummann,和M.米纳斯用于图表转换的上下文开发形状Machine Graphics and Vision,12(1):117-132,2003.[5] H.埃里希图文法的代数理论导论。在V.Claus等人的著作中,编辑,Graph Grammars and TheirApplication to Computer Science and Biology,计算机科学讲义第73期,第1-69页。斯普林格,1979年。[6] H. Ehrig等人,编辑。2ndSpringer,2004.[7] M.福勒重构-改进现有代码的设计。对象技术系列。Addison-Wesley,Reading,MA,1999年。[8] B.霍曼。形状嵌套图变换的抽象与控制。Fundamenta Informaticae,58(1):39-56,2003.[9] B.霍曼。带变量的图形变换。在H.- J. Kreowski等人,编辑,Formal Methods in Software andSystem Modeling,Volume 3393 ofLecture Notes in Computer Science,pages 101施普林格,2005年。[10] T. Mens,S. Demeyer和D. 詹森斯 形式化行为保持转换。 以. Corradini等人,编辑,FirstInternational Conference on Graph Transformation(ICGT 施普林格,2002年。[11] W. F.奥普代克重构面向对象的框架。博士论文,伊利诺伊大学,厄巴纳-香槟,伊利诺伊州,美国,1992年[12] D. Plump和A. 哈贝尔 图形统一和匹配。 在Cuny等人[3],第75[13] D. Plump和S.斯坦纳特面向图形算法的图形程序。在Ehrig等人[6],第128[14] D.罗伯茨重构的实际分析。博士论文,伊利诺伊大学香槟分校,1999年。B. Hoffmann等理论计算机科学电子笔记152(2006)5367[15] D. Roberts,J. Brant,and R.约翰逊 Smalltalk的重构工具。 对象系统的理论与实践,3(4):253[16] A. Schur?r,A. W inter,andA. Zund or f. 该项目是一个项目:语言和语言能力。In G.恩格斯等人,编辑,图形语法和计算的图形变换手册。卷第二章:应用程序、语言和工具,第13章,第487-550页。世界科学,新加坡,1999年。[17] S.森德尔结合生成和图形转换技术进行模型转换:有效联盟。在MDA背景下的生成技术研讨会上,OOPSLA 2003会议记录,2003年。[18] N. van Eetvelde和D.詹森斯 为重构扩展图重写。 在Ehrig等人[6],第399[19] N. Van Eetvelde和D.詹森斯重构为图形转换。技术报告,安特卫普大学,2005年2月。UAWIS/INF 2005/04。
下载后可阅读完整内容,剩余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直接复制
信息提交成功