学位论文 > 优秀研究生学位论文题录展示

软件逆向工程技术研究

作 者: 陈昊鹏
导 师: 李伟华
学 校: 西北工业大学
专 业: 计算机软件与理论
关键词: 软件逆向工程 程序理解 设计决策 再工程 遗产系统 面向对象的软件逆向工程数据库 软件逆向工程辅助工具
分类号: TP311.5
类 型: 博士论文
年 份: 2002年
下 载: 1200次
引 用: 9次
阅 读: 论文下载
 

内容摘要


软件逆向工程从可运行的程序系统出发,生成对应的源程序、系统结构以及相关设计原理和算法思想的文档等。它具有重大现实意义和经济价值,不但可以避免重复劳动,提高软件生产的效率和质量,而且可以将大量的遗产系统转化为易演化系统,从而充分有效地利用这些有用资产。虽然近年对软件逆向工程的研究已有不少,但是它仍然属于一个未充分发展的领域,并未形成统一的标准、方法和过程,因此很有必要进行深入研究。 本文以航空基金项目和陕西省自然科学基金项目为背景,结合272高空无线电高度表项目,在参阅了国内外的大量文献的基础上,按照申报航空基金的批准意见,围绕着“从源程序出发,生成可用于再工程的有关系统结构、设计原理和算法思想的文档”这个重点,对软件逆向工程的理论和方法进行了较为深入的研究,主要内容和技术创新包括: 1.提出应该构建面向对象的软件逆向工程数据库以支持软件逆向工程的特殊要求,并加以设计实现。 面向对象的数据库比关系型数据库更能够适应由软件逆向工程数据其自身的特点所产生的对软件逆向工程数据库的特殊要求,而且面向对象的软件逆向工程数据库能够对软件逆向工程的规范活动提供有效的支持。因此构建面向对象的软件逆向工程数据库是理想的选择。 本文中对面向对象的软件逆向工程数据库所作的设计工作包括:构造了用于表示软件逆向工程数据的各种类,并且描述了这些类之间的关系;构建了基于C/S结构和基于Intranet结构的两种面向对象的软件逆向工程数据库的总体结构;构建了面向对象的软件逆向工程数据库的管理系统框架,包括对集体开发的管理、对类库的管理以及使用OQL语言对数据库进行查询的管理等;构建了软件逆向工程数据库的备份机制,包括建立日志和使用快照及触发器建立数据副本。这样一套系统化的实现方案可以对建立、管理和使用软件逆向工程数据库进行全面的指导。 2.提出将同步细化策略作为软件逆向工程的程序理解策略,这一点是基于作者的实际工作经验而提出的。同步细化策略基于对设计决策的探测,它比自顶向下策略和自底向上策略g绷更好地克B脐剔宇理解中的困难,同时它所产生的再工程的设计也更she应软件逆向工程的需要。 3,提出在目前的技术条件下,应该开发软件逆向工程的辅助工具,并且给出了开发的原则:尽量直接利用现有的各种工具软件作为软件逆向工程的辅助工具,或者选择在其基础之上只需作少量开发的软件来开发软件逆向工程的辅助工具。提出这样的原则是因为在目前的技术条件下尚无法开发自动化的软件逆向工程工具,而很多现有软件可以对软件逆向工程的不同阶段提供辅助支持作用,从头开 以软件既费时又费力,而且违背软件逆向工程加速软件生产的初衷。 4.提出了一种通过反汇编和汇编改写再生汇编源程序的方法。这种方法本质上是一种针对机器码和中间代码的程序理解方法,通过它可以得到逆向生成的汇编源程序。 5.针对具体问题,完成了一个软件逆向工程的实例和两个再工程的实例。本文中关于软件逆向工程技术的一些观点正是在这些实例的基础上提出的。 本文从理论、方法和应用三方面对软件逆向工程中的若干问题进行了研究,内容包括:程序理解的策略与方法、设计诀策的解析、数据的组织、信息的存储、工具的开发等,力求能够为软件逆向工程进行多方面的支持。

全文目录


第一章 绪论  12-16
  1.1 本文的研究意义与目的  12-13
  1.2 本文研究的题目来源  13
  1.3 本文研究的内容  13-14
  1.4 国内外的现状  14-16
第二章 软件逆向工程概述  16-24
  2.1 软件逆向工程的定义及相关概念  16-18
  2.2 软件逆向工程的规范活动  18-20
    2.2.1 数据收集  18-19
    2.2.2 知识组织  19
    2.2.3 信息浏览  19-20
  2.3 软件逆向工程的描述模型  20-21
  2.4 软件逆向工程所面临的法律问题  21-23
  2.5 小结  23-24
