- When we need to update the software to keep it in the current market, without impacting its functionality, it is called software re-engineering.
- It a thorough process where the design of software changed and programs re-written.
- Legacy software cannot keep tune with the latest technology available in the market.
- As the hardware becomes obsolete, updating of software becomes a headache.
- Even if software grows old with time, its functionality does not.
- For example, initially, UNIX developed in assembly language. When language C came into existence, UNIX re-engineered in C, because working in assembly language difficult.
- Other than this, sometimes programmers notice that few parts of software need more maintenance than others and they also need re-engineering.
- 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. Re-structure data as required.
- Apply Forward engineering concepts in order to get re-engineered software.
- 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, and the
- The directionality of the process is 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 extract 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 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 “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 one-way, all information extracted from the source code provided to the software engineer who can then use it during any maintenance activity.