Short note on Reverse Engineering
Reverse Engineering:-
- It is a process to achieve system specification by thoroughly analyzing, understanding the existing system. This process can be seen as a reverse SDLC model, i.e. we try to get a higher abstraction level by analyzing lower abstraction levels.
- An existing system is a previously implemented design, about which we know nothing. Designers then do reverse engineering by looking at the code and try to get the design.
- With design in hand, they try to conclude the specifications. Thus, going in reverse from code to system specification. Reverse engineering, in computer programming, is a technique used to analyze software in order to identify and understand the parts it is composed of. The usual reasons for reverse engineering a piece of software are to recreate the program, to build something similar to it, to exploit its weaknesses, or strengthen its defenses.
OR,
- Reverse Engineering is a process of extracting knowledge or design information from anything man-made and reproducing it based on the extracted information. It is also called back Engineering.
- Software Reverse Engineering is the process of recovering the design and the requirements specification of a product from an analysis of its code. Reverse Engineering is becoming important, since several existing software products, lack proper documentation, are highly unstructured, or their structure has degraded through a series of maintenance efforts.
Importance of reverse engineering
Providing proper system documentation
Recovery of lost information
Assisting with maintenance
The facility of software reuse
Discovering unexpected flaws or faith
Reasons for reverse engineering:-
• Interfacing:- Reverse engineering can be used when a system is required to interface to another system and how both systems would negotiate is to be established.
• Military or commercial espionage:- Learning about an enemy's or competitor's latest research by stealing or capturing a prototype and dismantling it.
• Improve documentation shortcomings:- Reverse engineering can be done when documentation of a system for its design, production, operation, or maintenance has shortcomings and original designers are not available.
• Obsolescence:- Integrated circuits are often designed on proprietary systems, and built on production lines that become obsolete in only a few years.
• Software modernization:- often knowledge is lost over time, which can prevent updates and improvements. Reverse engineering is generally needed in order to understand the 'as-is state of existing or legacy software in order to properly estimate the effort required to migrate system knowledge into a 'to be' state.
• Product security analysis. To examine how a product works, what are specifications of its components, estimate costs and identify potential patent infringement.
• Bug fixing. To fix (or sometimes to enhance) legacy software that is no longer supported by its creators (e.g. abandonware).
Used of Software Reverse Engineering -
• Software Reverse Engineering is used in software design, reverse engineering enables the developer or programmer to add new features to the existing software with or without knowing the source code.
• Reverse engineering is also useful in software testing, it the testers to study the virus and other malware codes.
Comments
Post a Comment