Reverse Engineering


© Faisal Bin Bashir

In the previous article, I briefly discussed some issues of reengineering and the general phases involved in the process. This article includes the basic and the most important phase - i.e., reverse engineering. Reverse engineering is a very vast field itself, and we will cover it in detail in the later articles. This article will only include the overview of reverse engineering.

Reverse engineering is the process of analyzing a subject system to identify the components and their inter-relationships, and create representations of the system in another form, or at a higher level of abstraction. Usually, the system maintainers of most of the older systems are not amongst their designers, so they have to spend many resources and to examine and learn about the system. Here comes the use of reverse engineering.

Generally speaking, the reverse engineering process involves the transformations from one level of description of system to a level which is regarded as more abstract or "earlier" in terms of the standard software life cycle. Thus, abstracting an entity life history is a reverse engineering activity, as is functional abstraction.

Reverse engineering is performed both as primary to forward engineering to new system, and as a support for a maintenance engineer in understanding an existing system. It is estimated that maintainers spend at least 60 percent of their time in reading the code. Reverse engineering can make this task of gaining higher level information from the code more effective, since irrelevant details or information can be hidden, permitting a broader perspective to be gained.

Reverse engineering in and of itself does not involve changing the subject system. It is the process of examination, not change or replication.

The maintenance of old but frequently used software systems remain a major problem for most of the organizations - for example, many COBOL and RPG programs, comprising billions of lines of code and developed many years ago, are in widespread use. These old programs need to be refashioned to take advantage of latest operating system features, GUI's, DB's etc. Recreating these applications from scratch is laborious task.

Reverse engineering tools may be used to extract the higher level design specifications from such application programs, thereby allowing them to be better understood and, consequently, making them easier to maintain and update. However, if a software system is to undergo major refinement, then its detailed low-level design must be extracted.

Go To Page: 1


The copyright of the article Reverse Engineering in Software Re-engineering is owned by . Permission to republish Reverse Engineering in print or online must be granted by the author in writing.

Post this Article to facebook Add this Article to del.icio.us! Digg this Article furl this Article Add this Article to Reddit Add this Article to Technorati Add this Article to Newsvine Add this Article to Windows Live Add this Article to Yahoo Add this Article to StumbleUpon Add this Article to BlinkLists Add this Article to Spurl Add this Article to Google Add this Article to Ask Add this Article to Squidoo