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

5 Restructuring

The document discusses software code restructuring, emphasizing its importance in improving code readability, maintainability, and efficiency without altering functionality. It outlines various restructuring techniques, such as refactoring, decomposition, and optimization, along with best practices for successful implementation. Additionally, it highlights the future of code restructuring, focusing on automation and AI tools like Mindbowser to enhance the process.
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 views33 pages

5 Restructuring

The document discusses software code restructuring, emphasizing its importance in improving code readability, maintainability, and efficiency without altering functionality. It outlines various restructuring techniques, such as refactoring, decomposition, and optimization, along with best practices for successful implementation. Additionally, it highlights the future of code restructuring, focusing on automation and AI tools like Mindbowser to enhance the process.
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/ 33

1

CSE327: Software Re-engineering


Lecture #: 5
CDF Unit #: 2
Instructor:
Dr. Manzoor Ahmad
[email protected].
pk

COMSATS University Islamabad,


Vehari Campus
3
ng Introduction
Restructuring involves transforming a system from one
representational form to another at the same relative level of
abstraction without a change in its functionality or semantics.
The transformation would usually be to a more desirable format.
This activity is based on the premise that after a string of
modifications, the structure of programs tends to degrade.
 "The addition of any function not visualized in the original design will
inevitably degenerate structure. Repairs, also, will tend to cause deviation
from structural regularity since, except under conditions of the strictest
control any repair or patch will be made in the simplest and quickest way.
No search will be made for a fix that maintains structural integrity."
4
ng Introduction
As the degeneration continues, the programs become more
complex and difficult to understand.
To control this increase in complexity, the source code needs to
be restructured.
Restructuring is a form of preventive maintenance aimed at
improving the physical state of the target system in conformance
with a given standard.
There are various types of restructuring which differ in the part
of the system affected and the manner in which this is done.
 Control-flow-driven restructuring
 Efficiency-driven restructuring & Adaption-driven restructuring
Control Flow 5
ng Driven
This involves the imposition of a clear control structure within
the source code and can be either intermodular (restructuring in
small) or intramodular (restructuring in large) in nature.
E.g., Intermodular is restructuring a 'spaghetti-like' module's
code so as to comply with structured programming concepts.
E.g., intramodular is regrouping physically distant routines -
located in different modules - so as to give the system a more
coherent structure.
Such as old compilers forced conceptually close routines to be
physically far apart - due to memory considerations – thus
making it difficult to understand the functionality of the code.
Efficiency 6
ng Driven
This involves restructuring a function or algorithm to make it
more efficient.
A simple example of this form of restructuring is the
replacement of an IFTHEN-ELSIF-ELSE construct with a CASE
construct.
With the CASE statement, only one Boolean is evaluated,
whereas with the IF-THEN-ELSIF-ELSE construct, more than
one of the Boolean expressions may need to be tested during
execution thereby making it less efficient.
Note however, that for this particular example, an optimising
compiler would do this restructuring automatically.
Efficiency 7
ng Driven
IF ExamScore >= 75 THEN
Grade := 'A‘ CASE ExamScore OF
ELSIF ExamScore >= 60 THEN
75..100 : Grade := 'A‘
Grade := 'B‘
60..74 : Grade := 'B‘
ELSIF ExamScore >= 50 THEN
50..59 : Grade := 'C
Grade := 'C
40..49 : Grade := 'D‘
ELSIF ExamScore >= 40 THEN
ELSE
Grade := 'D‘
ELSE Grade := 'F‘
Grade := 'F' ENDCASE
ENDIF
Adaptive 8
ng Driven

This involves changing the coding style in order to adapt the


program to a new programming language or new operating
environment, for instance changing an imperative program in
Pascal into a functional program in Lisp.
Another example is the transformation of program functions in a
sequential environment to an equivalent but totally different
form of processing in a parallel environment.
9
ng
In addition to the source code, other representations of a
software system can be restructured.
These include requirements specifications, data models and
design plans.
Although it is difficult to automate the restructuring process
completely, there exist some automatic restructuring tools.
10
Restructuring Introduction
Code restructuring is a critical process in software
engineering that includes modifying existing code to enhance its
structure, organization, and efficiency while ensuring the code
retains its intended functionality.
Why we do?
The restructuring process is often performed to address various
issues such as code complexity, maintenance difficulties, poor
readability, performance issues, and scalability limitations.
The process makes small, targeted changes to the codebase,
ensuring that each modification maintains the same functionality.
Importance in 11
Restructuring SE
Restructuring code improves its readability by applying consistent
formatting, removing redundant or necessary code, and organizing it in a
logical and cohesive manner.
Restructuring makes code more maintainable by breaking it down into
smaller, modular components.
It simplifies code complexity by employing design patterns, refactoring
techniques, and appropriate abstractions.
By analyzing code and making targeted improvements, such as optimizing
algorithms or reducing unnecessary computations, the overall performance
of the software can be significantly enhanced.
By restructuring the code to be updated, new features and functionality can
be added without causing widespread impact or introducing unintended
consequences.
12
Restructuring Understanding

