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.
Importance
of 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.
Types of Software Maintenance –
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.
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 demands.
4.
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.
Maintenance
side-effects
- Any error or
undesirable behaviour that
occurs as a result of modifications to a system
- Coding
side-effects (inadvertent removal of vital code, changes in semantics of
code, unexpected changes in execution path)
- Data
side-effects (changes in data structures render older data invalid or
incomplete, changes in global constants, changes in data ranges)
- Documentation
side-effects (forgetting to document code or data structure changes,
changes not reflected in user manuals or interface)