Professional Documents
Culture Documents
Restructuring and Reengineering33221
Restructuring and Reengineering33221
Restructuring and Reengineering33221
Software Restructuring
Software restructuring modifies source code and/or data in an effort to make it amenable to
future changes. In general, restructuring does not modify the overall program architecture. It
tends to focus on the design details of individual modules and on local data structures defined
within modules. If the restructuring effort extends beyond module boundaries and encompasses
the software architecture, restructuring becomes forward engineering .
Restructuring occurs when the basic architecture of an application is solid, even though technical
internals need work. It is initiated when major parts of the software are serviceable and only a
subset of all modules and data need extensive modification.
1. Code Restructuring
2. Data Restructuring
3. Software Restructuring
1. Code restructuring is performed to yield a design that produces the same function but with
higher quality than the original program. In general, code restructuring techniques model
program logic using algebra and then apply a series of transformation rules that yield
restructured logic. The objective is to take "spaghetti-bowl" code and derive a procedural design
that conforms to the structured programming philosophy.
2. Data Restructuring- Before data restructuring can begin, a reverse engineering activity called
analysis of source code must be conducted. All programming language statements that contain
data definitions, file descriptions, I/O, and interface descriptions are evaluated. The intent is to
extract data items and objects, to get information on data flow, and to understand the existing
data structures that have been implemented. This activity is sometimes called data analysis .
Once data analysis has been completed, data redesign commences. In its simplest form, a data
record standardization step clarifies data definitions to achieve consistency among data item
names or physical record formats within an existing data structure or file format. Another form of
redesign, called data name rationalization, ensures that all data naming conventions conform to
local standards and that aliases are eliminated as data flow through the system.
When restructuring moves beyond standardization and rationalization, physical modifications to
existing data structures are made to make the data design more effective. This may mean a
translation from one file format to another, or in some cases, translation from one type of
database to another.
Software reengineering is a transformative process that aims to enhance and update legacy
systems to meet present and future requirements. It is a complex undertaking that involves
analyzing, redesigning, and modifying the software to address limitations, improve performance,
and align it with changing business needs.
The software reengineering process encompasses key steps such as reverse engineering,
restructuring, and forward engineering. These steps empower software engineers to identify and
resolve issues within the legacy system and upgrade it to meet present and future demands.
By reengineering the software, companies can streamline the codebase, eliminate technical debt,
and reduce the ongoing maintenance burden, resulting in cost savings and improved system
stability.
The software reengineering process can indeed be broadly categorized into three main phases:
reverse engineering, restructuring, and forward engineering. These phases work together to
enhance and modernize existing software systems. Let’s explore each phase in more detail.
A. Code Examination: Developers examine the source code, documentation, and other available
resources to understand how the software works. They analyze the code structure, algorithms,
and patterns used in the system.
B. Documentation Review: Existing documentation, such as system specifications, user manuals,
and design documents, is reviewed to gather information about the system’s intended
functionality and design decisions.
C. System Analysis: Developers analyze the system’s behavior, data flow, and interactions with
external components. They may use tools to visualize the system’s structure, identify
dependencies, and trace the execution flow.
The primary goal of reverse engineering is to obtain a comprehensive understanding of the
existing software system. This knowledge helps identify areas for improvement and lays the
foundation for the subsequent phases.
Phase 2: Restructuring
The restructuring phase focuses on redesigning and reorganizing the software system to enhance
its performance, maintainability, and scalability. Here are the key aspects of the restructuring
phase:
A. Code Refactoring: Developers modify the existing codebase to improve its structure,
readability, and maintainability. This may involve removing duplicate code, extracting reusable
components, and applying design patterns to enhance the system’s modularity.
B. Architecture Enhancements: The system’s architecture may be redesigned to address
architectural flaws, improve scalability, or incorporate new technologies. This includes
reevaluating component interactions, introducing layers or modules, and optimizing system
performance.
C. Removal of Obsolete Code: Outdated or unused code is identified and removed, reducing
complexity and improving system performance. This declutters the codebase and makes it easier
to understand and maintain.
The restructuring phase aims to optimize the software system’s structure, making it more
efficient, flexible, and maintainable. It addresses identified weaknesses and prepares the system
for future enhancements.
B. Introduction of New Features: The re-engineered software may include new features or
functionality to meet updated business requirements. This involves designing and developing
additional modules or modules with enhanced capabilities.
C. Testing and Quality Assurance: Rigorous testing is conducted to ensure that the reengineered
software meets the defined requirements and functions as intended. This includes various testing
techniques, such as unit testing, integration testing, and system testing, to validate the system’s
stability, reliability, and performance.
The forward engineering phase culminates in a new version of the software that incorporates the
insights gained from reverse engineering and the improvements made during restructuring. The
re-engineered software is now ready for deployment and use.
By following these three phases of reverse engineering, restructuring, and forward engineering,
the software reengineering process allows businesses to breathe new life into their existing
systems. It enables them to optimize performance, enhance maintainability, and align with
modern requirements, ensuring the system remains robust and adaptable in the face of evolving
business needs.