正向工程与逆向工程的区别

17 Mar 2025 | 5 分钟阅读

正向工程逆向工程都是再工程过程的一部分,并且密切相关。正向工程和逆向工程的主要区别在于,正向工程在重构过程中会采用被重构系统中的变化。相比之下,逆向工程的唯一目的是检查系统,以获得更抽象的设计。

软件再工程不过是旧系统的更可持续的版本。为了使系统能够演进,必须对需要更改的当前系统进行整合,以便可以实施修改并对系统进行更改。

什么是正向工程?

Difference Between Forward Engineering and Reverse Engineering

正向工程是一种根据给定需求创建应用程序的方法。正向工程的另一个词是回收或翻新。设计应用程序所需的时间很长,并且需要非常高的技能。正向工程本质上是一种策略,它允许我们使用复杂的低级信息来生成复杂的高级设计或模型。因此,这种工程使用了完全不同的一组信息处理和打包概念。

它适用于所有包含SDLC(软件开发生命周期)的软件工程过程,用于重新创建当前应用程序。在这里,正向工程的主要目标是完成再工程过程,以满足新消费者的需求。

关于正向工程我们需要知道什么

  • 逆向工程可以从源代码中提取设计信息,但这取决于抽象程度、文档的详细程度以及工具和人工分析师协作的程度。
  • 过程的方向性差异很大。
  • 可从源代码派生的设计信息的复杂性是指逆向工程过程的抽象级别以及为实现它而使用的工具。
  • 理想情况下,抽象级别应尽可能高。
  • 在给定抽象级别上提供的详细程度被称为逆向工程过程的完整性。随着抽象次数的增加,完整性通常会下降。
  • 交互是指在人工与自动化技术集成以成功进行逆向工程的程度。
  • 在许多情况下,随着抽象级别的提高,交互必须增加,否则完整性会受到影响。
  • 逆向工程方法具有单向性:从源代码中获得的所有知识都会发送给软件工程师,以便在将来的维护任务中使用。
  • 反向工程的一个例子是对仪器等的研发。

什么是逆向工程?

Difference Between Forward Engineering and Reverse Engineering

这种工程通常被称为反向工程。本质上,逆向工程是一个与正向工程相似的过程,但它是反向进行的。在此步骤中,会从预先存在的给定应用程序中收集信息。这种技术在创建应用程序时比正向工程花费的时间少得多。逆向工程将应用程序分解成小系统,以发现其内部架构或知识。

逆向工程的优点

以下是逆向工程的优点:

  • 探索现有设计和操作
    通过逆向工程,我们可以观察已经存在的东西。这包括可能以其他方式为社区服务的任何组件、系统过程。通过分析现有产品,可以实现创新和发现。
  • 发现任何产品漏洞
    逆向工程有助于识别产品缺陷,就像在上一步中一样。这样做是为了保护产品用户的安全和福祉。理想情况下,问题应在研究阶段而不是分发阶段出现。
  • 用旧思想启发创意
    最后,逆向工程为创新设计提供了一种途径。工程师在过程中可能会遇到一个系统,该系统可能对一个完全不相关的项目有价值。这表明了工程如何将任务与先前的知识联系起来。
  • 为未来参考创建可靠的CAD模型
    大多数逆向工程过程都包括创建功能齐全的CAD文件供将来使用。为了在以后出现问题时能够以数字方式检查零件,会创建一个CAD文件。这种技术提高了产品的表达能力和工程生产力。
  • 推出更便宜、更高效的产品
    逆向工程的基本目标是引导工程师走向成功和创新。为了成功,需要降低制造成本并最大化产品功效。
  • 重建过时产品
    了解产品本身是重新设计现有产品的重要组成部分。借助逆向工程,我们可以直观地解决过时系统中的疑难杂症。在此过程中最重要的因素是质量。

正向工程与逆向工程的区别

Difference Between Forward Engineering and Reverse Engineering
参数正向工程逆向工程
定义正向工程是一种基于客户或消费者提供的规范进行工作的创造或开发。在这种情况下,规范是在应用程序开发之前提供的。逆向工程是一种创造或开发方法,其中创造是基于从已生成的产品或客户/客户提供的更改/增强功能中获取的需求进行的。
专业技能如前所述,应用程序必须从头开始开发,因此正向工程需要高技能的专业知识来选择方法和规划开发。逆向工程即使在专业技能较低的情况下也能工作。
性质正向工程本质上是预测性的。逆向工程本质上是适应性的。
示例任何根据指定需求开始或即将开始的新开发的应用程序或系统都是正向工程的例子。逆向工程主要包括研究和研发工作,这些工作可能会被纳入已创建的应用程序或系统中,以提高性能并添加功能。
执行时间正向工程比逆向工程花费更多时间,因为应用程序必须从头开始创建,并且所有规划和技术都必须在实际开发开始之前完成。逆向工程设计应用程序所需的时间较少,因为只需进行修改和改进,而无需更改应用程序的核心功能。
确定性开发始终符合规范的应用程序。从实现中,可以得出关于需求的几个结论。
精度模型必须是准确全面的。即使是不完善的模型也可以提供部分信息。

正向工程与逆向工程之间的主要区别

  • 正向工程从系统规范开始,包括正在开发系统的设计和实现。另一方面,逆向工程从现有系统开始,而替换的开发技术取决于解释。
  • 在正向工程的情况下,总能保证生成副产品,但在逆向工程的情况下,会产生许多关于需求的想法,而不一定会产生结果。
  • 正向工程本质上是规范性的,要求开发人员遵循特定的指南以获得期望的结果。另一方面,逆向工程要求工程师弄清楚开发人员实际做了什么。
  • 与逆向工程相比,正向工程需要更多的时间。
  • 正向工程的输出需要准确和完整。相比之下,即使逆向工程模型有缺陷,检索到的部分信息仍然有用。

结论

正向工程涉及对目标系统的更改,而逆向工程仅对其进行分析。这些也是再工程过程的要素。


下一主题区别