According to definition of maintainability in software engineering “Maintainability means fixing, updating, servicing and to modify the system or update the software for performance improvements or for the correction of faults”. Maintainability also includes the

Addition of new functionality or the adaptation of software to meet new requirements for the customer needs. Software maintainability is the degree of an application to repaired or enhanced it. During the system development life cycle (SDLC) this phase requires more development effort than any other phase. Approximately 75 percent of the cost is related to software maintenance. Maintainability increases the reliability, efficiency or safety of the software. It is also used to make future maintenance easier. It is used to increase the lifetime of the software. Maintainability repair or replace the faulty components and make the software even better as compared to the previous condition of the software.


Software maintenance is required when the customer demands new features and new functions in the software. Sometimes maintenance is required when the hardware of the system is changed then the modification of software is needed.

Market conditions and organization changes are also the reasons for software modification. It also includes that when the issue is detected, immediately fix it before it becomes a big problem. Sometimes viruses and malware are detected in the software which causes problems for the user than software maintenance is required to fix it or improve the performance.


Software maintainability consists of four types.


Corrective maintenance is defined as maintenance of bugs or errors. It means when the error is detected in the software then the corrective maintenance is required to fix it. These bugs or errors are responsible for the faults which may appear in the code, design or logic of the software. Sometimes the user asks for the enhancements of the software and not about fixing the bugs. Corrective maintenance requires the correction of existing faults in the software. Sometimes a change in hardware also cause bugs or errors.


Adaptive maintenance includes the environmental changes where your software is living. Changes to the hardware, operating system, software dependencies, and organizational business rules and policies are handled in adaptive maintenance. By these modifications to the environment, changes can occur in the other parts of the software. In changing circumstances adaptive maintenance is required to keep your software fresh or to increase the lifetime of the software.


Perfective maintenance refers to the changes in features and requirements in your existing system. After sometime when user suggests for new features and new functionality of the software than adaptive maintenance is used. In adaptive maintenance, some features are removed from the software which features are not effective for the software. Adaptive maintenance involves 50-55% of the maintenance work.


Perfective maintenance maximizes the maintainability or understanding of the software system. Documentation updating or code optimizing are involved in preventive maintenance. Preventive maintenance helps the software to become more scalable, stable, understandable, maintainable. This maintenance acts as medicine to prevent the problems. Restructuring the data and code of the software are implemented in preventive maintenance.


Software maintenance includes.

  • Performance improvements
  • Various bug fixing
  • Up to date with current trends
  • No need to spend extra bucks
  • Contributes positively for the reputation of companies


  • More money upfront
  • Over-maintenance
  • More workers
software maintainability
Figure: software maintainability