Software maintenance is a process by which a computer program is altered or updated after it has been released. While the term "maintenance" may imply repairs and corrections of errors, only a portion of this process is intended for this purpose, referred to as "corrective." Much software maintenance is used for "adaptive" work that ensures a program continues to be effective and useable in changing environments, as well as "perfective" procedures that improve upon functionality. "Preventive" maintenance is used to make the process easier in the future, by providing additional documentation and tools to make later updates simpler to develop.
A great deal of software maintenance is performed through patches that are created by a developer and then released to the public. These files are installed by a computer user and they modify the functionality and design of the base program on a system. This is done after the release of a program, though early software development should take maintenance into consideration.
Corrective software maintenance is the process of developing changes to a program that repair bugs or fix issues. This does not add any new features, unless they are already existent but cannot be used due to an error in programming. Only about one-fourth of all software maintenance is used for corrective issues, yet it is often viewed as the most important element by program users.
A great deal of software maintenance is referred to as "adaptive," which is used to adjust a program to function in a new environment. Programs are typically designed and developed to function on a certain Operating Systems (OS). While some software may function on newer versions, there are many programs that cannot do so. An adaptive patch to a program could alter the code to allow it to function properly on a new system, keeping it current and useable.
Perfective software maintenance is used to add new features to a product and to make changes that can directly affect a user. A company might release a word processing program, for example, that includes a few spellchecking features. If they release a patch that updates the dictionary in the program, and creates additional error-correcting options, then it would be considered perfective maintenance. These upgrades are typically fairly minor, as major overhauls usually require the release of a new version or software "client."
Developers can also work on preventive software maintenance, which is used to make future changes even simpler. After development, a company may realize that there is the potential for a bug that has not yet developed. They may release a patch that fixes this issue before it ever actually becomes a problem. Additional documentation and code cleanup can also be performed to make future maintenance easier or unnecessary.