没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子札记94(2004)71-79www.elsevier.com/locate/entcs三层源代码建模安东尼·考克斯1达尔豪西大学计算机科学学院,加拿大,哈利法克斯查尔斯·克拉克2加拿大安大略省滑铁卢大学计算机科学学院摘要软件模型必须扮演许多角色:存储管理、信息表示和信息交换。 为特定角色量身定制的模型往往不适合,支持其他角色。出于这个原因,我们提倡多层次的方法,其中每个连续的层都扮演特定的角色。我们目前的经验与3层的实现表明,使用存储层降低了概念和交换表示模型的要求。此外,我们相信一个足够通用的存储层可以支持同时使用多个概念模型。在这种方法中,存储层及其相关的数据库是一种集成多个表示模型的支持技术保留字:源代码,存储模型,概念模型1介绍模型和模式提供了表达从软件系统中提取的信息所需的表示每个模型都受制于模型用户的需求和要建模的数据属性之间的紧张关系。模型感受到来自上方的压力,以支持各种用户应用程序,1电子邮件:amcox@cs.dal.ca2电子邮件:claclarke@plg.uwaterloo.ca1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.01.00372A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)从下面,在表达各种各样的潜在无关的信息。期望任何模型能够支持所有任务或表达所有信息是不合理的。此外,正如Blaha [2]所指出的,数据存储和数据交换等任务需要根本不同的模型。交换模型往往更小,更容易解析,并具有更高级别的模式。以XML为例作为一种元模型,XML允许为特定角色定义的模式的表达为了表达代码的语法结构,SrcML [13]和JavaML [1]都定义了符合XML的模式。然而,前者将源代码视为基础并将标记添加到代码中,而后者将模型视为基础并将代码作为属性添加到表示中。在这种情况下,XML以两种方式使用,以实现相同的目的,但支持更高级别的压力。SrcML旨在帮助程序员处理源代码,而JavaML旨在方便其他XML工具的操作GXL [7]是一种XML模式,可用于表达基于图的软件结构。 当用于此角色时,GXL与SrcML几乎没有关系或JavaML。在这种情况下,来自下层的压力,通过表达无关概念的愿望,表现出来。使问题更加复杂的是,XML被设计用来表达层次结构化的信息。然而,正如Cordy等人 [4]所指出的,源代码包含的信息,如源代码因素,不是分层结构的。同样,源代码虽然使用SGML和它的concur- struct解决了后一个问题,SGML仍然不能表示非层次信息。这种复杂性表明了一种元模型XML无法满足所有的表示需求。使用替代元模型,如Dagstuhl中间模型(DMM)[11],并不能提供解决方案,因为每个元模型都表现出设计选择导致的自身代表性限制。我们认为,解决这些问题的一个方法是支持多模式和表示模型。这种响应的关键是利用多层方法,其中每一层最小化其施加在较高层上的约束,并且使较高层与较低层施加的约束相分离。在本文中,详细介绍了一个三层的实现及其元素。A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)73模式1模式2...图式,图式存储层文本层Fig. 1. 一个软件2多层方法简单的一维模型在满足其要求的能力方面是有限的。作为回应,我们提倡多层次的方法,每一层都支持一个特定的角色。 虽然多层系统有许多配置,但我们提出了一个3层树结构系统,如图1所示。未来的研究可能会表明,额外的层是必要的,并且很可能具有较少的层将缺乏我们的系统提供的灵活性。该方法是基于源代码的,因为提取的信息必须从源代码或从源代码生成的模型中获得。所有信息在源代码中的共同起源表明,代码可用于整合和关联提取的信息。低级模型,如抽象语法树(AST),提供了一个替代的基础,但代价是丢失了只能从源文件中获得的信息。例如,AST由解析器生成,需要处理代码以准备解析。预处理指令(如宏)必须被删除,因此,AST不会表达这些指令。源代码的文本性质允许使用非结构化文本(类似于代码中的注释)来表示和集成不基于源代码的信息2.1文本层最低层是文本层。在大多数软件系统中,这一层很容易用ASCII或Unicode表示,然而,在历史悠久的和独特的系统中,这一层可以用EBCDIC或一些等效的编码来代替。同样,该层抽象了操作系统特定的功能,用于访问软件系统的文本元素。在大多数情况下,这一层是对现代计算机系统来说并不重要。该层的主要作用是将低级文本管理问题与高层分离,并为使用遗留软件提供支持,这些遗留软件是为替代操作系统和字符表示格式开发的。在我们目前的系统[5]中,文本层由几个简单的函数组成,74A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)将非打印和扩展ASCII字符转换为可存储的格式。补充例程在检索时将这些字符返回到其原始格式。这个临时接口是足够的,但在未来的工作中,我们希望开发一个更明确的接口。2.2存储层第2层是系统可扩展性的关键。存储和概念代码建模问题的解耦允许所有概念模式使用公共存储系统(数据库或存储库)。用户和工具可以使用存储系统提供的单个接口访问每个架构。该层还在各种模式中包含的不相关信息之间提供了一个桥梁。在我们的基于源代码的方法中,模式集成是通过将每个模式实体映射到源代码区域来实现的。存储层使用数据库或存储库系统实现。因此,存储模型是特定于数据库的。存储模型的示例包括关系模型、对象模型和文本模型。预计不会有重大的可扩展性问题,因为现代数据库通常用于存储千兆字节范围内的数据集为了支持多个概念和交换格式的表示,存储模型必须能够隐式地表示任何特定的模式。在Jin等人的术语中。[9],关于存储的概念模型,存储模型应该利用隐式的外部模式。 也就是说,存储模型必须具有足够的可表达性来表示每个模式所描述的元素,而不对这些元素施加约束。外部存储架构将检查架构一致性等任务委托给操作数据库的工具。这种可扩展性允许存储层存储多个模型,但防止查询工具利用模式的属性。在某种意义上,这种方法允许将概念级模式视为特定的数据库视图。众所周知,集成模式以及相应的模型是一项困难的任务[14]。正如Moise和Wong建议的那样,一种方法是开发包含所有要表示的信息的综合全局模式。虽然这在概念层面上是一个重大挑战,但在存储层面上要容易得多。数据库存储模型被设计为表示广泛的信息,因此更有希望组合模式。A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)752.3概念层概念层是表达提取的信息的地方。每个存储的模型都是特定概念模式的实例,该模式使用适当的元模型表示例如,源代码模型可以使用SrcML模式来表示,而SrcML模式本身是XML兼容的。由于每个模型都映射到一个公共存储层,因此可以使用的模型和模式的数量没有限制。工具可以使用较低层的接口访问任何信息。模式的唯一要求是它可以映射到存储层。还可以将存储层视为提供了额外的模式。 例如,如果存在不需要更高级概念模型的信息,或者不存在概念模型的信息,则可以使用存储模型直接存储该信息。这种做法是不可取的,因为存储模型接口通常缺乏一组强大的功能来操纵信息。为了解决这个问题,Paul和Prakash [15]开发了一种代数查询语言,专门用于操作源代码。3讨论在最近的研究中,关系数据库系统已经被检查用于存储XML兼容数据[6,17]。在这种方法中,XML数据存储在表中,并使用SQL进行访问。但是,为了抽象存储模型,工具使用了一种查询语言,如XML-QL,然后将其转换为适当的SQL查询。我们认为将每个模式的工具映射到存储层是将它们集成到单个环境中的有效技术。虽然在同一个数据库中存储多个XML模式是可能的,但在这方面还没有文献记载的研究。具体而言,需要进一步研究标准化的含义,以消除冗余。同样,当代码被分解为语法单元时,使用关系数据库来存储源代码是不高效的。XML必须使用子查询递归地重构代码段以访问每个子元素。在现代系统中,这种重建可以有效地执行,但不知道当多个低级别概念模型集成到单个数据库Jarzabek [8]在PQL(程序查询语言)的开发中,使用Prolog谓词作为存储模型,但指出“PQL查询是编写的,用概念性的程序设计模型来表示,这些模型独立于设计模型的实际存储方式。他将概念和76A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)- tag>var-dec/tag>>/item><项目>标签>类型/标签>
type =val><<<<><产品展示>
temp;/code>- tag>/var-dec/tag>>/item>图二、使用2级标记的多层建模示例存储模型是软件建模的多层方法的另一个例子。在Jupiter [5]中,我们正在探索一种多级标记方法。对于概念建模,使用了JavaML、SrcML和GXL中的传统标记。为了存储概念模型,使用了第二个较低级别的标记。第二级标记高度简化,专门针对MultiText结构化文本数据库系统[3]。虽然类似于XML风格的标记,但存储级标记在支持检索效率方面表现出几个关键的差异首先,多文本标记是基于索引的,以支持代数查询解决方案。关系被表示为索引对,并且没有语义约束。同样,除了关系之外,标记项是原子和无属性的标记,它们的位置没有强加的限制。概念模型和存储模型的相似性允许概念模型容易地映射到存储模型。图2提供了我们的两级标记方法的示例。在图中,C代码 使用存储标记 识别概念表示(SrcML)和源代码(C)的元素。使用存储模型的查询语言,可以检索SrcML标记的代码结构、未标记的源代码或SrcML标记项。应当注意,图2仅是说明性装置。预计任何通过查询语言与数据库接口的工具都将适当地删除标记标签,以避免压倒用户。当多个模型被集成时,在感兴趣的模型中,应该只显示感兴趣的特征的标记存 储 层 必 须 提 供 表 示 不 相 关 的 概 念 模 型 所 需 的 灵 活 性 。在Jupiter/MultiText中,这种灵活性是一种产品,存储模型的简单性。由于对存储标记项的位置和内容没有任何限制,因此可以将任何概念模型映射到任意一组源代码区域。该方法的主要局限性是需要显式映射概念模型A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)77到源代码中。然而,这种限制使得多个模型可以通过关注模型的派生来集成,尽管可能是间接的,从源代码。三层方法将概念模型堆叠在存储模型上。这种方法的扩展可能需要将概念层分成专注于特定概念的层例如,一个4层的实现可以有一个低级别的基于AST的层在存储层的顶部和下面的一个更高级别的基于DMM的层。4未来方向多层方法尚未对该领域产生重大影响逆向工程。虽然它们改善了可扩展性,但它们实现起来更复杂,并且没有得到很好的研究。目前还不清楚存储模型(如关系模型)将如何集成多个概念模型。需要对使用特定于存储的模型表示各种概念模型进行更多研究。类似地,众所周知,关系查询语言不太适合用于某些维护任务[10]。因此,还需要开发将抽象图形语言映射到数据库检索语言(如SQL)的技术。有一些关于信息交换的通用概念模型的发展的讨论[16],但这种讨论还没有在软件存储模型方面进行。现有的知识库系统包括关系型、面向对象型、文本型、逻辑型(Prolog)和定制型数据库系统。现在需要就表示概念模型的最合适的存储模型达成共识。多层方法的使用统一了逆向工程工具开发中的大部分工作。 信息抽取和表示的研究主要集中在模式层,而知识库系统的研究则主要集中在存储层。这些主题不应该被视为不相交的,而是作为更完整的分层实现方法的两个元素。多层方法通过减少对每层的要求来改进单元素模型分层设计允许较低层抽象存储和管理细节,减轻了概念模型上的较低层压力。此外,使用多个概念模型,通过允许每个模型专注于特定需求来分散来自上方的压力。成功应用这种方法的关键是使用一个通用的存储模型,该模型集成了多个更高级别的模型,其中每个模型可能符合不同的模式。当一个人不局限于一个单一的概念-78A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)在实际模式中,通过为每个提取的信息实体使用最合适的模型确认我们要感谢Andreas Winter的帮助和有益的评论。他的见解是非常有益的,并大大改善了这篇文章。引用[1] Badros,G.,JavaML:Java源代码的标记语言,计算机网络33(2000),pp. 159-177。[2] Blaha,M.,数据存储模型不同于数据交换模型,电子笔记理论计算机科学(2004)。[3] 克拉克角,澳-地G. Cormack 和F. Burkowski,An algebra for structured text search and aframework for its implementation,The Computer Journal38(1995),pp. 43比65[4] Cordy,J., K. Schneider , T. Dean和A. Malton,HSML :Design directed source code hotspots ,in:Ninth International Workshop on Program Comprehension,IEEE,Toronto,Canada,2001,pp. 145-154[5] Cox , A. 和 C. Clarke , Representing and Access Extracted Information , in : InternationalConference on Software Maintenance,IEEE,Florence,Italy,2001,pp. 12比21[6] 弗洛雷斯库湾和D. Kossman,使用RDBMS存储和查询XML数据,IEEE数据工程公告22(1999),pp.27-34.[7] 霍尔特河、杨A. Winter和A. 徐文,王晓刚,王晓刚,张晓刚,张晓刚。162-171。[8] Jarzabek,S.,用PQL设计可扩展的静态程序分析器,IEEE软件工程学报24(1998),pp. 197-215[9] Jin,D.,J. Cordy和T.迪恩,计划在哪?软件交换模式的分类,在:第十届国际程序理解研讨会,IEEE,巴黎,法国,2002年,pp. 六十五比七十四[10] Lange,C.,H. Sneed和A. Winter,Comparing graph-based program comprehension tools torelational database-based tools , in :International Conference on Software Maintenance ,IEEE,Florence,Italy,2001,pp. 209-218[11] 莱斯布里奇,T.,The dagstuhl middle model:An overview,Electronic Notes in TheoreticalComputer Science(2004).[12] Linton,M.,实现程序的关系视图,在:实用软件开发环境,ACM SIGSOFT,匹兹堡,宾夕法尼亚州,1984年,pp。132-140[13] Maletic,J.,M. Collard和A. Marcus,Source code files as structured documents,第十届国际程序理解研讨会,IEEE,巴黎,法国,2002年,pp.289-292.[14] Moise,D.和K.黄,逆向工程集成模式的问题,理论计算机科学电子笔记(2004)。[15] Paul , S. 和 A. Prakash , A query algebra for program databases , IEEE Transactions onSoftware Engineering22(1996),pp.202-217A.考克斯角Clarke / Electronic Notes in Theoretical Computer Science 94(2004)79[16] Sim,S.和R. Koschke,WoSEF:标准交换格式研讨会,软件工程注释26(2001),pp. 44-49号。[17] 张,C.,J. Naughton,D. DeWitt,Q. Luo和G. Lohman,在关系数据库管理系统中支持包含查询,在:数据管理国际会议,ACM-SIGMOD,圣巴巴拉,加利福尼亚州,2001年,第100页。425-436
下载后可阅读完整内容,剩余1页未读,立即下载
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![.pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 利用迪杰斯特拉算法的全国交通咨询系统设计与实现
- 全国交通咨询系统C++实现源码解析
- DFT与FFT应用:信号频谱分析实验
- MATLAB图论算法实现:最小费用最大流
- MATLAB常用命令完全指南
- 共创智慧灯杆数据运营公司——抢占5G市场
- 中山农情统计分析系统项目实施与管理策略
- XX省中小学智慧校园建设实施方案
- 中山农情统计分析系统项目实施方案
- MATLAB函数详解:从Text到Size的实用指南
- 考虑速度与加速度限制的工业机器人轨迹规划与实时补偿算法
- Matlab进行统计回归分析:从单因素到双因素方差分析
- 智慧灯杆数据运营公司策划书:抢占5G市场,打造智慧城市新载体
- Photoshop基础与色彩知识:信息时代的PS认证考试全攻略
- Photoshop技能测试:核心概念与操作
- Photoshop试题与答案详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)