Reverse Engineering A Swiftly Growing Technology in Software World

With an initial aim of modernizing legacy systems, often written in old programming languages, software reverse engineering has now extended its applicability to virtually every kind of software system. Existing system's modification or replacement often applies reverse engineering for understanding of that system. Reverse engineering is nowadays used for more than one purpose that is sometimes illegal also. This paper presents an insight on this exciting and swiftly growing technology in the computer world. I. INTRODUCTION Reverse engineering is the attempt to recapture the top level specification of established product by analyzing it. The practice, taken from older industries, is now frequently used on computer hardware and software. Hardware reverse engineering involves taking apart a device to see how it works whereas software reverse engineering is the process of recovering or reconstructing functional and technical specifications of a software system at a high level of abstraction. In an industrial context, high level architectural descriptions are an essential means of support for software system development. Reverse engineering should aim at recovering architecturally significant views of the system, which can help keep track of the evolution of software architecture. Software reverse engineering is done for various reasons such as, to study how the program performs certain operations, to improve the performance of a program, to fix a bug, to identify program written for use with one microprocessor for use with another. Reverse engineering generally consists of the following stages: 1. Analysis of the product 2. Generation of an intermediate level product description 3. Human analysis of the product description to produce a specification