SE, Unit 4, Software Maintenance
SE, Unit 4, Software Maintenance
INTRODUCTION OF RE-ENGINEERING
Re-engineering means to re-implementing
systems to make more maintainable. In re-
engineering the functionality and architecture
ofthe systems remains the same but it includes
redocumenting, organizing, modifying and
updatingthe system.Re-engineering essentially
means having a re-look on an entity such as
process, task, design approach or strategy using
engineering principles to bring in radical and
dramatic improvement. The re-look is
multidimensional and is taken by specialists in
different fields. When re-engineering principles
are applied to business process then it is called
Business process Re-engineering (BRR).
Data Modularized
Re-engineering Re-engineering
Data Program
Original
Data
Fig. 10.1
Forward Inventory
Analysis
Engineering9
Data Document
Restructuring Restructuring
Code Reverse
Restructuring Engineering
Fig. 10.2
the software.
2. Tools Available for
system unless you Re-engineering: It is not cost effective to re-engineer a
can use
ftware
Disadvantages
Practical limits to the extent of
re-engineering
Major architectural changes or radical reorganizing of the system data
has to be done manually. management
Re-engineered system is not likely to be as maintainable as a new system developed
using modern software engineering methods.
(UPTU, B. Tech., 2009-10)
105 SOFTWARE REVERSE ENGINEERING
Software reverse engineering is the process of recovering the design and the requirements
specifications of a product from an analysis of its code. Thus, reverse engineering is any
the software
activity that improves one's understanding of software, prepares or improves
the purpose of
itself, usually for increased maintainability, resuability or evolvability. So,
reverse engineering is to facilitate maintenance work by improving
the understandability of
a system and to produce the necessary document for a legacy system.
Reverse has been defined by Arnold as a two-step process of information extraction
engineering
followed by information abstraction.
1. The first step analyses the subject system to identify its components and their inter
relationships.
another form
2. The second step creates the representations of the system in or at a
mechanisms.
and permit
3. Abstract: Create abstractions that facilitate program understanding
information structures.
the navigation, analysis and presentation of the resultant
10.12 REVERSE ENGINEERING PROCESS
The reverse engineering process is shown in Fig. 10.3. The process starts with an analysis
phase. During this phase, the system is analyzed using automated tools to discover its structure.
They add information to this, which they have collected by understanding the system. This
information is maintained as a dir cted graph that is linked to the program source code.
I
Dirty Source Code
Restructure
Code
Processing
Clean Source Code
Extract Interface
Abstractions
Initial Specification
Database
Refine and
Simplify
Final Specification
Fig 10.3
Information store browsers are used to compare the graph structure and the codae and to
with extra information. Documents of
various types, such as Dr
annotate the graph
and data structure diagrams
om the diM
and traceability matrices can be generated from ected program
entities in the system are defined and referoe
graph. Traceability matrices show where ferenced.
Automated Programstructure
Analysis Dlagran
System to be System Document Data-structure
re-engineered Information Generation Diagram
Manual Traceabi
Annotation Matice
Fig. 10.4
In Fig. 10.3, initially the dirty source code or unstructured source code is taken and
processed and the code is restructured. After restructuring process the source code becomes
clean.
In extract abstraction activity, the engineer must evaluate older programs and extract
information about procedures interfaces, data structures or data bases used.
The output of reverse engineering process is a clear, unambiguous final specification
obtained from unstructured source code. This final specification helps in easy understanding
of source code.