Software Maintenance

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)