没有合适的资源?快使用搜索试试~ 我知道了~
47GUPRO- 全面 的 理解Programs 方案AnOverview 评论黄柏特Ebert —Bernt Kullbach Volker里奇 AndreasWinter大学科布伦茨 Landau ,研究 院为软件 技术 D -56016 Koblenz , 邮箱201602abstract抽象GUPRO is an integrated workbench to support program understanding of heterogenoussoftware systems on arbitrary levels of granularity.(综合工作台支持程序了解异构软件系统的任意粒度级别。GUPRO该 目标 可以 通过 一 个 适当 的 概念 模型 进行调整 , 以 达到 特定 的 目标 。软件 |GUPROis 基 于 on GRAPH-TECHNOLOGY 技 术IT Heavily 的 Relies on Graphquerying 问 题 及 Graph algo - rithms 的 。 Source code is extracted into a graphrepository,which can be viewed by an inte—grated querying and browsing facility.源代码提取到图形存储库中,可以通过一个inte—grated querying和browsing facility查看。for c like 语言 GUPRO browsing includes a complete treatment of preprocessor( browsing 包括 处理 器 的 完整 处理 )facilities 。Thispaper 文 件 Summarizes 的 The Work done on GUPRO during 的 The last SevenYears 。1Introduction介绍不断生产新的软件系统从Scratch,今天的软件开发已经解决了更多的和更多的理解和重新工作的遗留程序,其中有不断发展的倍。研究关于软件开发的问题—开发过程中,维护软件的部分资金已急剧增加,从49% 1977 [28]到超过90% 1995 [29](比照。[30”(P31)Incremental software developmentapproaches like extremes ( 像 极端 一样 的 软件 开发 )Programming[3] 支持软件开发和软件维护之间的艺术事实区别。了解 、 更改 、 更正 和调整 软件系统 是 软件 开发 的 关键 活动 。Thus,软件工程研究已经提供方法和工具支持软件演变。Softwarereengineering 工程Summarizes 的allActivities 活动that either 的Support 支持The理解 - ing of software or改善Thesoftware itself [ 2 ] 。 少校Activities 活动在reengineering deal 相关 文章with(i) ReverseEngineering 工 程 software Systems , E 。 g 。 Detector 侦 探software components and their interrelationships to provide multiple viewsof software systems at a higher level of 在 一 个 更 高 的 层次 上 对 软件系统 提供 多 个 评价Abstraction 抽象Email :ebert@uni-koblenz.deURL :www.uni-koblenz.de/ebert。Email :kullbach@uni-koblenz.deURL :www.gupro.de/kullbach。Email :riediger@uni-koblenz.deURL :www.gupro.de/riediger。Email : winter@uni-koblenz.de , url : www.gupro.de/winter 。Andreas48Winter is Rently - 盈利探访大学of Waterloo ,School 学校of Computer Science ,Waterloo ,加拿大 |Open access under 的 问题CC BY-NC - ND License。49abstractRepositoryextractView(ii) 翻译 Comprehendingsoftware Systems,E 。 g 。 learning what softwarecomponents Do , How they operate , and how they operate 他们 是 如何操作 的交互 式 ,(iii) 进 化 software Systems , E 。 g 。 更正 , Changing , adapting ,及extending 软件系统 。逆向工程和程序工程中的活动,在隔离维护阶段,就像没有增量软件开发一样,继续Extract—Abstract—View Metaphor抽象概念”[27]数据 源 代码 文章are extract :Into A A software仓库。 using various analysis技术 , 这些data are abstract两 个提供 商A A Deeper understanding of The software系统 |Abstractions of the system 就是 这个 。畜牧通过 适当 的 可视化means 。来源codeVisualization 可视化Fig. 1. Reference architecture for Reverse Engineering 工程toolsthe Extract—Abstract—View Metaphor抽象概念因此,它被称为反向工程工具(Reverse Engineering Tools)的参考架构。1 ) 定义 并 提供 一 个 类 确定框架for 逆Engineering 工程技术 | 综合 性Reverse Engineering 工程tools like[ 13 ] ( 13 ) ,戴尔” [ 21 ] pbs” [ 17 ] Ricky” [ 36 ] Softanel” [ 27 ]及SWAGKIT” ( 33 )follow这个参考架构。2000 年 : The Tools Differ in the Underlying RepositoryTechniques , in the Granularity of Source代码 的 表示 , 以及 分析 和 可视化技术 |This paper summarizes the相关GUPRO [8]逆向工程方法。Object Of - 对象GUPRO( 对 项目 的 一般 理解 是 提供 一 个 )Integrated ReverseEngineering WorkBench ( 综合 逆向 工程 )支持 多 程序 分析 技术 。GUPRO Strongly基础上图形技术Graph technology [10]。软件Artifacts arestored in a graph repository相关Abstraction is done by抽象完成graph queries图片及graph algorithms算法。第2节introduces the graph—based GUPROrepository。using the 使用Eer/GRAL 系列基于 图形 的 概念 建模 方法 , 结构GUPRO- - Reposi-Tory CAN be adapted两 个The特 悬NEED of Different 不同逆向 工程 Reverse engineering problem 。Section3 DEPICTS The population人口of GUPRO余 乙By特 悬parser 巴黎范 · 趋势Abstraction Facilities of抽象GUPRO based on graph—queries are explained in section 4. based on graph—queries are explained在第4节中已解释。第五部分describes the GUPRO浏览器软件可视化。A short conclusion in section 6 包含 这个Overview 。2来源 Representing Sourcecode50大多数情况下,软件系统文档已完成,过时,不正确,或者不包括系统的当前版本以进行修订。Thus ,Pro -51GRAMcode is The only 唯 一 reliable 相 关 来 源 for 开 始 Starting programunderstanding及Reengi - 需要活动 |Depending 依赖on The actual Reverse Engineering 工程problem 问题及TheAspired 的program ysis 技术 , 不同 ( 内部 ) 代码 表示 必须 选择 。E。g。描述软件架构,强调模块和调用结构[5,p. 36 f],要求包含模块,呼叫和/或关系的抵押表示。在对比中,详细的数据流和控制分析要求对每个源代码对象(变量,方法,Para—graphs)和它们在程序语句中的occurrences进行grained表示。Hence , 一 个 通用 反向 工程 工作 台 必须 与 不同 的 数据 结构 或 反向 工程 , 需要 包含 对应 分析 的 反应operations 。图形提供了一个从复杂和通用算法开始的通用数据结构,因为它知道什么可以应用于所有反向工程分析技术。An overview on graph—based reverseengineering tools,including their interoper—ability,is shown in [18].一个基于graph—based反向工程工具的综述,包括其互操作性,是在[18]。GUPRO图表模型是Given By TGraph他的著作《一个具有普遍性、表达性和强大的建模方式》(The Universal,Expressive,and Powerful Way of Modeling)就是这样的。第2.1节)。the Eer/GRAL系列概念建模方法[10]用于图形结构—对某些分析技术的需求进行配对。第2.2节)。implementation 实施Support支持for storing及analyzing TGraph is给予By The GraLab 的graph library [ 6 ]and by 图书馆GREQL graph query language ( section ) 图4 ) 。2.1GraphDifferent program analysis techniques require different underlying graph 不同 的 程序 分析 技术模特 ,E。g。Directed graphs,Undirected graphs,Node Attributed graphs,EdgeAttributed graphs,Node Typed graphs,Edge Typed graphs,Ordered graphs,Relational graphs,Acyclic graphs,Trees等。在一个反向工程工作台中支持多个程序分析技术,未成形的图形模型必须具有丰富的可能性来涵盖大多数所需的图形模型。常见的图形模型是给定的TGraph”[9]。TGraph areDirected graphs,whose nodes and edges可能是attributed的及类型。每种类型都 可 以 分 配 一 个 自 定 义 属 性 方 案 , 指 定 节 点 和 边 缘 的 可 能 属 性 。Furthermore,TGraph are命令,i。E。节点 集 ( The Edge Set ) 和 节点 集( The Edge Set )sets of EDGE incident 事件两 个A A node Have A A total命令 。 This命令给予mod - eling power to describe sequences of objects ( 描述对象 序列 的 权力 )g。parameter lists)和实现确定性图形算法。在申请TGraph,不是所有材料的TGraphs必须被使用到其全部扩展. Individual graphmodels cited above all be viewed as specializations of 独立 图形 模型 , 上面可以 全部 作为 特例 查看TGraph。Figure 2 show a program fragment and its(图2显示程序及其片段)TGraph的representation on abstract—syntax—graph—level ( 抽 象 的 图 形 ) 。 TheFunctions函数主,,Max及min Are represented by nodes of type是什么意思Function。这些节点已被函数名称赋予。FunctionCall功能nodes表示函数调用Max及min。他们与来电者联系。iscaller的首页〉外文书〉文学〉西洋文52学〉Edges and to the Callee By iscallee的EDGE。iscaller 的edge 已 添加withA A Line attribute SHOWING The Line Number Which contains The打 电话 。53Line =12E2 :iscalle rV3 :FunctionCal功能l{1}{12}e6:isinpu ;t{12}{1 , 2}E7 :isinpu ; tE5 :E8 :E9 :isoutpuE10 :isOutpuv7 :Variable变量name = 名字“ a ”V6 :Variable变量name = 名字“ min ”V5 :Functionname = 名字“ 马克思 ”V4 :Functioniscallee的0..*0..*【订购中】isOutput输出0..*isinput的0..*1iscaller的1iscaller的姓名 :stringLine :int姓名 :stringVariable变量FunctionFunctionCall功能name = 名字“ b ”Line =8E1 :iscalle rname = 名字的main ”V1 :FunctionV2 :FunctionCal功能lE3:iscallee 的E4 :iscallee 的Fig. 2。type , attributed , directed , ordered 类型Graphinputparameters 参数( 代表 性 )By Variable 变量nodes that are attributed 的with The变量 名 ( Are Associated By )isinput 的EDGE 。参数列表的排序是由事件的顺序给出的isinput的edge pointing to关于FunctionCall功能nodes。最 后 的 边缘 The Fourst Edgeof type isinput 的incident 事件两 个FunctionCALL V2( 模型The CALL max ( a , b ))来自 node V6变量 representingA A。类型的第二个边缘isinput的连接第二个参数B(Nodes)V7). TheIncidences Of 的 isinput 的 edge associated with node 加 入 V3 逆 参 数 顺 序(Reversed parameter order)输出 参数 与 其 函数 调用 相关isOutput 输出EDGE 。2.2Graph—Classes系列TGraph提供一个简单的结构图为应用图形—算法和图形查询的手段。不同的反向工程任务TGraph的结构|要实现源代码所需的粒度——解析和拟反向工程技术,不同节点类,边缘类和偶然的结构是必要的。同样,结构的属性—节点和边缘类的传递,以及这些类之间的事件关系在重新设计问题上得到解决。标签 : Furthermore , class分层 与 附加 条件 E g。ordering ofincidences or multiplicity constraints 必须 有 事件 或 多重 限制described 。这些结构 性data on graphs CAN be陈 晓 晓By概念 性Modeling技术。GUPROFollows The Eer/GRAL系列approach on graph based conceptual modeling [10]。Class Diagrams提供了一个包含的Declarative Language,以指定所需的图形类以尊重某些反向工程问题。附加 条件 适用 于 使用饰 Gral Graph SpeciLanguage 图表” [ 14 ] 。1Fig. 3. Graph 的class虚构for graphs like The one 一在figure 254Graphlike The one 一在figure 2 offer A A吴葡萄Presentation 介绍of programstruc - tures , focusing on the description of function , function calls ,variables and their interdependencies , 结构 函数 调用 及其 相互 依赖 的 描述 。 Figure 的3 shows A A可能 的Graph class虚构of These 这些graphs ,depicted as an UML class diagram [ 4 ] . 图 形 处 理 器 第 九 届 中 国(FunctionCall 功能, ,Function,及Variable 变量) 由 UML 类 组成 。2013年中国纺织工业展(iscallee的,,isinput的,而isout put)是由协会批准的。使用 Addiction Type (iscaller 的( 重 定向 自 UML Association )classes 。天才in GUPRO is strongly provided by using graph classes.(使用图形提供。Anal—ysis in的 介 绍 GUPRO使用a graph class independent query approach(不依赖查询方法)。Thus,the gen—eral query—based analysis facilitiescan be combined with基因基于问题的分析能力可以结合使用problem orientedgraph schemas相关问题提供适当的反向工程支持。Currently 问题GUPROProvides graph schema for several applications 官方 网站包括Architectural 建 筑 analysis of 多 种 语 言 software 在 AN Insurance Company( COBOL ) ,PL/I ,CSP ,JCL ,DB 中 ,SQL )” [ 26 ][ 8 ] ,Java/C/C + + 基于 RDBMS 的 证券 交易 系统 软件 架构 分析” [ 27 ]fagried analysis of C [ 31 ] , [ 32 ] and Ada programs [ 24 ] in the context ofsecurity analysis and certification , ( C [ 31 ] , [ 32 ] and Ada programs [ 24 ]in the context of security analysis and certification , ( C [ 31 ] , [ 32 ] 和 Adaprograms [ 24 ] 在 安全 分析 和 认证 的 背景 下 对 C [ 32 ] 和 Ada programme[ 24 ] 进行 分级 分析 ,及frained representation and analysis of JCL-job - descriptions of a Bull-host system( 英 语 : Grained Representation and analysis of JCL-job - descriptions of aBull-host system )” [ 34 ]Current work deals with adapting the fiftne grained C + + - Schema developedwithin the Columbus C + + 解析 器 前端 开发 的 当前 工作 方案” [ 12 ] 。3数据 来源 Extracting Facts from Sourcecode所 有 analysis Activities 活 动 在 Reverse Engineering 工 程 及 programunderstanding Depend on the data stored in the repository . 数据 存储 在 仓库中 。因此,普及存储库是所有程序理解和逆向工程过程的基本步骤。从 源代码 中 提取 事实 必须 准确 且 可靠” [ 11 ] 。逆向 工程 事实 提取 物 的 开发 是 基于 知识 的The地区of compiler建设 。( CF 。 ” [ 1 ] 。 在部分 ,extraction 提取facts 事实from software systemshas to solve with additional problems like multi-language assets or the use of 其他 问题 , 如 多 语言 资产 或 使用 其他 功能预 处理 器 。软件系统经常在不同的编程语言,数据库定义,JCL—texts等方面获得大量的联系源的知识。g。德国 大型 保险 公司 的 软件 系统 约 25,000 JCL -5700 CSP - -7 800 COBOL 的II -及Delta COBOL ,6 000 P1/1 ,1 000 Assemb -100 REXX 源 代 码 , 如 编 程 语 言 , 如 APL , SAS 或 Easytrieve 。 This is55complied by 100个数据模型,其中约3000个实体和60000个属性。Thus,thereengineering repository has to represent large.(美国)多语言软件系统”[26]由于软件系统的大小,一次用所有来源进行逆向工程是不可能的。 特别是 , 系统 的 变化 应该 被 镜像 保存 。incrementally 。GUPRO事实 事实Extractors 外向 的for多种 语言Systems follow A A Four stepparsing 公园ap-proach 的 意思” [ 19 ] the许 靖step checks IF The document is准备 好代表 性在The56repository in a former version.(英文)如果是这样,则其事实已被删除。 文档本身是第二步。在第三步,提取的事实是纳入到现有的存储库,并进一步提高诚信的第四步。这些解析步骤是由一组图形查询控制的。第4节,e。g。discover graph objects to be deleted in step 1 or to be merged in step 发现图形 对象 要 在 步骤 1 中 被 删除 或者 被 合并3.Preprocessors 预 处理 器are used在many Programming environments 环境两个increase 增加The语言 能力 : 支持 宏观 设计 和 扩展 , 有 条件 编译及Even low Level关于 Accountguration管理 | But不 幸运 的 ,Pre - processorssignificate complicate program understanding ( 自 认为 是 完备 的 处理 器 )用户 看到 的 不是 什么 编译 器 得到 的。特别 擅长 数据 流 和 控制 流analysis必须be基于on The预 处理 器输出 ,Whereas 的The analysis resultshave to be presented in the notation used by the programmer , i . 结果 必须 出现 在 所 使用 的 符号 中 , 由 程序 员 , 我 . E。在preprocessor input中the GUPRO folding approach [ 23 ] provides an integrated representation of pre -processor 预 处理 器 的 综合 表示input及产出在The Reverse Engineering 工程存储 库 。 EACH宏观Usage 是代表 性By its Macro 标签及its macOS 扩展在A A Fold结构这 是 由 一 个 特殊 的 前 处理 器 创建 的 。Fold Structure还提醒我们注意到了每一次宏观呼叫的当前可视化状态。E。如果宏观经济是扩张的,或者是扩大的。此结构与预处理器输出的表示相关联。同时,程序分析可以在预处理器输出上完成,并且分析结果可以在程序员查看源代码到编译器查看源代码的任何级别中呈现。因此 , fold 结构 是 一 个 图 。GUPRO analyzes graphs , 可能 作为 分析 主体 提供 事实关于 预 处理 器Usage 。GUPROcurrently 当前支持extraction 提取facts 事实on Architectural 建筑Levelfor COBOL , CSP , MVS/JCL , PSB , SQL ( DDL 和 DML ) 和 IMS-DBD 源 的 多 语言 系统 一致 性 [ 26 ] 。语法 解析 抽象 语法 树 级别 include- ing Parsers for extraction on abstract syntax levelThe Extraction of Fold结构are提供for C” ( 32 )及Ada” [ 24 ] using The GXL Graph Exchange Language[ 35 ] , 标准 C + + parser-frontends like Colum - bus [ 35 ]” [ 12 ]及CPPX”( 7 )CAN be used within 其中GUPRO。 Further 进一步GXL基于filters Existfor converting A A Database 数 据 库 仓 库 Presentation 介 绍 A A Java/C ++/RDBMS 的 使用系统on architectural level to the graph based 基于 建筑 级别GUPRO仓库” [ 27 ]4Abstraction from source 相关code大多 数 反向 工程 技术 可以 映射 到 询问 反向 工程 engi 需求仓库” [ 25 ]GUPRO Uses A A Schema 独立 性querying 问题机制 。Accordingly , 定制GUPRO需要 分析 的 问题 只 需要 参数 化 一般GUPRO query engine with 相关The appropriate 的Schemas 。 the Following sections 部分brie 空气introduceintroduce 进入The GREQLQuery Language 查询 语言” [ 20 ]GREQL是A Declarative expression language定义语言这是专门为查询图形结构而设计的。GREQL设计 成 一 种 纯 查询 语言 , 不会 改变or extend 延伸The Quered 问题存储 库 。 usually ,A A GREQL Query 问题consists 意见of57三 个 部分 。In The from相关 图形 元素 由 Specifying a 所 定义 。58变量名和类型(节点和边缘是平等对待的)。Predictate which 有 什么 用两个be FULLLED 成功By These 这些Objects are规格 FECI在The withoutClause 。 在 这里 ,GREQL提供 最 准确 的 逻辑 订单 。GREQL支持Various Graph Oriented Predicates包括Regular path表达 ,E 。 g 。 sequences结果备选 方案及iter - ations 的 评论( 重 定向 自 RESExive )及过渡 性关闭 ) of paths 在 The Quered 问 题 Graph 。 the 报 告 Clause describes theappearance of the query result . ( 请 描述 一下 查询 结果 的 吸引 力 。FROM-WITH - REPORT - 带 报告PRESSIONS 可能 会巢 。from来电 , 来电 :vFunctionwithout来电iscaller的iscallee 的CALEE报告caller.name,callee.nameENDFig. 4。A 简单GREQL Query 问题Figure 4 显 示 一 个 简 单 GREQL query calculating all caller/callee-pairs ingraphs like 相关 文章those规格 FECI By The Graph class在figure 3. Variables(来电及CALEE) 类 node Function在 The Declared 中from Clause 。ThePath Predicate的评论来电iscaller的iscallee 的CALEE In Thewithout Clause Indicates ( Clause 指标 )that来电及CALEE Have两 个beconnected By A A sequence 问题of AN走 出去 - Going iscaller 的一 个incoming iscallee 的edge 。对于所有来电/CALEE Pairs matching this pathpredicate,the(配对此路径预测)报告2.显示为社会化的,如图所示姓名attributes。Applied to the graph in fingure 2 , 这个 查询 将report 报告主Max主min。Figure 的5 DEPICTS A A More complicated 复杂 的Query 问题within 其中TheGUPRO tool 的 。 for EACH Caller 功能IT计算 器The set of Directly 直接及间接called Functions 函数with [ 31 ] 以 一 种 特殊 的 方式 来 描述 它 。表达路径表达之间的联系来电及CALEE Different Edge Classes的不同宽度。Thispath expression contains(reflexive)transitive closures of various edges.这条路表达了各种边缘的临时闭包。如果函数是间接调用的,则完整的路径表达是迭代的。查询graphs with GREQL目前由三个接口支持。the GUPRO反向工程工作台,使交互式查询。标准 - Stan-DardAPI for嵌入 式GREQL Queries 问题在C+ + 程式Comes 的with The GraLab 的Graph图书馆[ 6 ] 。 CLG( command )Line GREQL)” ( 22 )offers A A script language关于 - Sion of GREQLWhich供应 商sequential 结果calculation 计算of GREQL Queries ,包含 中间查询 结果 在 subsequent 查询 中 的 重复 使用 。CLG对于查询结果支持多种导出 格式 ,例 如:supports various export formats for query results。 g 。HTML,XML,以及CSV格式。5Visualizing source 相关codeSupportingprogram understanding primarily 主 要 FOCUS 的 on understandingconnections 相互 之间来源code artifacts 。 Reverse engineers 工程 师Want两个Query 问题The software System and map the query results into the originalsource code . 系统 并 将 查询 结果 映射 到 原始 源 代码 。Thus ,GUPROsupports program understanding by visualizing query results in ( nested )59tables and by dis - playing source code 使用 手册直接 的the张景table Gives a ficrst view about those software objects complying with theappropriate query.(给出了一个最新的软件对象完成请求的情况。这些query-results are directly linked to the source code if if 查询 结果 直接 链接 到源 代码 如果possible 。 A simple mouse CLICK on AN Object在The tableView Directly 直接Opens A A60source code browser with a编辑Code View介绍显示此源对象的appropriate结果。但是表也可以包含其他查询结果。g。软件 指标 , 其中 不 直接 与 任何 代
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Haskell编写的C-Minus编译器针对TM架构实现
- 水电模拟工具HydroElectric开发使用Matlab
- Vue与antd结合的后台管理系统分模块打包技术解析
- 微信小游戏开发新框架:SFramework_LayaAir
- AFO算法与GA/PSO在多式联运路径优化中的应用研究
- MapleLeaflet:Ruby中构建Leaflet.js地图的简易工具
- FontForge安装包下载指南
- 个人博客系统开发:设计、安全与管理功能解析
- SmartWiki-AmazeUI风格:自定义Markdown Wiki系统
- USB虚拟串口驱动助力刻字机高效运行
- 加拿大早期种子投资通用条款清单详解
- SSM与Layui结合的汽车租赁系统
- 探索混沌与精英引导结合的鲸鱼优化算法
- Scala教程详解:代码实例与实践操作指南
- Rails 4.0+ 资产管道集成 Handlebars.js 实例解析
- Python实现Spark计算矩阵向量的余弦相似度
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功