0% found this document useful (0 votes)
2 views

Re Engineering techniques

The document discusses software reengineering, which involves analyzing and altering existing software systems to improve quality, reliability, and maintainability while preparing for functional enhancements and migration to newer platforms. It outlines various approaches to reengineering, including Big Bang, Incremental, and Evolutionary methods, along with the phases and tasks involved in the reengineering process. The document emphasizes the importance of team formation, project feasibility analysis, and thorough testing during the reengineering efforts.

Uploaded by

hghauri30
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Re Engineering techniques

The document discusses software reengineering, which involves analyzing and altering existing software systems to improve quality, reliability, and maintainability while preparing for functional enhancements and migration to newer platforms. It outlines various approaches to reengineering, including Big Bang, Incremental, and Evolutionary methods, along with the phases and tasks involved in the reengineering process. The document emphasizes the importance of team formation, project feasibility analysis, and thorough testing during the reengineering efforts.

Uploaded by

hghauri30
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Software Reengineering

By

Dr. Junaid Akram


Assistant Professor, Department of Computer Science COMSATS (Lahore)
Software Reengineering
Techniques
Concepts and Methods

J.A COMSATS Uni


Motivation and Concepts

Today's successful system


Number of legacy systems are
become tomorrow's legacy
continuously increasing
systems
Re-engineering
Re-engineering is the examination, analysis and alteration of an
existing software system to reconstitute it in a new form, and the
subsequent implementation of the new form.

Re-engineering involves the redesign of the existing Information


Systems, while using as much of the existing system as possible.

The process typically encompasses a combination of other processes


such as reverse engineering, re-documentation, restructuring,
translation, and forward engineering.

J.A COMSATS Uni


Re-engineering Objectives

Improve Quality
• Typically, the existing software system will be of low quality, due to many
modifications during the course of time.
• The user and system documentation will often be out- of-date or no longer
available.
• One of the main objectives of reengineering is to improve software quality .
• Object-oriented technology may be applied as a means to achieve a higher level
of maintainability and also to reduce costs.
Re-engineering Objectives

Improve reliability:
• Although it is possible that reliability was never very high at the first place, more likely, over time
and with multiple changes, there have been problems, one change causing multiple additional
problems.
• As maintenance and changes continue, the reliability of the software steadily decreases to the
point of being unacceptable.

Improve maintainability:
• As systems grow and evolve, maintainability becomes a bottleneck and very time consuming.
• An objective of reengineering is to re-design the system with more appropriately functional
modules and explicit interfaces.
Re-engineering Objectives

Preparation for functional enhancement:


• The reengineered target system can be built to easily facilitate the enhancements.
• For example, if the desired system enhancements build on object-oriented design, the target
system can be developed using object-oriented technology in preparation to increase the
functionality of the legacy system.

Migration:
• Old and working software may still meet the users’ needs, but it may be based on hardware
platforms, operating systems, or languages that might have become obsolete and thus may
need to be reengineered, transporting the software to a newer platform or language.
• Migration may involve quite extensive redesigning if the new supporting platforms and
operating systems are very different from the original.
General Model of Software Reengineering

Reengineering starts with the source code of an existing legacy system and concludes
with the source code of a target system.

This process may be as simple as using a code translation tool to translate the code
from one language to another (FORTRAN to C) or from one operating system to another
(UNIX to DOS).

On the other hand, the reengineering task may be very complex, using the existing
source code to recreate the design, identify the requirements in the existing system
then compare them to current requirements, removing those no longer applicable,
restructure and redesign the system (using object-oriented design), and finally coding
the new target system.

J.A COMSATS Uni


The model applies three Abstraction
principles of Alteration
reengineering: Refinement

Conti.. Abstraction is a gradual increase in the


abstract level of system.

System representation is created by the


successive replacement of existing
detailed information with information that
is more abstract.

J.A COMSATS Uni


Conti..

Refinement is the gradual decrease in the abstraction level of system


representation and is caused by the successive replacement of existing
system information with more detailed information. This is termed forward
engineering and resembles the software development of a new code, but with
some process Refinements.

Alteration is the making of one or more changes to a system representation


without changing the degree of abstraction, including addition, deletion and
modification of information, but not functionality.
Conti..

Alteration: To alter a system characteristic, work is done at the level of


abstraction at which information about that characteristic is explicitly expressed.

To translate the existing code to a target language no reverse engineering is


needed, the alteration (recoding) is done at the implementation level.

As the level of abstraction increases, the tasks of reverse engineering change.

To re-specify requirements, reverse engineering techniques must be applied to


the implementation and to the design to obtain the functional characteristics.

J.A COMSATS Uni


General Model of Software Reengineering

J.A COMSATS Uni


Re-engineering Approaches

There are three different approaches to The approaches differ in the amount
software re-engineering. and rate of replacement of the existing
- Bigbang Approach system with the target system.

- Incremental Approach
- Evolutionary Approach
The "Big Bang" approach, also known as the "Lump
Sum" approach, replaces the entire system at one time.

This approach is often used by projects that need to


solve an immediate problem, such as migration to a
Big Bang different system architecture.

Approach The advantage to this approach is that the system is


brought into a new environment all at once.

No interfaces between old and new components has to


be developed
The disadvantages with this approach is the
result tends to be monolithic projects that may
not always be suitable.

For large systems, this approach may consume


Cont.. too many resources or require large amounts of
time before the target system is produced.

The risk with this approach is high, the system


must be functionally intact and work in parallel
with the old system to assure functionality.
Big Bang Approach
Incremental Approach

