Lecture 1
Lecture 1
• Types of Maintenance
2
Software Maintenance
3
Need for Maintenance
• Software Maintenance must be performed in order to:
• Correct faults.
• Improve the design.
• Implement enhancements.
• Interface with other systems.
• Accommodate programs so that different hardware, software, system
features, and telecommunications facilities can be used.
• Migrate legacy software.
• Retire software.
4
Why are modifications required?
• There are number of reasons, why modifications are required, some of them are
briefly mentioned below:
• Market Conditions - Policies, which changes over the time, such as taxation and
newly introduced constraints like, how to maintain bookkeeping, may trigger need for
modification.
• Client Requirements - Over the time, customer may ask for new features or functions
in the software.
• Host Modifications - If any of the hardware and/or platform (such as operating
system) of the target host changes, software changes are needed to keep adaptability.
• Organization Changes - If there is any business level change at client end, such as
reduction of organization strength, acquiring another company, organization
venturing into new business, need to modify in the original software may arise.
5
Categories of Software
Maintenance
• Maintenance can be divided into the following:
• 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 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.
6
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 demands.
• Preventive maintenance:
This type of maintenance includes modifications and updations to
prevent future problems of the software. It goals to attend problems,
which are not significant at this moment but may cause serious issues
in future.
7
Cost of Maintenance
8
Real-world factors affecting
Maintenance Cost
• The standard age of any software is considered up to 10 to 15 years.
• Older software's, which were meant to work on slow machines with less
memory and storage capacity cannot keep themselves challenging against
newly coming enhanced software on modern hardware.
• As technology advances, it becomes costly to maintain old software.
• Most maintenance engineers are newbie and use trial and error method to
rectify problem.
• Often, changes made can easily hurt the original structure of the software,
making it hard for any subsequent changes.
• Changes are often left undocumented which may cause more conflicts in
future.
9
Software-end factors affecting Maintenance Cost
10
Maintenance Activities
11
Maintenance Activities
12
Maintenance Activities
13
Maintenance Activities
14
Maintenance Activities
• Delivery - After acceptance test, the system is deployed all over the
organization either by small update package or fresh installation of
the system. The final testing takes place at client end after the
software is delivered.
• Training facility is provided if required, in addition to the hard copy of
user manual.
• 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.
15
Software Maintenance Process
Models
• The activities involved in a software maintenance project are not unique and
depend upon several factors like extent of modification required, conditions of
existing product, resource availability to maintenance team, expected project risks
etc.
• The following maintenance models have been proposed:
• Quick-fix Model
• It is an adhoc approach to maintain the software. It is a fire fighting approach,
waiting for the problem to occur and then trying to fix it as quickly as possible.
16
Software Maintenance Process
Models
• Iterative Enhancement Model
• The iterative enhancement model, which was originally proposed as a process
model, can be easily adapted for maintaining a software system. It considers that
the changes made to the software system are iterative in nature.
• It involves following stages:
a) Requirement analysis
• The requirements for change are analyzed to begin the software maintenance
process
b) Classification of requested modifications
• After analysis, the requested modifications are classified according to the
complexity, technical issues, and identification of modules that will be affected.
17
Software Maintenance Process
Models
c)Implementation of requested modifications
• At the end, the software is modified to implement the
modification request. At each stage, the documentation is updated
to accommodate changes of requirements analysis, design, coding
and testing phases. It is essential to have a complete
documentation before implementation of iterative enhancement
model begins.
18
Software Maintenance Process
Models
• Reuse-oriented Model
• The reuse-oriented model assumes that the existing program components can be
reused to perform maintenance. This approach can be represented by a reverse
engineering cycle followed by a forward engineering cycle. It is also known as
software reengineering.
• The old code is analyzed to extract the module specifications. The module
specifications are then analyzed to produce the design.
• The design is analyzed(abstracted) to produce the original requirements
specification.
• The change requests are then applied to this requirements specification to generate
new requirements specification. Then forward engineering is applied to finally
apply the changes to the code.
19
Software Maintenance Process
Models
20
References
• https://www.javatpoint.com/software-engineering-software-mainten
ance
• https://www.tutorialspoint.com/software_engineering/software_mai
ntenance_overview.htm
• https://www.geeksforgeeks.org/software-engineering-software-maint
enance/
21
THANK YOU
22