Forward engineering and Reverse engineering are part of the re-engineering process and closely related. The crucial difference between the forward engineering and reverse engineering is that forward engineering employs the change in the subject system during restructuring. Conversely, reverse engineering whole sole purpose is to examine the system to obtain its more abstract design.
Software re-engineering is nothing but the re-implementation of the legacy system to achieve more sustainability. The evolution of the system requires the assimilation of the existing system that has to be changed so that the system can be altered by implementing the changes.
Content: Forward Engineering Vs Reverse Engineering
|Basis for comparison||Forward Engineering||Reverse Engineering|
|Basic||Development of the application with provided requirements.||The requirements are deduced from the given application.|
|Certainty||Always produces an application implementing the requirements.||One can yield several ideas about the requirement from an implementation.|
|Needed skills||High proficiency||Low-level expertise|
|Accuracy||Model must be precise and complete.||Inexact model can also provide partial information.|
Definition of Forward Engineering
Forward engineering is a process of constructing an application with the help of the general requirements of the final implementation. Elliot J. Chikofsky and James H. Cross used the term “forward engineering” in their paper in the year of 1990 and associated it with the conventional development. As mentioned above the system evolution technique requires proper understanding of the existing software or programs then only the new changes could be introduced and implemented.
The forward engineering involves the building of a product by following the general specification, where the old system specifications are analyzed, restructured and regenerated to obtain the best quality product.
The other names used for forward engineering are “renovation and reclamation” because it not only retrieve the design information from the existing software but also utilizes this information in making a superior quality product.
Definition of Reverse Engineering
Reverse engineering, as the name suggests is the inverse process of the forward engineering where the existing system is analyzed to produce the documentation of the existing system. Initially, reverse engineering is implemented on hardware where the exercise of deciphering designs from the finished products is prevalent.
However, when a new application is developed, the reverse engineering is intended to discover the system’s components and their relationship. The existing software code is analyzed at certain levels of abstraction – system, component, program, statement, and pattern.
This recovery of data, architectural, procedural design information is accomplished to build a representation of the program considering the higher level of abstraction relative to the source code.
Key Differences Between Forward Engineering and Reverse Engineering
- Forward engineering begins with the system specification and includes the design and implementation of the developing system. On the contrary, the initial step in reverse engineering starts with the existing system and the development technique for the replacement is based on interpretation.
- It is always certain to generate a by-product of forward engineering but in the case of reverse engineering, several ideas are generated about the requirement not necessarily generate a product.
- Forward engineering is prescriptive in nature where the developers need to follow particular rules for the proper results. On the other hand, reverse engineering is adaptive where the engineer has to discover what the developer actually did.
- Forward engineering consumes more time as compared to the reverse engineering.
- The final product of forward engineering must be complete and exact. As against, reverse engineering model can be imperfect, retrieved partial information is still useful.
Relation between Forward Engineering and Reverse engineering
The forward engineering involves the modification in the subject system while reverse engineering just analyses the system. Furthermore, these are the components of the re-engineering process.