SE UNIT 5 Part1
SE UNIT 5 Part1
2
Software Maintenance
• Software maintenance is the process of
modifying a software product after it has been
delivered to the customer.
• The main purpose of software maintenance is to
modify and update software application after
delivery to correct faults and to improve
performance.
• On an average, the cost of software maintenance
is more than 50% of all SDLC phases.
3
Software Maintenance Cost
4
Several Key Aspects of Software
Maintenance
• Bug Fixing: The process of finding and fixing errors and problems in the
software.
• Enhancements: The process of adding new features or improving
existing features to meet the evolving needs of the users.
• Performance Optimization: The process of improving the speed,
efficiency, and reliability of the software.
• Porting and Migration: The process of adapting the software to run on
new hardware or software platforms.
• Re-Engineering: The process of improving the design and architecture
of the software to make it more maintainable and scalable.
• Documentation: The process of creating, updating, and maintaining
the documentation for the software, including user manuals, technical
specifications, and design documents.
5
Need for Maintenance
• Correct faults
• Improve the design
• Implement enhancements
• Retire software
• Interface with other systems.
• Accommodate programs so that different hardware,
software, system features, and telecommunications facilities
can be used.
• Migrate legacy software.
• Requirement of user changes.
• Run the code fast
6
Maintenance Activities
7
Categories of Software Maintenance
• Corrective maintenance: Corrective
maintenance of a software product may be
essential either to rectify some bugs observed
while the system is in use, or to enhance the
performance of the system.
• Adaptive maintenance: This includes modifications
and updation when the customers need the
product to run on new platforms, on new operating
systems, or when they need the product to
interface with new hardware and software.
8
Categories of Software Maintenance
• Perfective maintenance: A software product needs
maintenance to support the new features that the
users want or to change different types of
functionalities of the system according to the
customer’s demands.
• Preventive maintenance: This type of maintenance
includes modifications and updation to prevent
future problems with the software. It goals to
attend to problems, which are not significant at this
moment but may cause serious issues in the future.
9
Software Re-Engineering
• When we need to update the software to keep it to
the current market , without impacting its
functionality, it is called software re-engineering.
• It is a thorough process where the design of software
is changed and programs are rewritten.
• Legacy software cannot keep tuning with the latest
technology available in the market.
• As the hardware become obsolete, updating of
software becomes headache. Even if software grows
old with time , its functionality does not.
10
Software Re-Engineering
• Example: Initially Unix was developed in
assembly language. When language C came
into existence , Unix was re-engineered in C ,
because working in assembly language was
difficult.
• Other than this , sometimes programmers
notice that few parts of software need more
maintenance than others and they also need
re-engineering.
11
Re-Engineering Process
• Decide- what to re-engineer. Is it whole software or
a part of it?
• Perform- Reverse Engineering, in order to obtain
specifications of existing software.
• Restructure Program- if required. For example,
changing function oriented programs into object-
oriented programs.
• Re-structure Data as required.
• Apply Forward Engineering concepts in order to get
re-engineered software.
12
Software Re-Engineering Activities
13
Software Re-Engineering Activities
1. Inventory Analysis:
16
Software Re-Engineering Activities
4. 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.
17
Software Re-Engineering Activities
5. 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.
18
Software Re-Engineering Activities
6. 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.
19