Define software maintenance.
Software maintenance is the modification of software products after delivery to correct faults, to improve performance of other attributes, or to adapt the product to a modified environment. Software maintenance is the process of changing the system after it has been delivered to the customer. The cost of software maintenance is quite high. Software maintenance accounts for more than 65% cost of software development costs. Software maintenance has two models.
Need for software maintenance
The software needs maintenance due to the following reasons:
1. Over a period of time, the software’s original requirements may Chang, to reflect the customer’s need.
2. Errors undetected during software development may be found during the use and require correction.
3. With time, new technologies are introducing such as new hardware, operating system, etc. The software therefore must be modifies to adopt the new environment.
Models of software maintenance
1. Quick-fix model
- This is an ad-hoc approach using for maintaining the software system.
- The objective of this model is to identify the problem and then fix it as quickly as possible.
- The advantage is that it performs its work quickly and at a low cost.
- This model is an approach to modify the software code with little consideration for its impact on the overall structure of the software system.
2. Iterative enhancement model
The iterative enhancement model considers the changes made to the system are iterative in nature.
This model incorporates changes in the software based on the analysis of the existing system.
It assumes that complete documentation of the software is available in the beginning.
Moreover, it attempts to control complexity and tries to maintain good design.
The iterative enhancement model divides into three stages:
a. Analysis of software system.
b. Classification of requested modifications.
c. Implementation of requested modifications.
Types of software maintenance:
Software maintenance is of four types:
1. Adaptive maintenance
- This type of maintenance concerns external changes.
- Even if the software is error-free, it is possible that the environment in which the software system works will often change.
2. Corrective maintenance
- Corrective maintenance refers to modifications initiated by defects in the software.
- This type of maintenance is also says as bug fixing.
3. Perfective maintenance
- Perfective maintenance is an activity that we undertake to improve the maintainability, performance, and other attributes of our applications.
- It includes all changes like insertions, deletions, modifications, extensions, and enhancements made to the application to meet evolving user needs.
4. Preventive maintenance
- This type of maintenance is done to anticipate future problems and to improve the maintainability using techniques like documenting, commenting, or even re-implementing some part of software using modern software engineering tools and techniques.
Read more about the Software development life cycle (SDLC)