0% found this document useful (0 votes)
4 views

Chapter 8. Maintenance

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)
4 views

Chapter 8. Maintenance

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/ 48

Chapter 8: Maintenance

Software Maintenance
What is 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.
And to keep the software system working
correctly, efficiently, and securely, and to
ensure that it continues to meet the needs
of the users.
Software
Maintenance(Continued)
Software maintenance is a continuous
process that occurs throughout the
entire life cycle of the software system.
 The IEEE Standard for Software
Maintenance (IEEE 1219) gave the
definition for software maintenance as
“The process of modifying a software
system or component after delivery to
correct faults, improves performance or
other attributes, or adapt to a changed
environment.”
Software
Maintenance(Continued)
Several Key Aspects of Software
Maintenance
1. Bug Fixing: The process of finding and
fixing errors and problems in the
software.
2. Enhancements: The process of adding
new features or improving existing
features to meet the evolving needs of
the users.
3. Performance Optimization: The process of
improving the speed, efficiency, and
reliability of the software.
Software
Maintenance(Continued)
4. Porting and Migration: The process of
adapting the software to run on new
hardware or software platforms.
5. Re-Engineering: The process of
improving the design and architecture of
the software to make it more
maintainable and scalable.
6. Documentation: The process of creating,
updating, and maintaining the
documentation for the software,
including user manuals, technical
specifications, and design documents.
Software
Maintenance(Continued)
Need for Maintenance
Software Maintenance must be performed in order to:
1. Correct faults.
2. Improve the design.
3. Implement enhancements.
4. Interface with other systems.
5. Accommodate programs so that different
hardware, software, system features, and
telecommunications facilities can be used.
6. Migrate legacy software.
7. Retire software.
8. Requirement of user changes.
9. Run the code fast
Software
Maintenance(Continued)
Types of Software Maintenance
1. Corrective maintenance
2. Patching
3. Adaptive Maintenance
4. Perfective Maintenance
5. Preventive Maintenance
Software
Maintenance(Continued)
Types of Software Maintenance
1. Corrective Maintenance: This involves
fixing errors and bugs in the software
system.
2. Patching: It is an emergency fix
implemented mainly due to pressure
from management.
Patching is done for corrective
maintenance but it gives rise to
unforeseen future errors due to lack of
proper impact analysis.
Software
Maintenance(Continued)
3. Adaptive Maintenance: This involves modifying
the software system to adapt it to changes in the
environment, such as changes in hardware or
software, government policies, and business
rules.
4. Perfective Maintenance: This involves improving
functionality, performance, and reliability, and
restructuring the software system to improve
changeability.
5. Preventive Maintenance: This involves taking
measures to prevent future problems, such as
optimization, updating documentation, reviewing
and testing the system, and implementing
preventive measures such as backups.
Software
Maintenance(Continued)
Challenges in Software Maintenance
The various challenges in software maintenance are given
below:
1. The popular age of any software program is taken into
consideration up to ten to fifteen years. As software
program renovation is open ended and might maintain
for decades making it very expensive.
2. Lack of documentation: Poorly documented systems
can make it difficult to understand how the system
works, making it difficult to identify and fix problems.
3. Lack of test coverage: Systems that have not been
thoroughly tested can be difficult to maintain as it can
be hard to identify and fix problems without knowing
how the system behaves in different scenarios.
Software
Maintenance(Continued)
4. Lack of personnel: A lack of personnel with
the necessary skills and knowledge to
maintain the system can make it difficult to
keep the system up-to-date and running
smoothly.
5. High-Cost: The cost of maintenance can be
high, especially for large and complex
systems, which can be difficult to budget for
and manage.
6. Legacy code: Maintaining older systems with
outdated technologies can be difficult, as it
may require specialized knowledge and skills
7. There is a lack of Code Comments.
Software
Maintenance(Continued)
8. Interoperability issues: Systems that need
to work with other systems or software can
be difficult to maintain, as changes to one
system can affect the other systems.
9. Complexity: Large and complex systems can
be difficult to understand and modify,
making it difficult to identify and fix
problems.
10. Changing requirements: As user
requirements change over time, the
software system may need to be modified
to meet these new requirements, which can
be difficult and time-consuming.
Software
Maintenance(Continued)
Categories of Software Maintenance
Maintenance can be divided into the following
categories.
1. 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.
2. Adaptive maintenance: This includes
modifications and updations 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.
Software
Maintenance(Continued)
3. 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.
4. Preventive maintenance: This type of
maintenance includes modifications and
updations to prevent future problems with
the software.
 Its goal is to attend to problems, which are
