Software Engineering (2160701)

BE | Semester-6   Summer-2018 | 04/28/2018

Q5) (b)

Explain the following term in brief<br / 1) Re-Engineering 2) Reverse Engineering

  • When we need to update the software to keep it to the current market, without impacting its functionality, it is called software re-engineering
  • It is a process where the design of software is changed and programs are re-written
  • Legacy software cannot keep tuning with the latest technology available in the market
  • For example, initially UNIX was developed in assembly language. When language C came into existence, UNIX was re-engineered in C, because working in assembly language was difficult.
  • Other than this, sometimes programmers notice that few parts of software need more maintenance than others and they also need re-engineering

Re-Engineering Process

  • Decide what to re-engineer.
    • Is it whole software or a part of it?
  • Perform Reverse Engineering, in order to obtain specifications of existing software
  • Restructure Program if required
    • For example, changing function-oriented programs into object-oriented programs and re-structure data as required
  • Apply Forward engineering concepts in order to get re-engineered software

Reverse Engineering Process

  • 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