第一章 绪论 | 第1-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页 |