In this approach, system sections are re-engineered and added


incrementally, as new versions of the system are needed to satisfy new
goals.

The project is broken into re-engineering sections based on the existing


system's sections.

J.A COMSATS Uni


Cont..

The advantages to this approach are that the components of the


system are produced faster and it is easier to trace errors since the
new components are clearly identified.

Since the interim versions are released, the customer can see
progress and quickly identify the lost functionality.

A benefit is that change to the old system can be easier dealt with
Cont..

A disadvantage to the Incremental approach is that the system takes longer


to complete with multiple interim version that require careful configuration
control.

Another disadvantage is that the entire structure of the system cannot be


altered, only the structure within the specific component sections being re-
engineered.

This approach has a lower risk than the Big Bang because as each
component starts re-engineering, the risks for that portion of the code can be
identified and monitored.
Incremental Approach
Evolutionary Approach
As in the Incremental approach, sections of the original system are replaced
with newly re-engineered system sections.

In this approach however, the sections are chosen based on their


functionality, not on the structure of the existing system.

Components of the current system are broken by functions and re-


engineered into new components.

The target system is built using functionally cohesive sections as needed.

J.A COMSATS Uni


Evolutionary Approach

The advantages of Evolutionary re-engineering are the resulting modular design.

This approach works well when converting to object-oriented technology.

One disadvantage is that similar functions must be identified throughout the


existing system then refined as a single functional unit.
Evolutionary Approach
Re-engineering Phases and Tasks
The re-engineering process can be broken into five phases and associated tasks

1) Re-engineering team formation;

2) Project feasibility analysis;

3) Analysis and planning;


4) Re-engineering implementation;

5) Transition and testing.

J.A COMSATS Uni


Re-engineering Team Formation

This team manage the re-engineering effort from start to conclusion and require a comprehensive
training in how to manage the technological change, the basics of re-engineering, and the use of
target development and maintenance processes.

Their tasks will be diverse, starting with establishing goals, strategies and an action plan within the
current environment and based on the identified business needs including cost justifications.

Although team members must have the "standard" software development skills, they will need
additional, specific skills.

They will be responsible for identifying, testing and purchasing new tools, then making sure
personnel are properly trained on the tools and the tools are being effectively used.
Cont..

The team will need to provide internal marketing of the re-engineering


work, consulting with personnel to verify the process is correctly being
applied.

These tasks will require team members to have good interpersonal


skills to resolve rejection of new concepts and perceptions of software
ownership.

Since the field of re-engineering continues to evolve, the team


members will also need to continue research in this technology.
Project Feasibility Analysis
• The initial task of the re-engineering team is to evaluate the organizational needs and goals that the existing
system meets.

• Software products currently in use must be analyzed in terms of problem specification including
objectives, motivation, constraints and business rules.

• The value of the applications must be investigated to determine what is the expected return on investment
from the re-engineering effort: the degree the software quality is expected to increase, the maintenance
process efficiency improve, and the business value enhanced.

• Once the expectations are established, they must be expressed in a measurable way - reduction in cost of
sustaining engineering, reduction in operations, improvement in performance, etc.
Analysis and Planning
• This re-engineering phase has three steps:
• analyze the legacy system,
• specify the characteristics of the target system,
• create a standard test or validation suite to validate the correct transfer of functionality.
• The analysis step begins by locating all available code and documentation, including user
manuals, design documents and requirement specifications.
• The current condition of the existing system, its maintainability and operability, must be
specified in order to show a return on investment with the target system.
• A set of software metrics should be selected to assist in identifying the quality problems with
the current system.
Analysis and Planning
• The metrics should include measurements of the costs of changes to the software,
if an increase in maintainability is one of the goals of the reengineering process.
• The collection of metrics on the new system should continue throughout
development to identify if what is happening is normal or expected and in order to
react quickly to abnormal signs.
• Once the legacy system and its quality characteristics have been specified, the step
of stating the desired characteristics and specification of the target system begins.
• The characteristics of the existing system that must be changed are specified, such
as its operating system, hardware platform, design structure, and language.
Re-engineering Implementation
Now that the re-engineering objectives have been specified, the approach has been defined, and
the legacy system analyzed, the reverse and forward engineering are started.

Various tools are available for this task. These tools must be examined for usability in the context
of the objectives of the reengineering process.

They must integrate easily into the process with minimum messaging.

After the desired level of abstraction is reached, forward engineering can begin.

Forward engineering corresponds exactly to the normal software development process, starting
from the abstraction level reached in the reverse engineering process.
Re-engineering Implementation
That is, if the software is to be redesigned to fit a new overall system architecture, the reverse engineering
process should extract the software requirements, and the forward engineering process would start with
the development of a new design.

In forward engineering, any change or increase in functionality must be avoided since this complicates the
validation process.

Throughout this phase, quality assurance and configuration management disciplines and techniques must
be applied.

Measurement techniques use should continue to assess the improvement to the software and to identify
potential areas of risk.
Testing and Transition

As the functionality of the new system grows, testing must be done to detect errors introduced during
re-engineering.

The testing techniques and methods are the same as those used during a "from scratch" system
development.

Assuming the requirements for the new system are the same as those for the legacy system the test
suite and test bed developed in the planning phase can be used.

The same test cases can be applied to both the legacy system and the target system, comparing the
results to validate the functionality of the target system.

Software documentation on the legacy must be updated, rewritten or replaced during this phase so
that they apply to the new system, and contain the information needed to operate and maintain it.
Thanks for your attention!

Any Question?

Email me on : [email protected]

You might also like