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

Popular posts from this blog

Suppose that a data warehouse for Big-University consists of the following four dimensions: student, course, semester, and instructor, and two measures count and avg_grade. When at the lowest conceptual level (e.g., for a given student, course, semester, and instructor combination), the avg_grade measure stores the actual course grade of the student. At higher conceptual levels, avg_grade stores the average grade for the given combination. a) Draw a snowflake schema diagram for the data warehouse. b) Starting with the base cuboid [student, course, semester, instructor], what specific OLAP operations (e.g., roll-up from semester to year) should one perform in order to list the average grade of CS courses for each BigUniversity student. c) If each dimension has five levels (including all), such as “student < major < status < university < all”, how many cuboids will this cube contain (including the base and apex cuboids)?

Suppose that a data warehouse consists of the four dimensions; date, spectator, location, and game, and the two measures, count and charge, where charge is the fee that a spectator pays when watching a game on a given date. Spectators may be students, adults, or seniors, with each category having its own charge rate. a) Draw a star schema diagram for the data b) Starting with the base cuboid [date; spectator; location; game], what specific OLAP operations should perform in order to list the total charge paid by student spectators at GM Place in 2004?

Explain network topology .Explain tis types with its advantages and disadvantges.