Difference Between Reverse Engineering and Re-Engineering
i)
Reverse
Engineering: Is a process of analyzing software with a
view to understanding its design and specification.
·
In this, source code and
executable code are the input.
·
It may be part of a
re-engineering process but may also be used to re-specify a system for
re-implementation.
·
Builds a program data base
and generates information from this.
·
Program understanding tools
(browsers, cross reference generates, etc.) may be used in this process.
·
Design and specification may
be reverse re-engineered to:-
a) Serve
as input to SRS for program replacement.
b) Be
available to help program maintenance.
Reverse Engineering often
precedes Re-Engineering but is sometimes worthwhile in its own right. The
design and specification of a system may be reverse engineered so that they can
be an input to the requirements specification process for the system
replacement. The design and specification may be reverse engineered to support
program maintenance.
ii) Re-Engineering:
It is re-organizing and modifying existing system to make them more
maintainable. It involves:-
·
Source code translation.
·
Reverse engineering.
·
Program structure
development.
·
Program modularization.
·
Data re-engineering.
Restructuring or re-writing
part or all of the legacy system without changing it functionality. Legacy
system is a system that is hard to maintain. So it involves:-
1. Re-documenting
the system.
2. Organizing
and re-structuring the system.
3. Modifying
and upgrading structure and value of the system data.
4. Input
to a re-engineering process is a legacy system and output is a structure
modularized version of the same program. So re-engineering involves adding
effort to make them easier to maintain. The system may be restructured or re-documented.
When
to Re-Engineer?
·
When the system changes are
mostly confined to part of the system then re-engineer that part.
·
When hardware or software
support becomes obsolete.
·
When tools to support
re-structuring are available.
Advantages
of Re-Engineering
1) Reduced
risk – there is a high risk in new software development. There may be
development problems, staffing problems and specification problems.
2) Reduced
cost – the cost of re-engineering is often significantly less than the cost of
developing new software.
Re-Engineering
cost factors
1) The
quality of the software to be re-engineered.
2) The
tool support available for re-engineering.
3) The
extent of the data conversion, which is required.
4) The
availability of expert staff for re-engineering.
No comments:
Post a Comment