Software Engineering (2160701)

BE | Semester-6   Summer-2017 | 04/27/2017

Q4) (b)

Difference between reverse engineering and forward engineering.

Reverse engineering

  • Reverse engineering can extract design information from source code
  • The abstraction level of a reverse engineering process 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
  • 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 flow models (a relatively high level of abstraction)
    • Entity relationship models (a high level of abstraction).
  • As the abstraction level increases, information will allow easier understanding of the program
  • 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
  • The directionality of the reverse engineering process is one-way, all information extracted from the source code is provided to the software engineer

Forward engineering

  • Forward engineering is a process of obtaining desired software from the specifications, which were brought by reverse engineering
  • Forward engineering is same as software engineering process with only one difference it is carried out always after reverse engineering
  • 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