没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子札记94(2004)81-91www.elsevier.com/locate/entcs逆向工程中Daniel L. Moise1 Kenny Wong2阿尔伯塔大学计算机科学系加拿大埃德蒙顿摘要在采用标准格式(如GXL)为逆向工程工具交换工件图之后,下一个逻辑步骤是为图中包含的信息定义适当的模式。不同的研究者已经开发了图式,但在实践中,仍然很难选择一个现有的。通常,研究人员最终需要为他们的工具或案例研究的细节实现新的模式。在本文中,我们讨论了一个潜在的方案集成模式,目的是提高逆向工程工具之间的互操作性。保留字:集成模式,元模式,逆向工程,模式1介绍软件系统正变得越来越复杂,维护、理解和记录它们的需求也在增加。逆向工程在这些挑战的解决方案中起着重要的作用,研究人员一直在进行案例研究,以评估他们的逆向工程工具的能力。通常,逆向工程工具使用事实提取器来获取有关源代码的信息。这些事实已经以不同的格式表示,例如Rigi标准格式(RSF)[16],元组属性语言(TA)[8],FAMIX [20],图形交换格式(GraX)[4],XML元数据1电子邮件:moise@cs.ualberta.ca2电子邮件:kenw@cs.ualberta.ca1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.01.00282D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-91交换(XMI)[17]或关系数据库[19]。逆向工程研究社区花了很长时间才采用一种格式来在逆向工程工具之间交换事实。图形交换语言(GXL)[7],采用的标准交换格式,以可扩展标记语言(XML)兼容的格式维护图形[22]。在采用这样一种形式之后,下一个合乎逻辑的步骤是开发元模型或模式,从而对各种图的节点和弧进行更好的概念建模。模式用于提供有关图中使用的节点、弧和属性的类型以及它们如何相互关联的信息,有时还有额外的限制。在大多数情况下,术语在软件系统的逆向工程中,早期的一个步骤涉及定义模式并从源代码中提取工件。这两项任务是相互依赖的,并且是迭代的。随着对源代码的理解越来越好通常,现有的模式可能不适合正在分析的特定软件或正在使用的工具。因此,模式重用不是一个简单的任务,新模式的激增也随之而来。在逆向工程中使用各种模式。加拿大贝尔公司的研究人员开发了一种实体/关系模式,称为Datrix模式,它可以表示从C、C++或Java程序中提取的抽象语法树[2,9]。Ferenc和Besz'edes提出了一个用于C++的模块化模式,称为Columbus Schema,用于Columbus工具[5]。Dagstuhl中间模型(DMM)是由一组研究人员开发的,在Dagstuhl研讨会上关于再工程工具的互操作性[21]。DMM结合了从几个现有模型中选择的想法。我们开发了一个基于DMM的C/C++模式,用于使用Rigi逆向工程工具的工业案例研究[15]。为建立C/C++标准模式做了一些研究工作。 Ferenc等人 探索了为C/C++构建标准模式在抽象语法树级别[6]。分析了三类问题在Datrix和Columbus模式中:词汇,句法和语义结构。作者得出的结论是,为C/C++创建一个标准模式是一个复杂的问题,它会产生许多困难。Dean和Holt提出了一种结合两种模式来创建事实提取器的技术[3]。尽管现有的C++模式是可用的,但当我们开始进行逆向工程案例研究时,由于各种原因(例如,由于我们自己的工具的限制,以导入信息交流,D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-9183根据某些模式,或者由于缺少感兴趣的元素)。因此,我们必须为C/C++开发一个新的模式,以便与Rigi逆向工程工具一起使用。最好,我们宁愿花更多的时间在软件系统的分析上,而不是写一个事实提取器及其模式。我们在第2节中讨论了集成现有模式的挑战和好处。第4节详细描述了一个集成两个给定模式的示例。第3节描述了反向工程领域中的模式结构。第5节介绍了我们对这项工作的结论,提出了未来研究的方向2集成模式本节概述了与逆向工程中的模式集成相关的问题。2.1问题通过更容易的信息交换和方法来整合来自不同互补工具的数据,用户可以为手头的任务形成最佳工具除了具有通用的交换格式之外,还必须确保所交换的信息符合通用的、商定的语义。集成模式的想法很自然,但它是一个重大的挑战。在逆向工程领域中有许多模式。由于它们是独立开发的,因此它们具有不同的结构,并对实体、关系或属性使用不同的术语。其中一些差异标识相同的东西,但用另一种语言表达。因此,我们需要识别这些模式之间逻辑上的公共部分。这个过程称为模式匹配,它试图在语义上相互匹配的两个模式的元素之间产生映射。在此之后,我们可以将两个模式的集成视为两个模式的联合,只考虑在模式匹配过程中发现的一次元素。2.2挑战集成模式是一项非常困难的任务。 我们列出了一些问题。• 不同的编程语言:编程语言之间存在许多差异,例如,Java和COBOL的区别每一种编程语言都有其自身的特点,这就带来了语义上的差异。84D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-91• 抽象的不同层次存在来自语句级细节、高级结构和应用程序域级约束的各种事实。• 多种逆向工程工具:有些模式与逆向工程工具的建模限制有关例如,在Rigi中,所有节点类型都具有相同的属性集2.3相关工作模式集成问题由来已久,但仍未完全解决。 自20世纪80年代初以来,它一直在数据库领域进行研究[1]。此外,在人工智能领域,当将独立开发的本体集成到单个本体中时,也会发现这个问题。Jin等人提出了一种在逆向工程工具之间实现透明互操作性的解决方案[11]。他们定义了一个特殊的适配器来处理领域本体,它在概念上统一地翻译和过滤查询,使集成成为可能。这类似于为所有逆向工程工具创建一个通用的中间语言本体的综合性越强,就越有可能获得良好的集成。Rahm和Bernstein对现有的所有模式匹配方法进行了调查[18]。他们根据比赛的不同标准进行了分类。他们发布了一种用于一般模式匹配的算法,称为Cupid,其中包括基于语言的自动匹配[14]。丘比特是基于图式的元素,以及图式的结构。Madhavan等人提出了一种新的模式匹配方法[13]。这种方法的思想是从过去的模式匹配中提取知识,并应用这些知识来匹配新的模式。模式和映射被不断地添加到映射知识库3逆向工程3.1模式分类模式可以根据抽象级别(模式中表示哪些事实)进行分类:低级模式(例如,Datrix)、中间层架构(例如,Columbus、CPPDM和Datrix)和高级模式。Jin等人提出了两个有趣的分类[10]. 为了对模式进行分类,他们考虑了模式的定义(模式是如何定义的,隐式的还是显式的)和模式的位置(模式是在哪里定义的,内部的还是外部的)。D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-9185编程电平编程语言的类型面向过程对象CPascalC++编程JavaFortran. . .Smalltalk. . .标记语言ASPCF. . .JSP. . .应用水平(本体论)优先活动领域$会计$CRMSCM. . .3.2分类模式然而,为了理解不同类型的模式的重叠、冗余和目的,我们需要一些组织结构来帮助对模式进行分类。一种想法是将模式分为两大类:专注于编程领域的模式和专注于应用程序领域的模式。这些类别中的每一个都可以进一步分解。例如,编程领域可以分为过程语言、面向对象语言、标记语言等。与编程领域类似,应用程序领域可以分解为会计、客户关系管理(CRM)、供应链管理(SCM)等应用程序。参见图1。Fig. 1. 分类模式子类别包含适当的模式或集成模式。例如,在面向对象的子类别中,驻留在这里的模式取决于实际上从Java、C++等现有模式中产生的内容,和处理这些语言的工具此外,对组织结构的一种解释是,(子)类别是直接存在于其中的元图式。例如,面向对象的范畴可以被认为是一个元模式,一个特殊的面向对象的语言模式可以从这个元模式中“实例化”。在某种意义上,组织结构形成了一个元架构层次。86D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-91isMethodOf法类定义者注释源文件宏定义源文件宏扩展源文件枚举文字源文件枚举类型源文件类源文件字段源文件方法源文件例程源文件变量源文件全局变量源文件常量源文件继承自类ClassisOfType字段枚举类型变量枚举类型全局变量枚举类型常量枚举类型字段模板参数变量模板参数字段类型变量类型全局变量类型常量类型字段类变量类全局变量类常量类使用方法宏扩展例程宏扩展方法枚举文字例程枚举文字类模板参数方法变量常规变量方法全局变量常规全局变量方法常量常规常量4集成两个模式本节提供了一个集成两个模式的示例,这两个模式都是针对C/C++元素的。其中一种是加拿大阿尔伯塔大学开发的CPPDM,另一种是渥太华大学开发的DMM。首先,我们介绍了这两个模式,然后我们提出了他们的集成。4.1Rigi C/C++领域模型(CPPDM)Rigi C/C++领域模型(CPPDM)是为了完成逆向工程的案例研究而开发的[15]。这个领域模型的灵感来自DMM的一些元素。一般来说,CPPDM适用于任何用C/C++实现的软件系统的结构化事实。CPPDM的实体和关系如图2所示。isEnumLitOfEnumerationLiteral枚举类型返回值模板参数方法包括SourceFileSourceFile调用isParameterOf类 型TypeClassClassisExpansionOf方法例程方法例程可变常规变量方法Islam Of类Class常规类hasField类字段类型字段方法方法例程方法例程宏扩展宏定义图二. 关系类型该域模型包含了15种节点类型和这些节点类型之间的58种可能的弧类型。CPPDM 中 的 节 点 类 型 有 : SourceFile 、 Comment 、 MacroDefinition 、MacroExpansion、GlobalVari-able、Constant、Variable、EnumeratedType 、EnumerationLiteral、Type 、Class 、Method、Field、Routine和TemplateParameter。CPPDM中每个实体的属性集如表1所示。D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-9187表1节点的可能属性4.2Dagstuhl中间模型(DMM)图3显示了DMM版本0.006 [12]。DMM旨在表示过程程序以及面向对象软件的4.3CPPDM与DMM的我们提出了一套步骤,集成两个模式,使用CPPDM和DMM为例。作为输入,我们有两个模式,作为输出,我们需要一个集成的模式,以及用于数据集成的相关规则。本质上,我们在两个模式中出现的实体、关系和属性上创建等价关系,并基于所识别的等价类形成新的模式。• 步骤1:实体这一步查找两个模式之间的公共实体映射可以基于语法、同义词、下义词、缩写或根据用户的建议来完成(特别是如果涉及到区分语义我们引入以下符号:如果实体E1映射到实体E2,则E1≠E2。该操作是可交换的和结合的。在此基础上,建立了实体间的等价关系。在通过我们的映射,我们获得了来自CPPDM的实体和来自DMM的实体之间的以下等价物(在操作符的左侧是来自CPPDM的实体,并且在操作符的右侧是来自DMM的实体):SourceFile_SourceFile,Comment_Comment,GlobalVariable_Variable,MacroDefinition_MacroDefinition,MacroExpansion_MacroExpansion,Constant_Variable,Variable_Variable,EnumeratedType_EnumeratedType,EnumeratedLiteral_EnumeratedLiteral,Type_Type_Type,Routine_Routine,节点类型可能属性源文件注释宏定义宏扩展枚举文字枚举类型模板参数类型类字段方法例程变量全局变量恒定文件,路径文件,行eno,位置,结束行eno,结束位置文件,lineno,位置文件,lineno,位置文件,lineno,位置文件,lineno,位置,模板file,lineno,position,access,real typefile,lineno,position,access,binding,real type,realtype arg file,lineno,position,real type,real type argfile,lineno,position,realtype文件,lineno,位置,real typefile,lineno,position,real type88D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-91名称定义名称可分辨宏参数名称宏定义名称SourceUnitstartLinestartCharendLineendChar源部件路径*SourceFile**可见性ModelElement {abstract}ModelRelationship {abstract}isExpansionOf宣言参考*宏扩展评论*SourceObject层次结构SourceObject {abstract}描述*宣布限定0..十... 1名称ModelObject {abstract}isSubpackageOf调用我的天0.. 1进口包*StructuralElement(抽象)*访问*BehaviouralElement(抽象)*0..1在条款中定义isOfType0..免费WiFi1. *hasValue0.. 10.. 1可变isParameter Of*方法isConstructorisDestructorisAbstractisDynamicallyBoundisOverreadableModelObject层次结构CollectionType大小isEnumerationLiteralOf枚举文字FormalParameter*positionStructuredType* *isFieldOf领域类*isSubclassable0.. 1isMethodOf* *继承自图三. Dagstuhl中间模型版本0.006方法-方法,字段-字段,类-类。 基于结合性质,我们得到如下等价类:{GlobalVariable,Constant,Variable}.• 步骤2:构建实体给定模式的实体之间的映射,我们标记等价类以获得结果模式的实体常规值ExecutableValue类型枚举类型包括D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-9189在对CPPDM和DMM应用该步骤之后,我们获得了新模式的以下实体:SourceFile 、 Comment 、 MacroDefinition 、 MacroExpansion 、MacroArgument 、 Declaration 、 Reference 、 Package 、 Type 、EnumerationLiteral 、 EnumeratedType 、 Variable 、 Class 、 Field 、Method、Routine、FormalValue、ExecutableValue和TemplateParameter。• 步骤3:为实体创建集成模式的目的是使用它来集成来自不同事实提取器的例如,如果我们有一个包含C和Tcl元素的软件系统,我们可以使用适当的提取器分别提取每种语言的事实,并存储在两个不同的存储库中。每个存储库都符合其模式,分别针对C和Tcl。对于数据集成,我们必须维护将元素从初始模式映射到结果模式的规则。这些规则可能涉及从每个存储库中过滤数据,或者根据需要转换数据以符合新模式。这一步为实体上已识别的等价类构建这些规则。例如,对于标记为Variable的等价类{GlobalVariable,Constant,Variable},我们构建了两个规则,将Global-Variable和Constant实体统一到新的等价类。• 步骤4:映射和建立关系我们从新的模式中迭代地建立每对实体之间的关系对于实体E1和E2之间的关系(如果有的话),使用映射来获得关系上的一组等价类如果同一个等价类中的所有关系都有相同的方向,那么最终等价类将采取相同的方向。否则,等价类的方向将有一些用户指定的方向。请注意,我们必须添加映射关系的所有规则,包括关于方向的规则。标记等价类,并将它们添加为E1和E2之间的新关系• 步骤5:映射和构建属性为了完成新模式,我们必须根据实体和关系的初始模式中的属性映射和构建属性。映射过程与实体和关系本身的映射过程类似。我们提供了一个为新模式中的Class实体构建属性的示例。CPPDM类实体的属性是文件、行、位置和模板。对于DMM中的同一实体,是isSubclassable 。 新 模 式 中 Class 实 体 的 属 性 集 是 : file 、 lineno 、position、template和isSubclassable。90D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-915结论在本文中,我们概述了集成模式的逆向工程的需要,并说明了一个过程中集成两个给定的模式。作为未来的工作,需要更多的案例研究,以应用的过程中整合模式的逆向工程。此外,我们需要细化派生的转换规则及其与数据集成过程的关系。另一个需要是一种方法,进一步改变集成模式,以提高其重用一个特定的逆向工程的目的。引用[1] Batini角,M. Lenzerini和S. B. Navarrow,数据库模式集成方法的比较分析,ACM ComputingSurveys 18(1986),pp. 323-364.[2] Bell Canada Inc,Datrix(2003).URLhttp://www.iro.umontreal.ca/labs/gelo/datrix[3] 迪恩,T. R.,A. J.Malton和R. Holt,Union schemas as a basis for a C++ extractor,in:Working Conference on Reverse Engineering-WCRE 2001(Stuttgart,Germany),2001,pp.59-67.[4] Ebert,J.,B. Kullbach和A. Winter,GraX--一种用于再工程工具的交换格式,技术报告5-99,科布伦茨-兰道大学,信息学院,科布伦茨,德国(1999)。URLhttp://www.uni-koblenz.de/~ist/retrieve/RR-5-99.pdf[5] 费伦茨河 和A. Bes z'edes,C++的哥伦布模式数据交换,in:第六届欧洲软件维护和再工程会议-CSMR 2002(布达佩斯,匈牙利)(2002年),pp. 59比66[6] 费 伦 茨 河 , S. E. 西 姆 河 C. 霍 尔 特 河 Kos ch ke 和T.Gyim'ot hy, Toowa rdsastandardschemafor C/C++ , in : Working Conference on Reverse Engineering-WCRE 2001(Stuttgart,Germany),2001,pp. 49比58[7] GUPRO,图形交换语言(GXL)(2003年)。网址http://www.gupro.de/GXL[8] 霍尔特河C.的方法,TA简介:元组属性语言。(2002年)的报告。URLhttp://plg.uwaterloo.ca/~holt/papers/ta-intro.htm[9] 霍尔特河C.的方法,A. E.哈桑湾Lague,S. Lapierre和C. Leduc,Datrix C/C++/Java交换格式的E/R模式,在:2000年WCRE逆向工程工作会议(澳大利亚布里斯班),2000年,pp. 284-286。[10] Jin , D. , J. R. Cordy 和 T.R. 迪恩, 计划在哪 ? A taxonomy of patterns for softwareexchange , in : Tenth International Workshop on Program Comprehension-IWPC 2002(Paris,France),pp. 六十五比七十四[11] Jin , D. , J.R. Cordy 和 T. R. Dean , Transparent Reverse Engineering Tool Integrationusing a conceptual transaction adapter,第七届欧洲软件维护与再工程会议,2003年,意大利,Benevento。399-408[12] Lethbridge , T.C. 的 方 法 , The Dagstuhl middle model : An overview , in : FirstInternational Workshop on Meta-models and Schemas for Reverse Engineering-ateM2003(Victoria,BC,Canada),2003.D.L. Moise,K.黄文辉/《理论计算机科学电子笔记》94(2004)81-9191[13] Madhavan,J.,P. A. Bernstein,K. Chen,中国山核桃A. Halevy和P. Shenoy,基于语料库的模式匹配,第十八届国际人工智能联合会议-IJCAI 2003(墨西哥阿卡普尔科),2003年。[14] Madhavan,J., P. A. Bernstein和E. Rahm,Generic schema matching with Cupid,in:国际会议上非常大的数据库,2001年,页。49-58.[15] Moise,D.L. 和K.王志荣,逆向工程的产业经验,载于:第十届逆向工程工作,2003年,页。275-284。[16] Müller,H. 一、M. A. Orgun,S. R. Tilley和J. S. 吴文辉,子系统结构识别的逆向工程应用,软件维护杂志:研究与实践5(1993),pp. 181-204.[17] 对象管理组(OMG),XML元数据交换(XMI)(2003)。网址http://www.omg.org/technology/documents/formal/xmi.htm[18] Rahm,E.和p. A. Bernstein,A survey of approaches to automatic schema matching,International Journal on Very Large Data Bases10(2001),pp.334-350[19] Sneed , H. M. 和 T. Dombovari , Comprehensive , distributed , object-oriented softwaresystem a report from the field,in:International Workshop on Program Comprehensive(IWPC)(1999),pp. 218-225[20] 伯尔尼大学,Famix(2003年)。URLhttp://www.iam.unibe.ch/~scg/Archive/famoos/FAMIX[21] 渥太华大学,Dagshtuhl中间模型(DMM)(2003年)。网址http://scgwiki.iam.unibe.ch:8080/Exchange/2[22] 万维网(W3C),可扩展标记语言(XML)(2003)。网址http://www.w3.org/XML
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多传感器数据融合手册:国外原版技术指南
- MyEclipse快捷键大全,提升编程效率
- 从零开始的编程学习:Linux汇编语言入门
- EJB3.0实例教程:从入门到精通
- 深入理解jQuery源码:解析与分析
- MMC-1电机控制ASSP芯片用户手册
- HS1101相对湿度传感器技术规格与应用
- Shell基础入门:权限管理与常用命令详解
- 2003年全国大学生电子设计竞赛:电压控制LC振荡器与宽带放大器
- Android手机用户代理(User Agent)详解与示例
- Java代码规范:提升软件质量和团队协作的关键
- 浙江电信移动业务接入与ISAG接口实战指南
- 电子密码锁设计:安全便捷的新型锁具
- NavTech SDAL格式规范1.7版:车辆导航数据标准
- Surfer8中文入门手册:绘制等高线与克服语言障碍
- 排序算法全解析:冒泡、选择、插入、Shell、快速排序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功