Types of Software Maintenance
Corrective Maintenance:
This is a normal bug fix, error update, or ‘fix’. For example, users get logged out after submitting two tickets, repairing this bug would be corrective maintenance. Another- The system erases all logs after 1,000 updates. Repairing this to keep the most recent 1,000 only would be corrective maintenance.
Adaptive Maintenance:
Adaptive means changing due to need. Things like business rules/circumstances, government regulations, or newer technology. For example, a new regulation for credit card payments requires cvv and zip(example sake!). Upgrading the system to comply would be adaptive maintenance. Another example, the business expanded to include order online & pickup in store. Adding a feature to accommodate business growth would be adaptive maintenance.
Perfective Maintenance:
Perfective resembles its namesake. Adding user requested or other new features to increase usability is perfective. Improving reliability, functionality, and/or scalability to increase usability is perfective maintenance, or betterment.
For example, adding a user requested feature for easier flow to edit a document would be perfective maintenance. Applying specific market design principles to a website’s appearance would also be perfective maintenance if done after initial deployment.
Preventative Maintenance:
Preventative maintenance includes things like general updates due to changing language capabilities, operating system updates, and other software or hardware requirements is considered preventative maintenance.
For example, preparing and expanding data storage capacity at x% usage, before max, to prevent overflow is preventative maintenance.
Obsoletion:
A software would likely be obsolete when parts that need to be replaced or re-coded exceed the list of new features. Another possibility is when language support ends, like Java versioning, to the extent that new functionalities cannot be added due to compatibility. Another instance would be when a business undergoes drastic changes such that a new UX would be easier than correcting or connecting the previous model.
Sources: