|
|
|
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.
|
|
|
|
|
|
|
|