Code restructuring modifies code’s internal structure without


altering external behavior.
One of the main objectives of restructuring is to simplify the
codebase and make it easier to understand and maintain.
The process involves analyzing the existing codebase,
identifying areas that require improvement, and implementing
changes to address the identified issues.
Code restructuring is critical when dealing with a codebase that
has become difficult to maintain.
13
Restructuring Understanding

It enables developers to refactor code by restructuring it into


smaller, more manageable components.
Another reason for code restructuring is to address design flaws
in the codebase.
Code restructuring allows developers to reevaluate the system’s
architecture, identify areas of improvement, and apply design
patterns and principles to enhance the overall structure.
This fosters collaboration, reduces conflicts during code
integration, and improves team productivity.
Common 14
Restructuring Scenarios
Software Growth and Complexity
As software systems evolve and are updated with updated
features, they grow in size and complexity. This can lead to
changes and additions to the codebase that become difficult to
monitor and comprehend. Complexity can hinder the
development process and increase the likelihood of errors
occurring during modifications.
In such scenarios, code restructuring is crucial to break down the
codebase into manageable modules. It is also crucial to improve
code patterns, and refactoring techniques to simplify complex
code, enhance readability, and ensure system maintainability and
scalability.
Common 15
Restructuring Scenarios

Adopting New Technologies and Frameworks


When software teams adopt updated technologies, programming
languages, or frameworks, the existing codebase may not align
with the updated standards and best practices of the adopted
technology. In such cases, code restructuring is important to
integrate new technologies seamlessly.
Integration might involve adapting existing code to work with
the new ecosystem, modifying dependencies, or re-architecting
certain components. Restructuring ensures the software can take
full advantage of the new technology, implementing its benefits
while maintaining backward compatibility and interoperability.
Common 16
Restructuring Scenarios

Software Modernization Efforts


In the process of modernizing software, legacy systems are
upgraded to modern architectures. Legacy systems may have
outdated code, use obsolete technologies, and lack modern
features. Code restructuring plays a critical role in modernization
efforts by transforming the legacy code into a modern efficient,
and maintainable form.
The process involves refactoring and rewriting portions of the
codebase to align with the new architecture, ensuring compliance
with current security standards, and taking advantage of modern
framework performance improvements.
17
Restructuring Techniques

Code restructuring techniques are crucial for improving code


quality, maintainability, and efficiency.
Here are some techniques for code restructuring;
 Refactoring
 Decomposition
 Consolidations
 Optimization
18
Techniques Refactoring
Refactoring includes modifying a code’s internal structure to improve
its understandability and ease of modification without changing its
observable behavior.
Refactoring techniques emphasize improving code quality,
readability, and maintainability. Some common refactoring
techniques include:
 Extracting methods: Breaking down long and complex methods into
smaller, reusable units to enhance code readability and modularity.
 Variable renaming: Choosing meaningful and descriptive names for
variables, functions, and classes to improve code clarity.
 Simplifying complex expressions: Breaking down complex expressions
into simpler ones to improve readability and maintainability.
19
Techniques Decomposition

Decomposition involves breaking down complex codebases into


smaller components, such as modules, packages, classes, and
interfaces. The technique enhances code organization,
maintainability, and reusability.
By separating concerns into distinct components, developers can
work on individual parts of the codebase independently, reducing
code dependencies and improving collaboration among team
members.
20
Techniques Consolidations

Consolidations aim to reduce code duplication and eliminate code smells.


Code duplication often leads to maintenance issues and increases bug
introduction chances.
Techniques for consolidation include extracting common code blocks into
reusable functions or libraries, streamlining conditional statements, and
removing maintainability, and overall software quality.
One way to address tangled code is to use code restructuring techniques to
break down it into more manageable components.
Additionally using modules, packages, classes, and interfaces to separate
concerns can help to make the code more modular and easier to maintain.
21
Techniques Optimization

Optimization techniques emphasize improving codebase performance and


efficiency. The process involves analyzing and optimizing algorithms,
leveraging appropriate data structures, and implementing caching
mechanisms where applicable.
Language-specific techniques and compiler optimization can also be
implemented to enhance code performance. Optimization techniques aim
to make the codebase more efficient, resulting in faster execution times
and better resource utilization.
22
Restructuring Best Practices
Code restructuring is a delicate process that requires careful planning and
execution.
To ensure successful code restructuring, it is important to follow best
practices that help maintain code integrity and mitigate issues.
 Understand Goals and Objectives
 Leverage Version Control for Backups and History
 Thoroughly Test and Validate the Restructured Code
 Start with Small, Incremental Changes
 Foster Communication and Collaboration
 Document Rationale and Approach
 Continuously Monitor and Evaluate
