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.
The example of forward engineering is the construction of electronic kit, construction of DC MOTOR , etc.
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 an 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.
An example of backward engineering is research on Instruments etc.
Forward Engineering
Reverse Engineering