0% found this document useful (0 votes)
18 views30 pages

RE-Engineering Techniques 1

Uploaded by

ahbajwa102
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views30 pages

RE-Engineering Techniques 1

Uploaded by

ahbajwa102
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 30

Software Re-Engineering

By

Tabinda Ali Shah Zaman


Software re-engineering, also known as software restructuring
or software renovation, refers to the process of improving or
upgrading existing software systems to improve their quality,
maintainability, or functionality.

It involves reusing the existing software artifacts, such as


code, design, and documentation, and transforming them to
meet new or updated requirements.
Process of Software Re-
engineering
1. Planning: The first step is to plan the re-engineering
process, which involves identifying the reasons for re-
engineering, defining the scope, and establishing the
goals and objectives of the process.
2. Analysis: The next step is to analyze the existing
system, including the code, documentation, and other
artifacts. This involves identifying the system’s strengths
and weaknesses, as well as any issues that need to be
addressed.
3. Design: Based on the analysis, the next step is to design
the new or updated software system. This involves
identifying the changes that need to be made and
developing a plan to implement them.
Process of Software Re-
engineering

4.Implementation: The next step is to implement


the changes by modifying the existing code,
adding new features, and updating the
documentation and other artifacts.
5.Testing: Once the changes have been
implemented, the software system needs to be
tested to ensure that it meets the new
requirements and specifications.
6.Deployment: The final step is to deploy the re-
engineered software system and make it
available to end-users.
Techniques involved in Re-
engineering

1. Inventory Analysis
2. Document Reconstruction
3. Reverse Engineering
4. Code Reconstruction
5. Data Reconstruction
6. Forward Engineering
Inventory Analysis

• Every software organization should have an inventory


of all the applications.

• Inventory can be nothing more than a spreadsheet


model containing information that provides a detailed
description of every active application.
• By sorting this information according to business
criticality, longevity, current maintainability, and other
local important criteria, candidates for re-engineering
appear.
• The resource can then be allocated to a candidate
application for re-engineering work.
Document Reconstruction

• Documentation of a system either


explains how it operates or how to use it.

• Documentation must be updated.


• It may not be necessary to fully document
an application.
• The system is business-critical and must
be fully re-documented.
Reverse Engineering
• Reverse engineering is a process of
design recovery. Reverse engineering
tools extract data and architectural
and procedural design information
from an existing program.
Code Reconstructing:
• To accomplish code reconstruction, the
source code is analyzed using a
reconstructing tool. Violations of
structured programming construct are
noted and code is then reconstructed.
• The resultant restructured code is
reviewed and tested to ensure that no
anomalies have been introduced.
Data Restructuring:
• Data restructuring begins with a
reverse engineering activity.
• The current data architecture is
dissected, and the necessary data
models are defined.
• Data objects and attributes are
identified, and existing data
structures are reviewed for quality.
Forward engineering
Forward Engineering also called renovation or reclamation not
only recovers design information from existing software but
uses this information to alter or reconstitute the existing
system to improve its overall quality.
• After system transformation, the transformed system
representations can be used to generate physical
implementations of the initial system at a low abstraction
level.
• Forward engineering starts with system specification and
includes the design and implementation of a new system –
like an ordinary software development process.
• This step completes the re-engineering legacy application
process where the renewed software meets the ultimate
criteria of upgrading.
Difference between forward and reverse
engineering
Factors Affecting Cost of Re-
engineering

• Re-engineering can be a costly process, and there are several


factors that can affect the cost of re-engineering a software
system:
1. Size and complexity of the software: The larger and more complex the
software system, the more time and resources will be required to analyze,
design, and modify it.

2. Number of features to be added or modified: The more features that


need to be added or modified, the more time and resources will be
required.

3. Tools and technologies used: The cost of re-engineering can be


affected by the tools and technologies used, such as the cost of
software development tools and the cost of hardware and infrastructure.

4. Availability of documentation: If the documentation of the existing


system is not available or is not accurate, then it will take more time and
resources to understand the system.
Factors Affecting Cost of Re-
engineering

5. Team size and skill level: The size and skill level of the
development team can also affect the cost of re-
engineering. A larger and more experienced team may be
able to complete the project faster and with fewer
resources.

6. Testing and quality assurance: Testing and quality


assurance are important aspects of re-engineering, and
they can add significant costs to the project.

7. Post-deployment maintenance: The cost of post-


deployment maintenance such as bug fixing, security
updates, and feature additions can also play a role in the
cost of re-engineering.
When to Re-engineer your software
You want to save resources:
• reduce the maintenance cost,
• reduce the load on the qualified engineers,
• save time – compared to redevelopment.

You want to clean up the codebase and remove the


code “bad smells”, for example:
• duplicate code
• very long methods
• not-needed generality
• commented-out and expired code
• dead and zombie code
When to Re-engineer your software

You have ambitious future plans


regarding your software:
• switch to a modern technology
• migrate to another platform
• introduce new features
• update the business logic

You might also like