没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记137(2005)57-64www.elsevier.com/locate/entcs利用元模型转换对软件演化Tudor G ırba都铎王朝2,4瑞士伯尔尼大学软件组合小组Jean-Marie Favre法国格勒诺布尔大学LSR-IMAG实验室St'ephaneDucasse1,4瑞士伯尔尼大学软件组合小组摘要从不同的角度理解软件系统是如何进化的是有用的:逆向工程,经验研究等。为了有效的理解,我们需要一个明确的元模型。我们介绍了Hismo,一个以历史概念为中心的元模型,我们展示了如何我们可以从快照元模型中获得它。基于我们在开发Hismo逆向工程系统的经验,我们展示了如何将快照元模型转换为历史元模型。关键词:逆向工程,软件演化,软件历史,模型驱动工程,MDA,元模型1电子邮件:ducasse@iam.unibe.ch2 电子邮件地址:girba@iam.unibe.ch3Ema il:jean-marie.favr e@ ima g. fr4Ducasse和G irba非常感谢瑞士国家科学基金会对“软件分解和组合的工具和技术”项目 ( SNF 项 目 编 号 2000-067855.02 , 2002 年 10 月 至 2003 年 9 月 ) 2004 ) 和 620-066077,9月2002年-1571-0661 © 2005 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2005.07.00558T. Gürba等人理论计算机科学电子笔记137(2005)571引言在20世纪70年代,人们越来越清楚地认识到,跟踪软件的发展是很重要的,至少对于非常实用的目的来说是这样的,比如撤消最后的修改。早期的版本控制系统,如SCCS,使得记录软件产品的连续版本成为可能。这导致了基于文本的delta算法。还添加了一些基本服务,以便对信息进行建模,例如谁更改了文件以及为什么更改。然而,只有非常基本的模型用于表示这些信息虽然版本控制系统能够独立地记录每个源文件的历史,但配置管理系统(CMS)试图将软件产品的历史记录为版本化源文件的集合。在80年代和90年代,对配置管理的研究非常活跃建模和分析软件演化的重要性然而,直到最近几年,广泛的研究才花在利用版本控制存储库中的丰富信息上虽然可以找到特定文件的两个版本之间更改了哪些特定代码行,但这导致了太多的两个详细信息,而不是真正有用的。然而,大多数的方法开发到目前为止,不依赖于一个明确的Meta模型的演变分析,不便于比较不同的演变。已经提出了各种方法来分析软件演化的不同方面[1,2,3,4,8,12,13,14,17,18,19,20,21]。这些方法中的每一种通常只关注软件演化的一些特征(例如,哪些部分变化最大,在特定部分中发生了什么样的变化等),并且不依赖于显式Meta模型。在这种情况下,很难理解模型到底指的是什么。缺乏明确的元模型使得比较和集成工具变得困难,即使它们提供相似但不同或互补的结果。作者们已经建立了一个以历史概念为中心的明确的元模型[6]。所提出的元模型的名称是Hismo。我们在一个名为Van的工具中实现了Hismo,该工具构建在Moose再工程环境之上[7]。我们使用Hismo来表征软件的演变,并在许多情况下进行了验证,以进行逆向工程[9,10,11,16]。在我们的实现中,Hismo基于FAMIX元模型[5]。八月2006年)。T. Gürba等人理论计算机科学电子笔记137(2005)5759然而,历史的概念并不依赖于FAMIX,该方法也可以应用于其他元模型。换句话说,从概念上看,Hismo可以被看作是一个元模型转换,将快照元模型转换为历史元模型。本文探讨了这一想法,考虑从模型驱动(逆向)工程的角度来看,进化分析的问题。在下一节中,我们简要介绍了Hismo中的概念,在第3节中,我们描述了获得Hismo所需的转换,在结束之前,我们讨论了我们的方法。2 Hismo in a NutshellFig. 1.历史与版本的关系。Hismo元模型基于历史和版本的明确概念。由于这些概念是通用的,它们必须应用于特定的实体,例如包,类,方法或与我们想要研究的软件相关的任何实体,并且拥有版本是有意义的。图1显示了应用于包和类的Hismo。在图中,我们还展示了我们的元模型和演化矩阵之间的关系[14]。在图的下半部分,我们表示两个演化矩阵,其中每个单元格表示一个ClassVersion,每个列表示PackageVersions。60T. Gürba等人理论计算机科学电子笔记137(2005)57图二、转换快照实体以获取作为版本集合的历史记录,并派生历史记录属性。我们把历史定义为一系列版本。因此,演化矩阵中的每一行代表一个ClassHistory(左矩阵)。此外,整个矩阵实际上是由PackageVersions(右矩阵)形成的一条线,这意味着整个矩阵可以被视为PackageHistory(左矩阵)。 在图的右侧,我们看到了版本实体之间的关系,而在图的左侧,我们显示了历史对应物之间的关系。从图中我们可以看到,版本实体和历史实体之间存在并行性。每个版本实体具有对应的历史实体。此外,版本级别的关系(例如, 包具有许多 类 ) 在 历 史 级 别 具 有 对 应 者 ( 例 如 , PackageHistory 有 更 多 的ClassHistories)。此外,我们描述了如何生成基于快照元模型的Hismo。3将快照元模型转换为历史元模型在本节中,我们将讨论从快照模型(如FAMIX或UML)开始获取Hismo所需的转换。在图2中,我们详细展示了从快照元模型中的Class实体对应于ClassHistory-ClassVersion元模型。因此,ClassHistory是ClassVersions的序列该模型还允许我们根据结构特性定义历史特性。例如,将代码行数(number of lines of code,简写为“行数”)作为Class中的一个属性,我们可以导出历史记录中的最小或最大代码行数。在图中,我们展示了如何推导出代码行的演变,作为后续版本中代码行的绝对差异之和。T. Gürba等人理论计算机科学电子笔记137(2005)5761图三.通过转换快照元模型获得历史实体之间的关系。 生成的代码的粗体部分显示算法如何仅依赖于 快照实体及其关系。以这种方式获得的历史属性表征和总结了演化。使用这种测量方法可以精确地指出变化很大的地方,或者几乎没有变化的地方图3显示了我们如何从结构关系开始获得Meta模型实体之间的关系。在 图 的 左 侧 , 我 们 有 一 个 包 含 多 个 类 的 包 。 在 转 换 后 , 我 们 有PackageHistory作为包含多个ClassHistories。在图的右下角,我们看到Smalltalk中生成的代码,用于从PackageHistory开始获取ClassHistories。4讨论将历史作为第一类实体封装了结构实体的演变。在本文中,我们展示了一个导出历史属性的例子(例如,代码行的演变)基于结构属性(例如,代码行历史属性从特定的角度描述了实体的演化。这种方法允许人们像处理结构信息一样处理时间信息。在我们的例子中,我们有一个数字62T. Gürba等人理论计算机科学电子笔记137(2005)57描述了一个类中代码行的数量,我们有一个数字描述了一个ClassHistory中代码行的演变这种属性的缺点在于将大量数据压缩成有限的属性集。然而,我们使用了历史属性,并在不同的演化分析中展示了它们的有用性:描述系统中变化的出现方式[9];使用时间来改进设计规则的检测[16];可视化类层次结构的演化[11];检测变化模式[10]。在图3中,我们展示了一个示例,展示了如何实现从PackageHistory导航到ClassHistory的Smalltalk实现。以同样的方式,我们可以生成另一种语言的代码(例如,Java)。同样,在这个例子中,我们只讨论了包和类,但是以类似的方式,我们也可以为其他实体扩展这个图例如,在图4中,我们显示了在我们的工具中实现的Hismo的摘录。结构元模型由不同的实体组成(例如,方法)。这些实体由版本对应者(例如,方法-版本)并且版本被包含在历史中(例如,MethodHistory)。我们创建版本作为StructuralEntities的包装器,因为在版本中我们存储与历史的关系。因此,我们能够在历史的上下文中计算特定版本的属性。例如,有一个版本,我们可以导航到上一个或下一个版本。图四、Hismo的摘录及其与源代码元模型的关系我们没有表示所有的继承关系,以免影响图片的可读性T. Gürba等人理论计算机科学电子笔记137(2005)57635结论我们将历史定义为一系列版本,并简要介绍了Hismo作为以历史概念为中心的历史元模型。然后,我们认为我们可以从结构元模型开始获得Hismo,我们指定了所需的转换,并展示了如何基于转换实现Smalltalk(图3将来,我们希望在我们的环境中实现自动化转换,并通过在由工业案例工具生成的模型上使用我们的演化分析工具来验证该方法引用[1] T. Ball和S.真恶心 大范围的软件可视化。 IEEE计算机,第33-43页[2] A. Capiluppi。操作系统项目发展的模型。在Proceedings of the International Conferenceon Software Maintenance(ICSM 2003),第65-74页[3] A. 卡皮鲁皮,P. 拉戈, 和 M.莫里西奥 进化 的 可理解性 oss 项目第八届欧洲软件维护和再工程会议论文集(CSMR 2004),第58-66页,2004年。[4] C. Colberg,S. Kobourov,J. Nagra,J. Pitts,and K.万普勒一个基于图形的软件演化可视化系统。2003年ACM软件可视化研讨会论文集,第77-86页。ACM Press,2003.[5] S. Demeyer,S.Tichelaar和S.杜卡斯FAMIX 2.1-FAMOOS信息交换模型。技术报告,伯尔尼大学,2001年。[6] S. Ducasse,T. G.B. A.和J. - M. Favr e. 通过将其存储为一级实体,实现了对工作的改进。 在Workshop on Software Evolution Through Transformation(SETra 2004),第71-82页, 2 0 0 4 年。[7] S. Ducasse,T. Grb a,M. LANZA和S。 D em eyer.模式:一个可供选择的重新设计环境。在再造环境中。待评估,2004年。出现。[8] M.菲舍尔,M。Pinzger和H.胆从版本控制和错误跟踪系统填充发布历史数据库。 在软件维护国际会议(ICSM 2003)的会议记录中,第23-32页,9月。2003年。[9] T. G.b.a,S. 你好,还有M。 L AN ZA。叶思泰的《财富》:通过总结变化的演变,来总结E的创新。在ICSM '04(软件维护国际会议)的会议记录IEEE Computer Society Press,2004.[10] T. G.b.a,S. 杜克萨河。 Marinescu,anddD. 我很抱歉。 我不认为这是一个有价值的东西。第九届IEEE软件维护经验研究研讨会,2004年。[11] T. GrbandM. 拉恩扎。 V正在使用和清除类层次结构中的所有卷。In第五届面向对象再工程国际研讨会(WOOR 2004),2004年。[12] A. Hassan 和R. 霍尔特预测软件系统中的变更传播。第20届IEEE软件维护国际会议(ICSM'04),第284-293页。IEEE Computer Society Press,Sept. 2004年[13] M. 贾 扎 耶 里 关 于 建 筑 的 稳 定 性 和 进 化 。 在 Reliable Software Technlogies-Ada-Europe 2002中,第13-23页Springer Verlag,2002年。64T. Gürba等人理论计算机科学电子笔记137(2005)57[14] M. Lanza和S.杜卡斯使用软件可视化和软件度量的组合来理解软件演化。 在LMO2002的出版物中(LANG AES E E SETMOD`ELESA`OBJetss,第135-149页, 2 0 0 2 .[15] M. M. Lehman和L.贝拉迪程序演化伦敦学术出版社,1985年。[16] D. Raboughtiu,S. 你好T Grba,andR. Marinescu. 使用这种方法是为了提高设计人员的合法性。 在CSMR 2004(欧洲软件维护和再工程会议)的会议记录中,第223-232页,2004年。[17] C. M. B. Taylor和M.芒罗翻修塔。在第一届国际研讨会的论文集可视化软件的理解和分析,第43-50页。IEEE计算机学会,2002年。[18] F. Van Rysselberghe和S.德迈尔通过可视化的变化历史来研究软件演化信息。 第20届IEEE软件维护国际会议(ICSM 2004),2004年。出现。[19] J. Wu,R. Holt,和A. 哈森使用光谱仪探索软件进化。在第11届逆向工程工作会议论文集(WCRE 2004),第80- 8889. IEEE Computer Society Press,Nov. 2004年[20] X. Wu,中国茶条A.默里,M.- A. Storey和R.林登支持软件维护的逆向工程方法:版本控制知识提取。在第11届逆向工程工作会议(WCRE 2004)的会议记录中,第90IEEEComputer Society Press,Nov.2004年[21] T.作者:J. Diehl和A.泽勒挖掘版本历史以指导软件更改。第26届国际软件工程会议(ICSE2004),第563-572页
下载后可阅读完整内容,剩余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直接复制
信息提交成功