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