23
Restructuring Best Practices

Understand Goals and Objectives


Before beginning the code restructuring processes, ensure that
you have a clear understanding of the goals and objectives.
Identify the specific problems or areas of improvement that need
to be addressed through restructuring.
Having set clear objectives will guide the restructuring efforts
and ensure the changes align with the desired outcomes.
24
Restructuring Best Practices

Leverage Version Control for Backups and History


Use a version control system, such as Git, to track and manage
code changes during the restructuring process.
Version control provides the ability to create backups, branch the
codebase, and keep a detailed history of updates and
modifications.
This enables you to revert to previous versions, if needed, and
provides a safety net during the restructuring process.
25
Restructuring Best Practices

Thoroughly Test and Validate the Restructured Code


After making changes to the codebase, it is critical to thoroughly
test and validate the restructured code.
Run detailed test suites to ensure that the functionality remains
intact and that the changes do not introduce any regressions or
unexpected behavior.
Automated testing and continuous integration practices can help
streamline the process.
26
Restructuring Best Practices

Start with Small, Incremental Changes


It is beneficial to start with small, incremental changes when
restructuring code.
Rather than maintaining the entire codebase at once, focus on
specific areas or modules that require immediate attention.
The approach reduces the risk of errors and makes it easier to
validate the impact of each change.
27
Restructuring Best Practices
Foster Communication and Collaboration
Code restructuring is often a collaborative effort involving
multiple team members.
Encourage open communication, share insights, and seek
feedback loops from team members.
Frequent team meetings, code reviews including automated code
reviews, and discussions can facilitate effective collaboration.
Leveraging automated code review tools can streamline the
process, identify potential issues, and ensure adherence to coding
standards, ultimately enhancing the overall quality of the
codebase.
28
Restructuring Best Practices

Document Rationale and Approach


In code restructuring, it is important to document the rationale
and approach.
Document the reasons for restructuring, the goals, and the
specific techniques or refactoring patterns employed.
The documentation serves as a reference for future developers
and helps them understand the thought process behind the
changes.
29
Restructuring Best Practices

Continuously Monitor and Evaluate


Code restructuring is an ongoing process, and it is important to
continuously monitor and evaluate the codebase to identify areas
for improvement.
Regular code reviews, performance monitoring, and gathering
feedback from users can help uncover areas that may require
additional restructuring in the future.
30
Restructuring Benefits

Code restructuring offers several significant benefits that positively impact


software development and maintenance processes.
Let’s dive into some of the benefits below.
 Enhanced Readability and Understandability
 Improved Maintainability
 Increased Reusability
 Enhanced Scalability
 Improved Testing and Debugging
 Performance Optimization
 Adherence to Coding Standards
31
Restructuring Future in SE

As software systems grow in complexity, manual code


restructuring can become time-consuming and error-prone.
Code restructuring’s future lies in leveraging automation and AI-
powered tools to streamline this process (e.g., Mindbowser).
Advanced restructuring tools will automatically identify areas of
improvement, suggesting code refactoring patterns, and even
effort required for code restructuring, allowing developers to
focus on high-level design and problem-solving.
32
Restructuring Future in SE

Future code restructuring promises improved code quality and


productivity.
By leveraging automation, AI assistance, and continuous
restructuring practices, developers can optimize their codebase
more efficiently.
As a result, software teams will be able to deliver higher-quality
software products with increased productivity.
33
Restructuring Mindbowser
Mindbowser (https://www.mindbowser.com) offers code restructuring
assistance powered by artificial intelligence (AI).
We provide a range of automated tools and features to streamline code
refactoring and enhance code quality and maintainability.
We utilize AI algorithms to analyze codebases and identify areas that
require restructuring.
A suite of automated tools helps perform code refactoring tasks seamlessly
and ensures consistency.
We emphasize performance optimization during code restructuring that
provides insights and recommendations to optimize algorithms, improve
data, and structure usage, and eliminate the overall performance and
resource utilization of their software systems.
34
Restructuring Mindbowser

Fine-tuning the codebase for efficiency, we enhance your software


system’s overall performance and resource utilization.
Our AI-powered code restructuring assistance encompasses
modularization, design patterns, and collaborative support.
By leveraging these features, developers can streamline their code
restructuring process, improve code quality and efficiency, and ensure
maintainability for your software system.

You might also like