not significant at this moment but may cause
serious issues in the future.
Software Maintenance
Activities
Maintenance Process Activities
IEEE provides a framework for
sequential maintenance process
activities.
It can be used in iterative
manner and can be extended so
that customized items and
processes can be included.
Software Maintenance
Activities(Continued)

The IEEE1219-98 Maintenance Process


Activities
Software Maintenance
Activities(Continued)
1. Identification & Tracing - It involves activities
pertaining to identification of requirement of
modification or maintenance,
 It is generated by user or system may itself report
those requirements via logs or error messages. Here,
the maintenance type is classified also.
2. Analysis - The modification is analyzed for its impact
on the system including safety and security
implications.
 If probable impact is severe, alternative solution is
looked for.
 A set of required modifications is then materialized
into requirement specifications.
 The cost of modification/maintenance is also analyzed
and estimation is concluded
Software Maintenance
Activities(Continued)
3. Design - New modules, which need to be
replaced or modified, are designed against
requirement specifications set in the previous
stage
4. Implementation - The new modules are coded
with the help of structured design created in the
design step.
 Every programmer is expected to do unit testing
in parallel.
5. System Testing - Integration testing is done
among newly created modules.
 Integration testing is also carried out between
new modules and the system.
 Finally the system is tested as a whole
Software Maintenance
Activities(Continued)
6. Acceptance Testing - After testing the system
internally, it is tested for acceptance with the
help of users.
7. Delivery - After acceptance test, the system is
deployed all over the organization either by
small update package or fresh installation of the
system.
 Training facility is provided if required, in addition
to the hard copy of user manual.
8. Maintenance management - Configuration
management is an essential part of system
maintenance. It is aided with version control
tools to control versions, semi-version or patch
management
Software re-engineering
What is software Re-
engineering?
Software Re-engineering is a
process of software development
which is done to improve the
maintainability of a software
system.
Re-engineering is the
examination and alteration of a
system to reconstitute it in a new
Software re-
engineering(Continued)
This process consists of a
combination of sub-processes
such as
1. Reverse engineering
2. Forward engineering
3. Reconstructing
Re-engineering is the
reorganizing and modifying
existing software systems to
make them more maintainable.
Software re-
engineering(Continued)
Objectives of Re-engineering:
1. To describe a cost-effective
option for system evolution.
2. To describe the activities
involved in the software
maintenance process.
3. To distinguish between software
and data re-engineering and to
explain the problems of data re-
engineering
Software re-
engineering(Continued)
Steps involved in Re-engineering:
Step 1: Inventory Analysis
Step 2: Document Reconstruction
Step 3: Reverse Engineering
Step 4: Code Reconstruction
Step 5: Data Reconstruction
Step 6: Forward Engineering
Software re-
engineering(Continued)
1. Inventory analysis:
Decide what to re-engineer. Is it
whole software or a part of it?
2. Document Reconstruction
Obtain specifications or software
requirement of existing software.
3. Reverse engineering
Perform Reverse Engineering
Software re-
engineering(Continued)
4. Code reconstruction
Re-write the code,
If required. For example, changing
function-oriented programs into
object-oriented programs.
5. Data reconstruction
Re-structure data as required.

6. Forward Engineering
Apply Forward engineering concepts in
order to get re-engineered software.
Software re-
engineering(Continued)

Diagram representation
Software re-
engineering(Continued)
Advantages of Re-engineering:
1. Reduced Risk: As the software is already
existing, the risk is less as compared to
new software development.
Development problems, staffing
problems and specification problems are
the lots of problems which may arise in
new software development.
2. Reduced Cost: The cost of re-engineering
is less than the costs of developing new
software.
Software re-
engineering(Continued)
Software engineering is an engineering
branch associated with development of
software product using well-defined scientific
principles, methods and procedures.
The outcome of software engineering is an
efficient and reliable software product
 Reengineering is just Restructuring or
