正在加载图片...
的。这些程序没有规格说明,对它们的了解很模糊。因此,软件的逆向工程是分析程序,力 图在比源代码更高抽象层次上建立程序表示的过程。逆向工程是设计恢复的过程。逆向工程 工具可以从已存在程序中抽取数据结构、体系结构和程序设计信息 再工程,也叫做复壮(修理)或再生。它不仅能从已存在的程序中重新获得设计信息,而 且还能使用这些信息来改建或重构现有的系统,以改进它的综合质量。一般软件人员利用再 工程重新实现已存在的程序,同时加进新的功能或改善它的性能。 为了执行预防性维护,软件开发组织必须选择在最近的将来可能变更的程序,做好变更 它们的准备。逆向工程和再工程可用于执行这种维护任务 (2)逆向工程 逆向工程就好象是一个魔术管道。我们把一个非结构化的无文档的源代码或目标代码清 单喂入管道,则从管道的另一端出来计算机软件的全部文档。逆向工程可以从源代码或目标 代码中提取设计信息,其中抽象的层次、文档的完全性、工具与人的交互程度,以及过程的 方法都是重要的因素。如图79所示。 非结构化源代码 重构代码 分析语句 结构化源代码 理解处理 分析模式 提取抽象 理解界面 分析模块 初始的规格说明 理解数据 分析程序 求精与简化 分析系统 最终的规格说明 图79逆向工程过程 逆向工程的抽象层次和用来产生它的工具提交的设计信息是原来设计的赝品,它是从源 代码或目标代码中提取出来的。理想情况是抽象层次尽可能地高,也就是说,逆向工程过程 应当能够导出过程性设计的表示(最低层抽象)、程序和数据结构信息(低层抽象)、数据和控 制流模型(中层抽象)和实体联系模型(高层抽象)。随着抽象层次的増加,可以给软件工程师 提供更多的信息,使得理解程序更容易。 逆向工程的文档完全性给出了一个抽象层次所能提供细节的详细程度。在多数情况下, 文档完全性随着抽象层次的增加而减少。例如,给出一个源代码清单,可利用它得到比较完 全的过程性设计表示;可能还能得到简单的数据流表示:但要得到完全的数据流图则比较困 如果逆向工程过程的方向只有一条路,则从源代码或目标代码中提取的所有信息都将提 供给软件工程师。他们可以用来进行维护活动。如果方向有两条路,则信息将反馈给再工程 工具,以便重新构造或重新生成老的程序。 3)软件再工程 再工程组合了逆向工程的分析和设计抽象的特点,具有对程序数据、体系结构和逻辑的 重构能力。执行重构可生成一个设计,它产生与原来程序相同的功能,但具有比原来程序更 高的质量。18 的。这些程序没有规格说明,对它们的了解很模糊。因此,软件的逆向工程是分析程序,力 图在比源代码更高抽象层次上建立程序表示的过程。逆向工程是设计恢复的过程。逆向工程 工具可以从已存在程序中抽取数据结构、体系结构和程序设计信息。 再工程,也叫做复壮(修理)或再生。它不仅能从已存在的程序中重新获得设计信息,而 且还能使用这些信息来改建或重构现有的系统,以改进它的综合质量。一般软件人员利用再 工程重新实现已存在的程序,同时加进新的功能或改善它的性能。 为了执行预防性维护,软件开发组织必须选择在最近的将来可能变更的程序,做好变更 它们的准备。逆向工程和再工程可用于执行这种维护任务。 (2) 逆向工程 逆向工程就好象是一个魔术管道。我们把一个非结构化的无文档的源代码或目标代码清 单喂入管道,则从管道的另一端出来计算机软件的全部文档。逆向工程可以从源代码或目标 代码中提取设计信息,其中抽象的层次、文档的完全性、工具与人的交互程度,以及过程的 方法都是重要的因素。如图 7.9 所示。 逆向工程的抽象层次和用来产生它的工具提交的设计信息是原来设计的赝品,它是从源 代码或目标代码中提取出来的。理想情况是抽象层次尽可能地高,也就是说,逆向工程过程 应当能够导出过程性设计的表示(最低层抽象)、程序和数据结构信息(低层抽象)、数据和控 制流模型(中层抽象)和实体联系模型(高层抽象)。随着抽象层次的增加,可以给软件工程师 提供更多的信息,使得理解程序更容易。 逆向工程的文档完全性给出了一个抽象层次所能提供细节的详细程度。在多数情况下, 文档完全性随着抽象层次的增加而减少。例如,给出一个源代码清单,可利用它得到比较完 全的过程性设计表示;可能还能得到简单的数据流表示;但要得到完全的数据流图则比较困 难。 如果逆向工程过程的方向只有一条路,则从源代码或目标代码中提取的所有信息都将提 供给软件工程师。他们可以用来进行维护活动。如果方向有两条路,则信息将反馈给再工程 工具,以便重新构造或重新生成老的程序。 (3) 软件再工程 再工程组合了逆向工程的分析和设计抽象的特点,具有对程序数据、体系结构和逻辑的 重构能力。执行重构可生成一个设计,它产生与原来程序相同的功能,但具有比原来程序更 高的质量。 图 7.9 逆向工程过程 非结构化源代码 结构化源代码 初始的规格说明 最终的规格说明 理解界面 理解处理 理解数据 分析模式 分析模块 分析程序 分析语句 求精与简化 分析系统 提取抽象 重构代码
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有