Software maintenance

maq
Software maintenance is defined as the process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment (NCSU, n.d.)
Reasons of doing it? Well, software is a model of reality and reality changes. If software is found to be useful, satisfied users want to extend the functionality of the system. Software is much cheaper to change than hardware. As a result, changes are made in software wherever possible. Successful software survives well beyond the lifetime of the hardware for which it was written. Software need to be modified to run on new hardware and operating system.
There are some types of maintenance based on their characteristics:
  • Corrective Maintenance – This includes modifications and updates done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.
  • Adaptive Maintenance – This includes modifications applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.
  • Perfective Maintenance – This includes updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.
  • Preventive Maintenance – It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

(Tutorialspoint, n.d.)

695px-software-maintenance
(Swebok, 2015)
Developers love building new things. The excitement, however, seems to wane once the project is done and out in the wild. Fighting the urge to move on to the Next Great Thing, this talk cover aspects of maintaining a project. Starting with the initial project setup, then moving into the issues surrounding ongoing work, refactoring, balancing feature requests and keeping clean,
updates, and new developers joining (or leaving) the project.

References
NC State University. (n.d.). Maintenance Refactoring.  NC State University SE Materials. Retrieved from: http://agile.csc.ncsu.edu/SEMaterials/MaintenanceRefactoring.pdf

Tutorialspoint. (n.d.) Software Maintenance Overview. Tutorialspoint. Retrieved from: https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm

Robbins, D. (2015). Chapter 5: Software Maintenance. Swebok. Retrieved from: http://swebokwiki.org/File:Software-maintenance.jpg