(计算机应用技术专业论文)基于面向对象技术的软件逆向工程的研究与应用.pdf_第1页
(计算机应用技术专业论文)基于面向对象技术的软件逆向工程的研究与应用.pdf_第2页
(计算机应用技术专业论文)基于面向对象技术的软件逆向工程的研究与应用.pdf_第3页
(计算机应用技术专业论文)基于面向对象技术的软件逆向工程的研究与应用.pdf_第4页
(计算机应用技术专业论文)基于面向对象技术的软件逆向工程的研究与应用.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

(计算机应用技术专业论文)基于面向对象技术的软件逆向工程的研究与应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于面向对象技术的软件逆向工程的研究与_ 应用 鄂辉( 计算机庶用技术) 指导教师:段友祥教授,张贵才教授 摘要 当前,随着大量传统软件需要商蕊向对象平台上移植,基予面向对 象技术的逆向工程研究成为关注的热点。这个方面的研究可以选择不同 匏输入源懿源代码、数攥模式窝雾瑟袭攀等。本文童要是对以赛露表单 为输入源的基于面向对象的遂向工獠方法进行研究,提出了一个逆向工 程方法模擞。这个模型摒弃了传统的自底向上和自顶向下的逆向正程策 略,采用7 羁步求精戆繁痿,宠分考虑了领域知识农系统理解中的终震。 模型包括两层:高层和低层,对于商艨的理解采用静态对象模型对域模 型进行表示,利用这种袭示法更有利于建立高层对象与低层对象之间的 浃射关系;对于抵层斡器覆表萃戆努糖采震1 ,改逡豹器o r e 秀法,裂 用u m l 的炎图和序列网对抽取的结聚进行表示,问时,针对i f o r e 方 法只对单个液单进行研究的不足,引入了一种用例抽取方法u a m ,实 瑰默系统戆器瑟孛麴取攒系统戆弱铡,劳攫搀蘼缮裂戆震铡建纛起每令 用例的序列图。最后,针对一个酸纯愿裂系统对本文所提出的方法进行 应用和验 难,基本实现了系统类图、用例图和序列图的抽取。 关键字:甏囊踺象,遂国王程,弱步求耱,i f o r e 方法,u a m 方法 r e s e a r c ha n d a p p l i c a t i o no fs o f t w a r er e v e r s e e n g i n e e r i n g b a s e do n0 b j e e t - o r i e n t e dt e c h n o l o g y g u oh u i ( c o m p u t e ra p p l i c a t i o nt e c h n o l o g y ) d i r e c t e db yp r o f e s s o rd u a n y o u - x i a n g ,p r o f e s s o rz h a n gg u i - c a i a b s t r a c t a tp r e s e n t , al o to fc o n v e n t i o n a ls o f i :w a s y s t e m sn e e db em i g r a 僦lt o o b j e o t - o r i e n t e dp l a t f o r m s ,s ot h es t u d yo fr e v e r s ee n g i n e e r i n gb a s e do n o b j e o t - o r i e n t e dt e c h n o l o g yi sa t t e n d e d m a n yi n p u t $ o u r c 宅ss u c ha ss o u r o c p r o g r m m d a t a b a s es c h e m aa n ds c l f e e nf o r m sc a nb es e l e c t e di nt h e 矗e l d t h i sp a p e rf o c u s e so nt h em e t h o do fr e v u w s ee n g i n e e r i n gt h a tu t i l i z es c t e e n f o r m sa so r i g i ni n p u ts o u r c e ,a n dp r o p o s e sar e v e r s ee n g i n e e r i n gm o d e l t h e m o d e lw h i c hi n c l u d e st w ol e v e l s :h i g h - l e v e la n dl o w - l e v e la b a n d o n s t r a d i t i o n a lb o t t o m - u pa n dt o p - d o w nm e t h o d ,a n da d o p t ss y n c h r o n i z e d r e f i n e m e n tr e c - e r s ee n g i n e e r i n gm e t h o d , b e c a u s ei tf u l l yc o n s i d e r st h e a d v a n t a g e so fd o m a i nk n o w l e d g et os y s t e mc o m p r e h e n s i o n h i g h - l e v e l m o d e la d o p t ss t a t i co b j o c tm o d e lt or e p r e s e n td o m a i nm o d e li no r d e rt o b u i l dr e f l e c t i o nr e l a t i o n s h i pb e t w e e nh i g h - l e v e lo b j e c ta n dl o w - l e v e lo b j e c t c o n v e n i e n t l y l o w - l e v e lm o d e li n t r o d u c e sa ni m p r o v e di f o r em e t h o d ,a n d u s e su m lc l a s sd i a g r a ma n ds e q u e n c ed i a g r a mt or e p r e s e n ta b s t r a c t e d r e s u l t s 撼b e c a u s eo ft h el i m i t a t i o nt h a tw o r em e t h o do n l yp a y s a t t e n t i o nt os i n 酉ef o r m , au s ec a s ea b s t r a c t i o nm e t h o du a mb yw h i c hu s e c a s e sc a nb ea b s 虹a c t e df r o ms y s t e mi n t e r f a c ei si n t r o d u c e d t h e n , s e q u e n c e d i a g r a mc o r r e s p o n d i n gt oe a c hu s ec a s ei sb u i l t f i n a l l y , a na c i d - f r a c t u r i n g s y s t e mi si n t r o d u c e dt ov a l i d a t ea b o v e m e n t i o n e dm o d e l t h r o u g ha p p l y i n g t h em e t h o d , c l a s sd i a g r a m s 、u s ee a s ed i a g r m ma n ds e q u e n c ed i a g r a m sa r c a b s t r a c t e d k e yw o r d s :o b j e c t - o r i e n t e d ,r e v e r s e 豇培i n e e r i n g ,s y n i h r o n 砌r e f i n e m e n t , i f o r em e t h o d , u a mm e t h o d 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取 得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论 文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中国 石油大学或其它教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示 了谢意。 签名: 月砑日 关于论文使用授权的说明 本人完全了解中国石油大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件及电子版,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手 段保存论文。 ( 保密论文在解密后应遵守此规定) 学生签名: 导师签名: 中国石油大学( 华东) 硕士论文第1 章前言 第1 章前言 1 1 课题的提出、目的和意义 传统的软件工程主要关注新软件的分析与设计,但随着软件系统的 规模和复杂度的与日俱增,软件生命周期越来越长,软件开发的很大一 部分工作集中于维护和改造现有的软件系统。软件维护已成为软件工程 界面临的重要课题之一,而正确和全面的理解遗留系统是软件进行维护 的前提“1 。但是,大部分遗留系统已经运行了许多年,尽管它们过去对 企业发挥过很大的作用,但由于当时使用的一些信息技术和平台比较落 后,遗留系统的理解和维护面临着各式各样的问题。首先,遗留系统可 能设计文档已经丢失,甚至只有可执行文件而没有其它的任何信息,因 此,对系统知识的缺乏必然导致理解和维护的困难;其次,系统的维护 是相当复杂和昂贵的,特别是对于那些功能分为多个管理组件的系统来 说,维护更是相当困难的。为了解决上述问题,逆向工程技术被提出。 逆向工程的目标是理解一个软件系统以便于更容易的进行增强功能、更 正、增加文档、再设计或者用其它的程序设计语言再编码。 当前,软件发展中面向对象技术的优势已经被人们所广泛接受,大 多数软件管理人员赞同移植到面向对象平台是在动态的软件市场保持 竞争力的重要方法。面向对象技术的优势体现在满足商业过程的建模技 术、开放的系统、复用软件组件、减少遗留系统规模以及图形用户界面 的设计与实现等方面”1 。因此,研究从传统的遗留系统中抽取出面向对 象模型的逆向工程方法,可以为进一步的向面向对象平台的移植奠定良 好的基础。 1 2 国内外研究现状 目前,逆向工程技术的重要性已经引起重视,得到了国内外学术界 中国白_ 油大学( 华东) 硕士论文第l 章前言 的广泛认同。在学术界,面向逆向工程领域的国际会议w c r e 、i w p c 和p a s t e 每年举行一次。卡内基梅隆大学软件工程研究所成立了专门 的再工程中心,致力于逆向工程的研究。 国内外对逆向工程的研究主要停留在代码的层次上,原因是对于研 究人员来说,代码逆向工程在最初的印象上更能激发起他们的兴趣。从 基于面向对象技术角度看,代码逆向工程研究按照源代码的不同分为两 个方面即面向过程软件的逆向工程和面向对象软件的逆向工程。对于面 向过程软件的逆向工程,采用不同的方法实现从代码中抽取出对象以及 它们之间的关系n “。”。最重要的是o o k u lv s u b r a m a n i a m 和e r i ej b y r n e 通过对前人大量方法总结的基础上,提出了一个逆向工程的策略模 型,进而提出了9 个阶段的对象模型发现过程阱。对于面向对象软件的逆 向工程,按照抽取的设计知识的抽象层次即生成结果的可理解程度,它 的研究可分为4 个层次:对象间的实际关系抽取、设计模式的识别、面向 对象程序的度量和系统结构与域模型的抽象“”“2 ”。其中第一个层次即 对象间的实际关系抽取是研究的热点,并开发出许多工具。可以实现对 象或类之问的静态关系抽取的工具有r o s e 、t o g e t h e r 、u m l s t u d i o 、 i d e o g r a m i e u m l 、c o d e l o g i c 等,它们都采用u m l 类图表示“”。对于动态 关系抽取模型通常用u m l 的协作图、状态图等来表示。 最近十年,随着大量数据集中的信息系统需要维护,数据逆向工程 引起了研究人员的广泛关注。这方面的研究主要集中在数据库逆向工程 方面,研究方向是从层次模型、网状模型和关系模型抽取e r 模型“”】。 数据库逆向工程所得到的概念模型通常是数据模型,反映了系统的静念 特性。但是对于一个系统的理解来说,仅仅只有静态特性是远远不够的, 还必须要得到动态特性。而采用以界面表单为输入源的逆向工程研究具 有更丰富的语义,通过这种方法可以得到系统概念模型的静态特性和动 中国石油大学( 华东) 硕士论文第1 章前言 态特性,因此这方面的研究也越来越引起人们的重视。当前对这个领域 的研究还比较少,文献【1 8 】通过界面表单得到了b r 模型;文献【1 9 】通过 界面表单实现了数据库应用系统静态特性和动态特性的提取,静态特性 使用e r 模型和面向对象模型表示,动态特性使用表单内行为关联构造的 表单方法调用图和不同表单间行为关联构造的表单网络来表示;韩国的 两位研究人员提出了一种f o r e 方法,静态特性使用面向对象模型表示, 动态特性使用表单操作脚本来表示;国内东南大学的徐易、刘亚军和高 建国等也在这个领域作了一定的研究工作,通过f d ! 方法抽取出了面向 对象模型表示的概念数据模型1 。 总的来看,逆向工程的研究主要集中在代码逆向工程和数据逆向工 程的数据库逆向工程方面,对界面表单逆向工程的方法研究还处于起步 阶段。 1 3 研究方法与技术路线 根据基于面向对象技术的逆向工程的研究现状,可看到基于界面表 单的逆向工程研究在系统理解方面的巨大优势。因此,本文不是以传统 的输入源比如源代码、数据库等进行逆向工程研究,而是对以界面表单 为输入源的逆向工程方法进行研究。很多要使用逆向工程的系统已经运 行多年,很多文档已经丢失。但是不管他们缺什么,执行程序总会存在, 运行窗口总是可见的。所以从这一点上,选择界面表单输入源有更大的 市场需求和技术上的可行性嘲。 对于界面表单逆向工程方法的研究,传统的方法通常采用的是自底 向上或自顶向下的策略,这些策略并没有考虑高层抽象在系统理解中的 作用。因而本文的研究采用了同步求精的策略,把领域知识应用到系统 理解当中。对于低层的界面表单的分析采用了改进的i f o r e 方法,利 3 中国石油大学( 华东) 硕士论文第1 章前言 用u m l 的类图和序列图对抽取的结果进行表示,同时针对i f o r e 方法 只对单个界面表单进行研究的不足,引入了一种用例抽取方法u a m , 实现从系统的界面中抽取出系统的用例。然后,根据所得到的用例建立 起每个用例的序列图。 1 4 论文的主体思路和组织结构 本文在对逆向工程的基础理论和相对成熟的基于面向对象技术的 代码逆向工程和数据库逆向工程方法研究的基础上,结合已有的界面表 单逆向工程方法,提出了一个基于面向对象技术的界面表单逆向工程方 法模型。这个模型分为低层和高层,在低层对于界面表单进行分析,采 用不同的方法抽取出u m l 的类图、用例图和序列图表示的面向对象概 念模型。在高层,使用静态对象模型来表示域模型。低层和高层通过同 步求精的过程进一步融合,建立对应关系 论文的组织结构如下: 第一章,前言。阐述课题研究的背景、目的和意义,介绍国内外研 究发展现状,提出研究方法并制定技术路线。 第二章,逆向工程综述。介绍了逆向工程的概念、目标和规范活动, 然后对逆向工程的研究策略进行了分析,最后提出了对当前逆向工程的 分类标准。 第三章,面向对象技术和建模。首先对面向对象的方法进行了综述, 然后重点介绍了面向对象的建模技术u m l 及其在逆向工程中的作用。 第四章,面向对象的界面表单逆向工程研究。这一章是本论文的重 点,首先介绍了界面表单的基本概念、特点和分析层次,对传统的f o r e 方法进行改进,在此基础上提出了一种新的界面表单逆向工程方法 i f o r e 。然后,引入了一种用例抽取算法,实现对系统用例的抽取。 4 中国i i 油大学( 华东) 硕士论文第1 章前言 第五章,界面表单逆向工程方法的应用。首先根据所提出的同步求 精策略模型,在高层针对所研究的酸压系统的域模型进行表示。然后, 在低层对系统的界面表单进行分析,通过i f o r e 方法得到系统的对象 以及它们之间的关系,并用u m l 类图加以表示;通过用例抽取方法 u a m 得到用例图表示的系统用例,同时针对每个用例建立序列图。 第六章,总结。总结论文的工作以及研究的创新点,指出还存在的 问题和今后进一步的研究方向。 中国石油大学( 华东) 硕士论文第2 章逆向j 稃综述 第2 章逆向工程综述 2 1 逆向工程概念、目标和规范活动 2 1 1 逆向工程概念 逆向工程在硬件领域作为一种标准实践应用已有很长时间,其起源 于为了商业或者军事利益而对硬件进行的分析。软件领域的逆向工程迄 今为止还没有标准的定义,一般将软件逆向工程定义为包含抽取和抽象 两个步骤的过程:第一步分析目标系统,标识目标系统的组件以及它们 之间的相互关系;第二步创建不同形式或更高抽象层次的系统表示1 , s c o t tr l i l l e ) , 将这两个步骤细分为建模、抽取和抽象三个步骤嘲: 建模:采用概念建模技术构造应用程序的领域模型。 抽取:利用适当的抽取机制从目标系统中收集原始数据。 抽象:对目标系统进行抽象,以辅助系统理解并允许浏览、分析 和表示抽象结果。 2 1 2 逆向工程目标 软件系统逆向工程的首要目的是增加系统在维护和新丌发时的总的 可理解性。总结起来具体要完成下列任务: 1 、处理复杂性:软件系统越来越复杂,人工方法己经很难有效维护、理 解,研究逆向工程技术和c a s e - f 具辅助控制软件系统的复杂性是软件成 功的关键。 2 、自动生成系统的其它视图:图形表示可以大大促进理解。自动由人工 制品比如源代码、数据库等生成数据流图、控制流图、类图、实体关系 图等是软件逆向工程的基础部分。 3 、映射应用程序领域和问题域:计算机程序表示了应用程序领域中的 问题。但是,程序通常不包含问题的提示,逆向工程的任务之一是重构 6 中国石油大学( 华东) 硕士论文第2 章逆向t 稃综述 应用程序领域到问题域的映射。 4 、映射具体和抽象级别:软件开发过程是从高层抽象到详细设计再到 具体实现。逆向工程则反向运作,从具体细节创建抽象表示。 5 、重新发现高层结构:程序是具有良好定义的高层结构的载体。但是, 因时问流失和维护行为,这些高层结构可能已经丢失。逆向工程的任务 之一是在程序中检测高层结构。 6 、发现程序语法和语义之间丢失的链接:计算机程序是形式化的,具 有定义良好的语法和语义。在形式化中,语法正确的程序能够决定输入 所对应的输出。但是,有的系统可能已经丢失了原来的语义,而且有的 语言,如面向对象语言,并没有良好的形式化基础。逆向工程要从语法 中发现程序语义。 7 、恢复丢失的设计知识:在软件代码的不断修改中,有许多业务规则被 加入而没有反映在文档中,这部分知识可以通过逆向工程来恢复。此外 还有一些知识,如反映代码质量的一些度量数据只有通过逆向工程才可 以发现。 8 、检测边缘效应:软件修改或加入的部分可能会带入新的问题,而对原 来的代码运行有一定的影响,这种影响无法在正向工程中反映出来。 9 、为正向工程做准备:软件再工程是为了以新的形式重构已存在的软件 系统而进行的检测、分析、更替以及随后的对新形式的实现,它的一般 模型如图2 1 所示。可以看出,逆向工程抽象出的最高层概念世界是正向 工程的起始阶段,逆向工程结果的好坏直接关系到正向工程的实施。 2 1 3 逆向工程规范活动 软件逆向工程并不改变目标系统,它只是一个分析检查的过程, 而不是一个修改的过程。软件逆向工程通过标识系统组件以及发现这些 组件之间的关系。涉及的对象可分为三类陋1 : 7 中国石油大学( 华东) 硕士论文第2 章逆向工稃综述 数据:数据包括系统源程序、源代码注释、需求分析、分析文档、 设计文档、用户手册以及观测到的系统的外部行为等。 知识:所有内容的总和,包括数据和从数据中推导出的关系与规 则。 信息:相互交织的交流知识,这些信息包括所有的数据和知识, 以及软件工作人员的各种非正式的思路和建议。 薯器回 兰名 甲 重新描述 酴苫 结构设汗 重新设计 降厨熟 罩罂, 重新编码 翻黼x # 瓢 功能,性能对比 现存系统目标系统 图2 - i 软件再j :稃的一般模型 基于这三类对象,s c o t t r t i l l e y 等人给出了软件逆向工程的三个规 范活动:数据收集、知识组织和信息浏览。 1 、数据收集 原始数据是构造和浏览高层抽象的基础,因而数据收集是软件逆向 工程的一项基本活动汹“一。数据收集时,应该尽量遵循下列规则: ( 1 ) 采用成熟的技术:数据收集所采用的技术包括静态分析、动 态分析和获取非正式数据等,其中最流行的是分析程序源代码,构造带 有语法单位及其依赖关系的抽象语法树,在编译领域中,语法分析和交 8 中国石油大学( 华东) 硕士论文第2 章逆国了稃综述 叉索引等技术已经很成熟,采用基于编译的成熟技术,可以得列预期的 绩栗,霞绞集静数据冀舅鬟准确黧胃纛。 ( 2 ) 利用多种数据:遗产系统肖四种数据来源:系统源代码: 包括数据结构、规则控依4 进程、报表格式以及计算机的编码指冷;系 统行为:帮系统霞产聚餐到戆系统穗簸帮经缝;系统文程;魏搀需求 分析、分析文档、设计文档、用户手册和源代码淀释;系统的设计者 和维护者。系统的多种数据从不同的方面刻划了系统对象及其关系,从 恧为受深入详细瑾薅系统提侯了基镄。弱溺系统深我码绫努酌其缝数 据,能够熙好的辅助软件工程人员理解那些难以理解的系统。 ( 3 ) 过滤数据;为理解大型系统所收集的数据量可能是隧大的, 以至子越懑了人 籍吸收理解豹能力。入髓要理瓣系统,首先必缀l 殁收其 中的数据,而系统理解的关键技术之一在于清楚了解什么和忽略什么, 数据过滤怒从丰富的数摄源中抽取所选择的对象及其关系,西褥,在辅 助系统理耱中起着重要俸雳。 2 、知识组织 对成功瓣系统瑾解褥害,所收集熬数据必须耀适当的数据模型保存 起来,以便实现有效鹦存储和检索,辅助对系统缀件及其相互关系的分 析,并反映用户对系统特性的了解程度。数据模型捕捉了系统的本质属 性及其关系,它应该霹默有效的支持知识组织,嚣她对数据模黧骞下列 要求翻1 : ( 1 ) 知识的组织是面向人的而不是面向计算机的:传统的数据模 型,懿层次模型、网络模型移关系模型,都是钛逶予诤算捉操嚣戆角度 上建模组级数据的。丽软件逆商工程的建模则要求以满足入们的理解为 出发点来捕捉系统组件及其相互关系,它强调知识组织,而不怒数掘组 织,知识缀绞是按照系绕实嚣及其谣义关系建攘弱。瑟自对象鹊数据模 9 中国石油大学( 华东) 硕士论文第2 章逆向j 稃综述 型所刻画的系统组件及其相互关系是面向人的,而不是面向计算机的, 其抽象机制能够帮助软件工程人员有效的组织目标系统的知识。 ( 2 ) 要能够支持领域分析:当前的软件逆向工程技术主要以程序 分析技术捕捉的程序结构为基础,但是程序结构自身并不足以反映程序 所应用的问题域。领域分析可视为解决这个问题的有效途径之一。领域 分析是通过标识、组织和表示领域元素及其组成结构来揭示它们在问题 域中的联系。因此数据模型应该按照领域组织目标系统的知识,识别系 统中的标准组件,从而为软件逆向工程提供有效的辅助支持作用。 ( 3 ) 要具有可扩展性:对大型系统而言,软件逆向工程产生的数 据是巨大而复杂的,为了实现有效的存储、检索和分析,就必须使用可 扩展的软件逆向工程数据库来存储软件逆向工程所得到的知识。可扩展 的软件逆向工程数据库存储所有的数据和知识,并支持对系统的增量分 析,所以它能够提高系统理解的效率,特别在大型系统的理解中。 3 、信息浏览 因为大多数程序理解的活动都是在信息浏览时候进行的,因而信息 浏览可能是软件逆向工程三个规范活动中最重要的一个。信息浏览通过 遍历存储着目标系统各种信息的软件逆向工程数据库,按照指定的杯准 来分析和过滤信息,并以多种机制表达所得到的信息,辅助程序理解中 的假设一验证的迭代工程。 ( 1 ) 遍历:对大型系统而言,软件逆向工程所产生的信息结构并 不是线性的,而是一个相互交织的多维信息网。网中的链接代表了软件 逆向工程所产生的组件之间的层次关系、继承关系、数掘流、控制流和 其它关系。遍历采用定向和高级模式匹配等机制,辅助人们浏览软件逆 向工程知识组织阶段所产生的多维信息结构。 ( 2 ) 分析:分析多维信息结构是程序理解的关键,分析从原始数 1 0 中蕾石瀵大学( 华东) 顿士论文第2 章逆商| l i 警综述 据中推导弗抽取那些并不显式存在的信息,并产生关于系统的深层视 图。荛了键秘露户麸多秀瑟瑾舞系统,霹戳翻鬟缡疆浯耋筏翻瓣分援方 法进行编程,并允许用户根据特定的侄务开发特定的分析方法“”。 ( 3 ) 表达:表达怒以可视化方戏表示分析的缡果,它在采用的认 躲蒙臻鏊懿圭,截建绥秘住程霾来表现分辑结栗,戮达嚣一嚣了然熬效 果。 2 。2 逆向工程策略 2 2 。1 自底向上策路 自底向上策略是对源代码进行分析的策略,它从源代码开始,生成 文档描述, 奄建程序豹藤层捶象。朝扶逐行理簿臻序代码牙始,透过发 现相似豹横式( 称为块 ,进行模式豹聚合,并烈避一步抽蒙成为能够 用来识别熙高抽象层的新模式。 2 。2 。2 皇瑗囱下策隆 自顶向下策略是指构造从应用域到实现域的缺射,首先分析应用域 生成假设,然后通过检森程序验证这贱假设。自顶向下策略能熙好的适 应蠢标割鼯懿程彦理瓣 魏用于绘定懿款箨维护酝务) ,毽是遮令策略 依赖于工穰师的专门领域知识。 2 2 3 同步求精策略 嗣步求精蓑臻是一静滋会策碴,它是把瀑瓮璐瓣鑫i e 囱上分援方法 和对应用描述的自硕向下分析方法综合起来的策略,非常适合软件逆向 工程的程序理解要求。i 交种策略分为两个过程:一个过程是对系统的功 疑瞧行袭攒述窝龚臻戆羧行为撵述懿综含过程:嚣一令是怼程澎我码层 的分析过稷。在综合过程中,软件工程师依据注释构造假想设计决策, 按照这个假想设计决策扩展和细化程序的功能性和非功能性的描述,这 中国后油大学( 华东) 硕士论文第2 章逆向。l 稃综述 些描述抽蒙缀成了软件的概念模型。为了检验抽象出来的这个概念模型 是否歪疆,盛矮送行钱翳层分辑。钱褥蔟势掇毽瑟j 砉程_ 事文本滋行分羲 和解析实际设计决策,以验证假想设计决策和进行煎构造溉卿。 同步求精法包括两个软件模型:一个描述程序的源代码,另一个描 述应矮竭麓。软终模墼建立疆君,髯瀵萼亍不鼗麓绥像。 2 3 逆向正程分类 2 3 ,1 代鹚邀向工程 在当静静研究和实筏当中,无论怒正向工程述怒逆淘工程关淀静焦 点都是停留在代码水平上。正向工程盘要的目的是生成高质量的代码。 代码水平的霪要性存在于遗塑系统当巾,这些代码爨藏着系统中霪要戆 规剃。在软件的演纯过程中,源彳弋码发生变记来添绷功能、弥补缺陷以 及提高质量。在缺少文档的系统当中,代码是关于系统的唯一可靠来源。 霾瑟,长嬲以来逆惠王稷购过程一耋集中于对代筠豹理解, 代码逆商工程就是使用遽瞽系绕的源代码作为输入源,这是巍前大 多数逆向程方法的基础。它的目的是恢复模块结构和程序逻辑。同时, 逶过进一步熬分撰可以安璐淘不冠乎爨上懿蓼覆。 基于掰向对象技术,代码逆向工獠根据源代码的不同分为面向过程 代码的逆向工程和面向对象代码的逆向工程。 其中甏囱遂程霞羁豹遂囊工程楚一令重志,这怒霞是过去熬谨多系 统都是面向进程的,需甏向面向对象甲台迁移。因此,许多研究人员对 从传统代码抽取面向对象模型的方法进行了研究。l i 谛w i l d e 定义了两 秘方法来确定霹象,一怒基于全蜀懿辩象确定方法( g b o i ) ,它获与全 局变量有关的子程序中抽取对象;二是基于类裂的对象确定方法 ( t b o i ) ,它通过使用予程序中参数的数据类型柬抽取对象“1 。l n i d a s 2 串罾石油天学( 华东,硕士论文第2 牵遂淘 稃综述 和j o h n s o n 采用了一种基予接收器的对象确定方法,这种方法使用来自子 程穿豹输澎参数斡鼗攥类型寨撞取对象雌;n e w c o m b 稳s n e e d 霞鬻了一耱 动态分析技术实现从遗c o b o l 系统中抽取一个功能上相同的面向对 象模型“。o n g 和t s a i 通过在系统中定义熬有的数据项块来从f o r t r a n 襞羁孛接淑鼹象蹲。a c h e e 嚣c a r v e r 定义了一赣贪婪算法来实瑰获 f o r t r a n 代码中抽取对象,这种算法的基本思想怒最小的参数黛需要得 到最相关的单元,薅个参数的相关度球源于所处理的f o r t r a n 乎程序的 菝繁度蹲。 g o k u lv s u b m m a r d a m 和e r i ej b y m e 通过对前人大量方法总结的基 础上,提燃了一个逆向工程的策略模型如m 2 - 2 , 闻孵给出了9 个输段的 霹蒙模鍪发现过程,魏漤2 - 3 n 示。 躺2 - 2 逆向工程蒙略模型 、o 墨一。、球悄 掰2 - 3 对象模燮发现过挥 中国石油大学( 华东) 硬士论文第2 章逆向二r 稃综述 面向对象软件的逆向工程的研究可分为4 个层次:对象间的窳际关 系撞取、浚诗模式戆鼋鬟躅、覆蠢对象疆痔懿度量帮系绫结稳与域模登载 抽象。其中,第一个层次即对象间的实际关系抽取是本文研究的煎点, 这个层次的研究方法和工具包括: ( 1 ) 静态分辑 对象或类之间的静态关系抽取模型有许多种,现在常用的是已经得 至| j 业界蜚遍认可的、半难则的u m l 炎图。采用u m l 类图表示的c a s e 工吴瑶盔窍r o s e 、t o g e t h e r 、u m l s m d i o 、i d e o g r a m i c u m l 、& 黻蠼i c 等,虽然它们主要是正向工程的建模置具,但都加入了一些软件逆向工 程的组件,能褥到系统基本的u m l 炎图。但是,它 f 】在逆向工程中对 手类之鬻笑系静撞取一般繇跑较翟蝰,不麓褥萋| 类之麓豹一些耩缁关系 和动态关系。 d a n i e l j a c k s o n 等人农他们的工具w o m b l e 中用了一稀类似u m l 类 图熬对象模整,箕中结爨代表一个对象或对象集会,在两结熹之籍有两 种边:一种是由结点a 指向结点b 的带有标签r 的边,表示关系r 由一 个顺序对( a ,b ) 梅成;另一种是由结点a 指向结点b 的带有大的三角箭 头豹未标注边,表示a 怒b 豹子集,边上瑟霹以椽注表达对象关系豹 数目特性及藏变化特性渊。 对象静态关系表示灼另一种方式怒k u n g 提出盼对象关系图( o r d ) , 它可戳掰公式o ) 、7 :e ) 来表示。其中v 为系统的对象集合,e c ( v v ) 表示对象两两之间的关系。k u n g 定义了对象之间的继承( i n h e r e n t ) 、 关联( a s s o c i a t i o n ) 、聚集( a g g 稽g 醴i o 螃篓争争关系在瑟囊对象程彦申瓣表瑰 形式,并谶一步将聚集分为自动、静态、动态方式,将关联分为发好函 数、友好类、友好操作和参数传递方式。根据上述的关系定义,可以抽 孛萎石渔大学 馨东) 蘸毫沦文麓2 耄逆囊l :器综述 取系统的对象关系图。0 r d 主要怒钟对c + + 语言提出的模型,具有一 定静弱羧魏扭“。 ( 2 ) 动态分柝 魂态美嚣撼袋旗篓霹浚焉鞠汽麓绥嚣蓬,袄悫鬻等来表零。 r a i f k o t t m a n a 等入箍密一耱袋黎j a v a 筏强审鎏;髂之藏关系翡元模 型,并在此模魁的基础上采用深度优先的搜索方法取得类的方法激活序 剐,最后德到j a v a 对象的u m l 协作熙,以表达系统的动态行必。他们 提窭熬嚣凌型熏要元素是交量、j a v a 夔器j a v a 类鍪,这些元素逶逑雩l 用或激溪雨漤态联系起来。同封,对嚣索之闻豹雩l 熊籁激活迸撑了翁束 定义,模裂记謦不能表达的约束内袭用u m l 中鲍o c l ( o b j e c tc o n s t r a i n t l a n g u a g e ) 褥富袭这。魏蠢法对予院较大豹系统无法黢鼹,嚣为这徉的系 统搜索空闻太大。并量露模型的构造巾并没有考虑如纛调属、多态等一 些嚣悫霹象串戆蓥本毪骥瀚。 t a r j a s y s t 簿入在王蒸s c e d 审爨现了狡态舀豹稳邋。宅蓄凳在源筏 码中标注岛跟踪的对象有关的事件、条件来预先登配隳跟踪的内容,然 后在系统运行时跺踪这魑登记点缮剿对序痿患,把它输入s c e 玲巾进行 楚理。s e 嚣玲邋避跨圈臻蕊塞鹩努辑,塞动稳造出彝橼透露象簿荚兹 系列的场蒙圈,在此处可以选择个瓣象,由s c e d 爨动合成此对象有 关斡u m l 状态鼹。此方法需要人蔗予颞太多,爨此e t 技复杂。 2 3 2 数据邀两工程 大多数瑟她和z 篷较锌系统楚髂崽系统,也裁憝滋,它 f l 缝护弱处 灌大量翡羚久效务数撵。饯疆遵囱工撵主要集孛在管爨鳃鹰蔹筵瑷翡夭 工理解上,搿数掰逆肉z 程则是她璇储存什么样的倍患和这些信息如 可 被使用的问题。 数撂逆两泛程的磺突一直没眷成为主流匏原嚣圭瑟寄焉个。罄先, 中国石油大学( 华东) 硕士论文第2 章逆向r :群综述 在数据库系统和软件工程领域之间一直有传统的界限;其次,对于研究 人员来说,代码逆向工程在起初的印象上更能激发起他们的兴趣。近来, 数据逆向工程概念和技术在逆向工程领域引起了越来越多的关注,这得 益于大量面向数据软件的升级、移植等所带来的需求啪1 。 通常来说,对使用d b m s 的软件系统持久数据结构进行逆向工程 更精确的称为数据库逆向工程。因为大多数d b m s 提供抽取关于物理 数掘结构初始信息的方法,所以数据库逆向工程比数据逆向工程有更高 的自动化潜在性。因此,这个领域的大多数现存逆向工程工具都适用于 应用数据库平台的信息系统。 数据库逆向工程的主要过程如图2 - 4 。 移檀评估台成 遗留数据库 图2 - 4 数据库逆向【程过程 分析行为的目的是恢复最近的逻辑数据模型,这种模型在结构上是 完整的并且在语义上有注解。概念抽象目的是把来源于数据分析的逻辑 数据模型映射到相应的概念设计中,这种设计通常用实体关系模型或者 中国石油大学( 华东) 硕士论文第2 章逆向一l :科综述 面向对象模型表示,并且达到大多数随后进行的再工程所需的抽象水 平。 数据库逆向工程需要分析数据库种类、挖掘数据库中的数据、与用 户进行交互以及理解源代码d 蚰。数据库逆向工程的输入需求包括属性语 义、属性名致性、数据实例、源代码、候选键、3 n f 、包含关联以及 用户输入,根据不同的输入需求,7 种数据库逆向工程的方法被提出。 c h i a n ge ta 1 提出的方法以数据实例和关系模式作为输入,输出是扩展的 实体关系模型e e r ;j o h a n n e s s o n 提出的方法以关系模式、函数依赖和包 含关联为输入,输出是使用一种语言l 描述的概念模式;m a r k o w i t ze ta 1 提出的方法以关系模式、键值依赖以及基于键的包含关联为输入,输出 是一个e e r 模型;n a v a t h e 和a w o n g 提出的方法输入是关联模式,输出是 e e r 模型;p e t i te ta 1 提出的方法输入是关系模式,数据实例和代码,输 出是e e r 模型;p r e m e r l a n i 和b l a h a 提出的方法输入是关系模式和数据,输 出是一个对象建模技术( o m t ) 模型;s i g n o r ee ta 1 提出的方法以关系模 式和代码为输入,输出是一个e r 模型。 对于大多数遗留系统尤其是石油工程领域的遗留系统来说,它们一 般都具有源代码或数据库,对于它们的逆向工程通常采用代码逆向工程 或数据库逆向工程。在这一节中我们之所以对基于面向对象技术的代码 逆向工程和数据逆向工程方法进行研究,就是为下一步进行基于界面表 单的逆向工程研究提供思路和方法。 7 中国石油大学( 华东) 硕士论文第3 章面向对象技术及建模 第3 章面向对象技术及建模 3 1 面向对象的方法论 3 1 1 面向对象的概念和术语 面向对象是从结构化程序设计中的模块化逐步发展起来的。模块化 是软件分而治之原则的一个体现,它包含抽象化与信息隐蔽两个概念。 从信息系统的发展来看,如果按功能划分就得到结构化方法论,如果按 数据划分就得到数据方法论,按功能和数据合成的对象划分得到了面向 对象方法论。 c o a d 和y o u r d o n 给出了面向对象的定义:面向对象= 对象+ 类+ 继承+ 通信嘲。如果一个软件系统是使用这四个概念设计和实现的,则可以认 为这个软件系统是面向对象的。 对象是面向对象开发模式的基本成分。从面向对象的观点来看,所 有的面向对象程序都是由对象组成的,对象封装数据、操作、其它对象、 常量以及其它相关信息临。 在面向对象的程序设计中,用类表述同种对象的公共属性和特点, 它是所有具有一定共性的对象的抽象,即类是一组具有相同数据结构和 相同操作对象的集合,这组操作叫做类的接口。通过类的继承可以从已 有类中派生新类,新类继承了原始类的特性,新类称为原始类的派生类, 而原始类称为派生类的基类。 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接 口。 3 1 2 对象的属性和相互关系 l 、对象的属性 状态和行为是对象的主要属性。对象的状态又称为对象的静态属性, 中国石油大学( 华东) 硕士论文第3 章面向对象技术及建模 主要指对象内部所包含的各种信息,也就是变量。行为是对象的第二个 属性,又称为对象的操作。对象的操作一般都基于对象内部的变量,通 过对这些变量的改变实现其功能。 2 、对象之间的关系 一个复杂的系统必然包括多个对象,这些对象间可能存在的关系有: 包含、继承和关联。 3 2 面向对象方法论 常见的方法论有b o o e h 的面向对象方法论、r u m b a u g h 的对象模型技 术( o m t ) 、j a e o b s o n 的面向对象软件( o o s e ) 等。 面向对象方法有统一的动向。b o o e h 、r u m b a u g h 及j a e o b s o n - 一个面 向对象技术名家,以r a t i o n a l 的名义向o m g 提出意见书,建议把他们共 同设计i 勺u r t i f i e d m o d e l i n gl a n g u a g e ( u m l ) 作为面向对象设计标准。 u m l 是以b o o e h 的类图、r u m b a u g h 的o m t 类图以及j a c o b s o n 的u s ec a s e 为基础而形成的。它现在己成为事实上的标准,但要成为软件界公认的 统一标准,尚有待实践的考验。 3 2u m l 建模技术 u m l 是一种定义良好、易于表达、功能强大且普遍适用的建模语 言。它溶入了软件工程领域的新思想、新方法和新技术。它的作用域不 限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的 全过程1 。 标准建模语言u m l 的重要内容可以由下列五类图( 共9 种图形) 来定 义: 第一类是用例图,从用户角度描述系统功能,并指出各功能的操作 者。 9 中国石油大学( 华东) 硕士论文第3 辈面向对象技术及建模 第二类是静态图,包括类图、对象图和包图。其中类图描述系统中 类戆羚态终毪。类蚕援遮戆是一秘静态关系,在系统豹整个生鑫髑蘩帮 是有效的。对象图是类瀚的实例,几乎使用与类圈究全相同的椽识。它 们的不同点在于对象图照示类的多个对象实例,而不是实际的类,包图 燕子搐述系缓懿势覆结稼。 第三类是行为图,描述系统的动态模型和组成对象日j 的交飘关系, 包括状态圈和活动图。其中状态图描述类的对象所祷可能的状态以及事 箨发生嚣状态匏转移条锋。逶鬻,狡态图是霹类辫静静充。嚣滋渤霆摇 述满足用例蕊求所要进行的活动以及活动间的约束关系,有利予识别并 行活动。 第霆炎建交互圈,捺述对象弱豹交互关系。冀审颓穿嚣显豢对象之 间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之 间的交互。会作匿描述对象间的协作关系,合作图跟顺序图相似,显示 霹象闽静动态合作关系。这两耱围会称为交互囤。 第五类是实现图,包括构件图和酉已置图。其中构件图描述代码部件 的物理结构及各部件之阕的依赖关系。构传图有助于分析和理解部件之 闻静籀互影鹅程度。酝嚣溪定义系统巾软硬件的耱淫体系结梅。它可以 显示实际的计算机和设备( 用节点表示) 以及它们之间的连接关系,也可 显示连接的类型及部 牛乏阊鳆依赖性。 获应用的角度看,溺采用蘑向辩象技术设计系统对,首先怒攒述需 求;其次根据需求建立系统的静态模越,以构造系统的结构;第三步是 描述系统盼行为。其中猩第一步与第:步中所建立的模型都是静态的, 包括用镧黧、类图、对象图、组俘圈年珏配置图等五个图形,是u m l 静静 态建模机制。其中第三步中所建立的模型或者可以执行,或者袭示执行 时的时序状态或交互关祭。它包括状态图、活动图、蹶序图帮会馋图等 中国干i 油大学( 华东) 硕士论文第3 章面向对象技术及建模 四个图形,是u m l 的动态建模机制。因此,标准建模语言u m l 的主要内 容氇霉戮麴纳受静态建镤瓠翻弱动淼建模瓠翱强大类。 逆向工程中很重要的一项活动就是知识组织,它要把收集别的数据 用适当的数据模型保存起来,以便实现有效的存储和检索,并反映用户 对系统将缝豹了薅程爱。遂蠢工程孛绶塞屡魏接象是缛嚣遗蘩系统豹凝 念模型,知识组织活动就要把这个概念模型采用一定的形式进行表示。 概念模型霈要描述待歼发的信息系统现实世界中的静态特性和动态特 性。在过去静若予年孛,疆密了诲多建立橇念挨整翁方法,毽建,大多 数的方法都对两个方面分别建模:静态特性是用e 墩模型,动态特性用过 程模型踟。因此,这些方法在描述概念模型方面都是不完全的。u m l 建 模语言在弦述概念摸羹方面吴有嚣鬻犬豹优势,蒜俸俸现在 奠下冗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论