You are on page 1of 19

Re-Engineering

Program It is a process of software development which is done to


improve the maintainability of a software system.
structure Technical Definition:
improvement ● Software Re- engineering is the examination and
alteration of a system to reconstitute it in a new
form.

● This process encompasses a combination of sub-


processes such as reverse engineering,
restructuring, re-documentation, forward
engineering and retargeting.
Why we need it ? ● It is sometimes a cost-effective option for software
system evolution.

● Applicable when some (but not all) subsystems of a


larger system require frequent maintenance.

● It involves putting in the effort to make it easier to


maintain.
Legacy systems are the old software systems which
are essential for business process support.
Software re-
engineering & legacy Software re-engineering is concerned with re-
systems implementing legacy systems to make them more
maintainable. It may be the only viable way to
ensure that legacy systems can continue in service.
Advantages ● Re-engineering a software system has two key advantages:

● Reduce risk: as the software is already existing the risk is


less as compared to developing a new software .

● Reduce cost: the cost of re-engineering is significantly less


than the costs of developing a new software.
Steps involved in
software 1- Source code translation

re-engineering 2- Reverse engineering

3- Program structure improvement

4- Program modularization

5- data re-engineering
Source code ● It’s a process of translating a source code from one
programming language to another.
translation
● The translated language may be an updated version of the
original language or a completely different language.

● Necessity of source-level translation:-


1. Hardware platform update.
2. Staff skill shortages.
3. Organizational policy changes.
4. Lake of software support .
Diagrammatic representation

System to be System to be re-engineered


re-engineered re-engineered system

Identify source Design Automatically Manually


code translator translate translate
differences instructions code code
Reverse ● It is the process of analyzing software with the objective of
recovering its design and specification.
Engineering
● The program itself is unchanged by the reverse engineering
process.

● The software source code is usually available as the input.

● Reverse engineering is not the same as Re-engineering.


Program ● It is the process of improving the structure of the program
to optimize memory use and the lack of understanding of
structure S/w engineering.

improvement
● Typically , programs develop this complex logic structure
as they are modified during maintenance.

● New conditions and associated actions are added without


changing the existing control structure.
Problems Problems with automatic program restructuring include:

1. Loss of comments.

2. Loss of documentation.

3. Heavy computational demands.


It is the process of reorganizing a program so

Program that related program parts are collected


together and considered as a single module

modularization
Different types of modules be created:

1- data abstractions.

2- hardware modules .

3- process support modules.


Data abstractions collect together data and
associated processing and are resilient to change .

Recovering data Steps in converting global data areas to abstract


data types:
abstraction 1- analyses common data areas to identify logical
data abstractions .

2- create an abstract data type for each of these


abstractions.

3- use a program browsing system/cross reference


generator.
It is process of analyzing and reorganizing data
structures in a system to make it more
understandable .

Data re-
engineering Why do we have to modify data and programs
in a legacy system?

1- data degradation

2-inherent limits that are built into the programs

3- architectural evolution

Expensive and time –consuming process.


● Process risks :

Extremely high manual reengineering costs.

Cost benefits not realized in required time frame.


Re-engineering Cannot economically justify the reengineering
risks effort.

Reengineering effort drifts.

Lake of management commitment to ongoing


reengineering solution .

● Personnel risks:

Programmers inhibiting the start of reengineering.

Programmers performing less effectively to make


unpopular reengineering project look less effective.
● Strategy risks:

Premature commitment to reengineering solution for an


entire system.

Failure to have a long-term vision with interim goals.

Lake of global view : code , data , process reengineering.


CONT … No plan for using reengineering tools.

● Application risks:

Reengineering with no local application experts


available.

Existing business knowledge embedded in source code is


lost.

Reengineering dose not perform adequately.


● Technology risks:

Recovered information is not useful or used.

Reverse engineering to representations that


cannot be shared .

CONT … Reengineering technology inadequate to


accomplish reengineering goals.

● Tool risks:

Dependence on tools that do not perform as


advertised

Not using installed tools.


Peppered By :-
References

● Ian Sommerville- Software Engineering, sixth edition, Pearson Education.

● Bruce R. Maxim- Software Reengineering ppt, CIS 376, UM-Dearborn 21.

You might also like