rewriting part or all of a system without
changing its functionality
Reengineering is used when some (but not
all) subsystems of a larger system require
frequent maintenance
Software re-
engineering(Continued)
Why software Reengineering
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 re-written.
Software re-
engineering(Continued)
Legacy software cannot keep
tuning with the latest technology
available in the market.
As the hardware become
obsolete, updating of software
becomes a headache.
Even if software grows old with
time, its functionality does not.
Software re-
engineering(Continued)
For 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
Software re-
engineering(Continued)

Re-Engineering Process
Reverse Engineering
 Reverse Engineering is the process of
extracting knowledge or design information
from anything man-made and reproducing it
based on the extracted information.
It is a process to achieve system
specification by thoroughly analyzing,
understanding the existing system.
This process can be seen as reverse SDLC
model,
It is also called back engineering.
The main objective of reverse engineering is
to check out how the system works
Reverse
Engineering(Continued)
Why Reverse Engineering?
1. Providing proper system
documentation.
2. Recovery of lost information.
3. Assisting with maintenance.
4. Facility of software reuse.
5. Discovering unexpected flaws or
faults.
Reverse
Engineering(Continued)
Used of Software Reverse Engineering
Software Reverse Engineering is used in
software design
Reverse engineering enables the
developer or programmer to add new
features to the existing software with or
without knowing the source code.
Reverse engineering is also useful in
software testing, it helps the testers to
study the virus and other malware code
.
Reverse
Engineering(Continued)

Reverse Engineering
Software
Maintenance(Continued)
Program Restructuring
It is a process to re-structure and re-
construct the existing software.
It is all about re-arranging the source
code, either in same programming
language or from one programming
language to a different one.
Restructuring can have either source
code-restructuring and data-
restructuring or both.
Software
Maintenance(Continued)
Re-structuring does not impact
the functionality of the software
but enhance reliability and
maintainability.
Program components, which
cause errors very frequently can
be changed, or updated with re-
structuring.
The dependability of software on
obsolete hardware platform can
Software
Maintenance(Continued)
Forward Engineering
Forward engineering is a process of
obtaining desired software from the
specifications in hand which were brought
down by means of reverse engineering.
Forward engineering is same as software
engineering process with only one
difference – it is carried out always after
reverse engineering.
Assuming that there was some software
engineering already done in the past.
Software
Maintenance(Continued)

Forward Engineering
Software
Maintenance(Continued)
Difference between Forward Engineering and
Reverse Engineering
FORWARD ENGINEERING REVERSE ENGINEERING

The application are The requirements are


developed with the given collected from the given
requirements application.

high proficiency skill. low proficiency skill.


more time to develop an less time to develop an
application. application.
Its nature is Prescriptive. Its nature is adaptive

production is started with production is started by taking


given requirements. existing product
It is also called It is also called Backward
renovation/reclamation engineering
Software supportability
In order to effectively support industry -
grade software, your organization (or its
designee) must be capable of making
the corrections, adaptations, and
enhancements that are part of the
maintenance activity.
In addition, the organization must
provide other important support
activities that include ongoing
operational support, end-user support,
and reengineering activities over the
complete life cycle of the software.
Software
supportability(Continued)
What is Software Supportability?
Software supportability is the
capability of supporting a software
system with ongoing operational
support, end user support and
reengineering activities over its
whole product life cycle.
Software
supportability(Continued)
The above definition implies satisfying
any necessary needs or requirements,
but also
1. the provision of equipment
2. support infrastructure
3. additional software
4. Facilities
5. manpower, or any other resource
required to maintain the software
operational and capable of satisfying
its function.
Software
supportability(Continued)
In essence, supportability is one of
many quality factors that should
be considered during the analysis
and design actions that are part of
the software process
It should be addressed as part of
the requirements model (or
specification) and considered as
the design evolves and
construction commences.
Software
Maintenance(Continued)
The software should contain facilities
to assist support personnel when a
defect is encountered in the
operational environment (and make
no mistake, defects will be
encountered)
In addition, support personnel should
have access to a database that
contains records of all defects that
have already been encountered (their
characteristics, cause, and cure)
Software
supportability(Continued)
Supportability also demands that
resources be provided to support
day-to-day end-user issues.
The job of end-user support
personnel is to answer user
queries about the installation,
operation, and use of the
application.
Next Class lessons
Chapter 9: Effort estimation and
Scheduling and Chapter 10:
Software Project management

You might also like