Re Engineering techniques
Re Engineering techniques
By
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
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.
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.
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..
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.
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..
• 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]