Software maintenance is a part of development is one that I haven’t experienced before, but I know is very important in a professional environment. When studying, projects are made, handed in, and forgotten. Professionally, that isn’t the case.
Software Maintenance, as defined by these NCSU slides, is whatever modifications may be made to a program after it has been released. There are many reasons for maintenance, but the main ones are adding features and fixing bugs.
There are 3 main types of maintenance:
- Corrective: Fixing faults with the system, like bugs. One needs to find the source of the problem, change the code, ensure no new errors were introduced, and update documentation if needed.
- Adaptive: Make the system work in a different environment, OS for example, and ensure everything still works.
- Perfective: Form the slides “software maintenance performed to improve the performance, maintainability, or other attributes of a computer program”.
- Preventive: Even if there are no problems, improve the code to make it last longer. This may include switching to new technologies, reengineering, and refactoring. Functionality isn’t commonly added in this case.