逆向工程
| 项目 | 内容 |
|---|---|
| 来源 | 录播 |
| 章节 | 第十一章-软件工程 |
| 标签 | 讲义 |
| 页数 | 5 |
| 总字数 | 1466 |
| 原始课件 | 基础录播课/第十一章-软件工程/逆向工程.pdf |
本文由课件自动整理,页内文字按原始讲义阅读顺序还原;
[图]表示该位置存在图示,图示内容请对照原始课件查看。
目录
第 1 页 · N E W P L A N
软考高级架构师
一
段
新
征
程
第 2 页 · 大纲介绍
提示:本页以图示为主,下列文本为图中标注文字。
[图]
第 3 页 · 逆向工程
软件复用:是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复
用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指
程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切
有关方面。
逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向
工程是设计的恢复过程。
逆向工程的四个级别:
•
实现级:包括程序的抽象语法树、符号表、过程的设计表示。
•
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
•
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
•
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如E-R模型。
其中,领域级抽象级别最高,完备性(完整)最低,实现级抽象级别最低,完备性最高。
第 4 页 · 逆向工程
实现级(Implementation Level):
•
例子:比如我们要逆向工程一个简单的计算器程序。在实现级别,我们可以通过分析程序的源代码,了解它是
如何实现加法、减法、乘法和除法的,还可以找到程序中定义的变量和函数。
结构级(Structural Level):
•
例子:对于一个网站的逆向工程,我们可以在结构级别分析页面之间的跳转关系,了解不同页面的组织结构,
确定哪些页面是主要页面、哪些页面是引用页面等。
功能级(Functional Level):
•
例子:假设我们想逆向工程一个邮件客户端。在功能级别,我们可以分析程序的逻辑和流程,理解用户发送邮
件的过程、邮件的接收和显示等功能的实现方式。
领域级(Domain Level):
•
例子:一个电子商务网站的逆向工程可以涉及领域级别的分析。我们可以通过分析程序中的实体和关系,了解
不同产品、订单和用户之间的关系,进而理解电子商务业务流程。
第 5 页 · 逆向工程-与逆向工程相关的概念
重构是指通过改变程序的内部结构,以改进其设计、可读性、可维护性和性能,而不改变其外部行为。重构可以
通过重新组织代码、简化算法、消除重复等方式来改善程序的质量和结构。
•
假设我们有一个庞大而复杂的代码库,并且我们意识到其中的某个函数或模块存在问题。我们可以对该函数或模块进行重构,以
提高其可读性、可维护性和性能,同时保持其外部行为一致。
设计恢复是指通过对已有软件系统的逆向工程分析,还原出其设计和结构。这可以帮助我们理解现有系统的组织方
式、模块之间的关系以及它们之间的交互。
•
假设我们继承了一个老旧的软件系统,但缺乏相关的文档和设计说明,我们可以使用逆向工程技术对该系统进行分析,还原出其
设计和结构,以便更好地理解和维护它。
再工程是指对现有软件系统进行重构、改进和现代化,以满足新的需求、提高性能或增强可维护性等方面的要求。
是在逆向工程所获得信息的基础上,修改或重构已有的系统,产生系统的一个新版本
•
假设我们的软件系统存在性能问题,并且需要对其进行优化。我们可以进行再工程,在保持系统功能不受影响的情况下,通过对
其进行重构、重新设计和优化,以提高其性能和可维护性。
正向工程是指将软件设计的高级概念和抽象转化为实现代码的过程。它是逆向工程的相反过程,不仅从现有系统中
恢复设计信息,而且使用该信息去改变或重构现有系统
•
假设我们在软件设计阶段使用UML建模工具,我们可以使用正向工程将UML模型转化为具体的代码实现,从而生成可执行程序。