第三章 程序理解策略与设计决策  24-41
  3.1 软件逆向工程中程序理解的任务  24-26
    3.1.1 程序理解的重要性与定义  24
    3.1.2 程序理解的任务  24-25
    3.1.3 程序理解的困难  25
    3.1.4 程序理解策略的分类  25-26
  3.2 自底向上策略和自顶向下策略  26-28
    3.2.1 自底向上策略  26-27
    3.2.2 自顶向下策略  27-28
  3.3 同步细化策略  28-30
    3.3.1 同步细化策略的含义和过程  28-29
    3.3.2 同步细化策略对系统表示方法的要求  29
    3.3.3 同步细化策略更适合软件逆向工程  29-30
  3.4 程序设计决策  30-33
    3.4.1 设计决策的分类  30-31
    3.4.2 假想设计决策与实际设计决策  31-33
  3.5 解析程序设计决策  33-40
    3.5.1 解析设计决策的过程  33
    3.5.2 解析高层设计决策  33-34
    3.5.3 软件结构的典型形式  34-36
    3.5.4 程序各模块之间的耦合  36-38
    3.5.5 解析低层设计决策  38
    3.5.6 模块内部的内聚强度  38-40
  3.6 小结  40-41
第四章 软件逆向工程中的程序理解方法  41-61
  4.1 程序理解方法分类  41
  4.2 反汇编技术  41-44
    4.2.1 反汇编与汇编改写密不可分  41-42
    4.2.2 通过反汇编得到“初始”汇编语言代码  42-43
    4.2.3 通过汇编改写得到汇编源程序  43-44
    4.2.4 反汇编与汇编改写离不开程序员  44
  4.3 程序切片法  44-50
    4.3.1 程序切片定义  44-45
    4.3.2 语句切片  45-46
    4.3.3 切片精度  46-47
    4.3.4 构建动态切片  47
    4.3.5 动态切片并非总是最优  47-48
    4.3.6 对动态切片的改进  48-50
    4.3.7 一些其它的切片方法  50
  4.4 格局识别法  50-59
    4.4.1 格局识别法定义  50
    4.4.2 运用人工智能方法的格局识别  50-53
    4.4.3 运用行为层次结构进行格局识别的实例  53-56
    4.4.4 Kautz & Allen算法在程序理解中的问题  56-57
    4.4.5 Kautz & Allen算法的改进  57-59
  4.5 其它程序理解方法  59-60
    4.5.1 概念赋值和概念分析法  59
    4.5.2 模式匹配法  59
    4.5.3 智能理解法  59-60
  4.6 小结  60-61
第五章 建立面向对象的软件逆向工程数据库  61-87
  5.1 选择面向对象数据库组织数据  61-66
    5.1.1 软件逆向工程数据的内容  61-62
    5.1.2 软件逆向工程数据的特点  62
    5.1.3 构建软件逆向工程数据库的特殊要求  62-63
    5.1.4 关系型软件逆向工程数据库的缺点  63-64
    5.1.5 面向对象数据库简介  64-65
    5.1.6 选择面向对象数据库的原因  65-66
  5.2 用对象形式组织软件逆向工程数据的方法  66-76
    5.2.1 围绕设计决策组织数据  66
    5.2.2 文档类(Document Class)  66-68
    5.2.3 变量类(Variable Class)  68-69
    5.2.4 假想设计决策类(Hypoth Design Decision Class)  69-72
    5.2.5 实际设计决策类(Real Design Decision Class)  72-75
    5.2.6 类的继承  75-76
    5.2.7 各种数据之间的关系  76
  5.3 软件逆向工程数据库的结构  76-79
    5.3.1 软件逆向工程数据库的C/S结构  76-77
    5.3.2 基于Intranet的软件逆向工程数据库结构  77-79
  5.4 软件逆向工程数据库的管理  79-82
    5.4.1 集体开发的要求  79
    5.4.2 针对集体开发的管理功能  79-80
    5.4.3 对多个开发者所作修改的合并  80-81
    5.4.4 对类库的管理  81
    5.4.5 使用OQL对象查询语言进行查询  81-82
  5.5 软件逆向工程数据的备份机制  82-84
    5.5.1 建立日志(log)  82-83
    5.5.2 建立数据库的副本  83-84
  5.6 面向对象的软件逆向工程数据库对软件逆向工程的支持  84-85
    5.6.1 对软件逆向工程规范活动的支持  84-85
    5.6.2 对同步细化策略所要求的系统表示法的支持  85
  5.7 小结  85-87
