Difference Between Forward Engineering and Reverse Engineering

Difference Between Forward Engineering and Reverse Engineering in Tabular Form

Forward Engineering: A software is constructed from the zero levels ‘Core’ is called Forward engineering.

Reverse Engineering: A software that is needed to upgrade or which is needed to be a shift to other operating systems, this type of engineering is called Reverse engineering.

Comparison Chart

In forward engineering, the application is developed with the given requirements. In reverse engineering or backward engineering, the information is collected from the given application.
Forward Engineering is a high proficiency skill. Reverse Engineering or backward engineering is a low proficiency skill.
Prescriptive Nature Adaptive Nature
High Skills Needed Low Skills Needed
More Time required Less Time required

Forward Engineering

  • Forward engineering is a process of obtaining desired software from the specifications in hand which was brought down by means of reverse engineering. It assumes that there was some software engineering already done in the past.
  • Forward engineering is the same as the software engineering process with only one difference it is carried out always after reverse engineering.
  • The forward engineering process applies software engineering principles, concepts, and methods to recreate an existing application. In most cases, forward engineering does not simply create a modern equivalent of an older program.
  • Rather, new user and technology requirements are integrated into the reengineering effort.
  • The redeveloped program extends the capabilities of the older application.

Reverse Engineering

  • Reverse engineering can extract design information from source code, but the abstraction level, the completeness of the documentation, the degree to which tools and a human analyst work together.
  • The directionality of the process are highly variable.
  • The abstraction level of a reverse engineering process and the tools used to effect it refers to the sophistication of the design information that can be extracted from source code.
  • Ideally, the abstraction level should be as high as possible.
  • That is, the reverse engineering process should be capable of deriving procedural design representations (a low-level abstraction), program and data structure information (a somewhat higher level of abstraction), object models, data and/or control flow models (a relatively high level of abstraction), and entity-relationship models (a high level of abstraction).
  • As the abstraction level increases, you are provided with information that will allow easier understanding of the program
  • The completeness of a reverse engineering process refers to the level of detail that is provided at an abstraction level. In most cases, the completeness decreases as the abstraction level increases.
  • Interactivity refers to the degree to which the human is “integrated” with automated tools to create an effective reverse engineering process.
  • In most cases, as the abstraction level increases, interactivity must increase or completeness will suffer.
  • The directionality of the reverse engineering process is one-way, all information extracted from the source code is provided to the software engineer who can then use it during any maintenance activity.


Please enter your comment!
Please enter your name here