第六章 软件逆向工程辅助工具的研究  87-96
  6.1 开发软件逆向工程辅助工具的意义与原则  87-89
    6.1.1 开发自动化的软件逆向工程工具的困难  87
    6.1.2 软件逆向工程辅助工具的分类  87-88
    6.1.3 开发软件逆向工程辅助工具的原则  88-89
  6.2 现有的各种可利用的辅助工具软件  89-94
    6.2.1 辅助程序理解的工具  89-91
    6.2.2 面向对象的数据库管理系统——PostgreSQL  91-92
    6.2.3 网络通讯平台——Domino/Notes  92-93
    6.2.4 流程图绘制工具——SmartDraw  93
    6.2.5 选取合适的工具软件  93-94
  6.3 未来软件逆向工程辅助工具开发的方向  94
  6.4 小结  94-96
第七章 无线电高度表控制软件的逆向工程与再工程  96-124
  7.1 无线电高度表简介  96-101
    7.1.1 课题背景  96
    7.1.2 无线电高度表工作的基本原理  96-98
    7.1.3 无线电高度表的工作状态  98-100
    7.1.4 与微处理器有关的硬件设计  100-101
  7.2 实时控制软件的逆向工程  101-116
    7.2.1 构造高层假想设计决策  101-104
    7.2.2 解析得到的高层设计决策  104-107
    7.2.3 解析低层设计决策  107-114
    7.2.4 解析低层设计决策时使用的辅助方法  114-116
  7.3 再工程之一:272高空无线电高度表  116-120
    7.3.1 将测高范围扩大  117
    7.3.2 将英制单位转化为公制单位  117-118
    7.3.3 增加控制发射功率功能  118
    7.3.4 增加数字显示  118-119
    7.3.5 272高度表的总结  119-120
  7.4 再工程之二:WRXX无线电高度表  120-123
    7.4.1 WRXX高度表的设计要求  120
    7.4.2 使用高性能的微处理器  120-121
    7.4.3 测高机制的改进  121
    7.4.4 平滑算法的改进  121-122
    7.4.5 对差拍频率的控制  122-123
    7.4.6 WRXX高度表的总结  123
  7.5 小结  123-124
第八章 结束语与展望  124-127
致谢  127-128
发表论文情况  128
参加科研情况  128-129
参考文献  129-137
附件: 272高空无线电高度表设计定型审查报告与微处理器控制软件验收书  137-141

相似论文

  1. 面向SMDA的服务建模方法及工具实现,TP311.52
  2. 军事演习中工兵团工程装备维护保障资源配置研究,E251.2
  3. 广州亚运场馆工程代建存在的问题及对策研究,G812.2
  4. 高考数学创新性试题命题研究,G633.6
  5. 我国高校BOT工程项目风险评价研究,G647
  6. 铁尾矿砂混凝土的配制与应用研究,TU528
  7. 基于能源消耗的建筑工程生态足迹评价,X826
  8. 新疆油田地面工程造价指标和管理信息系统的研究与应用,F284
  9. 建筑工程生命周期人体健康损害评价体系研究,R131
  10. 工程兵指挥自动化系统的设计与实现,TP311.52
  11. 银行ATM界面设计研究,TP11
  12. 建设工程事故致因相互影响关系研究,TU714
  13. 猪链球菌2型与猪胸膜肺炎放线杆菌基因工程亚单位疫苗的研究,S858.28
  14. 酸溶液对壳聚糖/羟基磷灰石复合材料的结构与性能的影响研究,R318.08
  15. 工程主体的伦理责任研究,B82-057
  16. 水葫芦对浮游动物群落及部分种群遗传结构的影响分析,X174
  17. 阿特拉津降解菌生物学特性的研究,关键降解酶基因克隆及基因簇的构建,X172
  18. 铁炭芬顿—生物组合工艺处理焦化废水的实验研究,X784
  19. 芽孢杆菌yczE基因生防功能分析及表达Harpin蛋白的工程菌防病效果研究,S476.1
  20. 大豆生物种衣剂的研制与应用,S565.1
  21. 组织工程化类金刚石涂层瓣膜构建及其体内植入的初步研究,R654.2

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序设计、软件工程 > 软件工程
© 2012 www.xueweilunwen.com