Anything built or created must be maintained for it to last, this can apply to homes, cars and software. Technology is a field that is rapidly everchanging, and it is up to the businesses to keep up by maintaining their software. Software maintenance is sometimes viewed as unnecessary by businesses, usually due to cost or naive confidence in the future proofing of their system. The cost of maintenance can be high, the cumulative cost may be higher than the software itself. When the system is created, it will be designed with current practices, security measures, and adequate future proofing. The problem is that the system would only be current at the time of implementation, and slowly as time passes it will keep depreciating.

Software maintenance’s primary goal is to preserve and protect the value of the software over time. Issues related to the software such as defect fixing or character enhancement are handled by the maintenance process post-delivery. The initial requirements on which the system was designed on will also change as time passes, this modification and improvement is usually part of the maintenance procedure. There are 4 major categories when it comes to maintenance:

  1. Corrective Maintenance – this type of maintenance is primarily fixing defects post-delivery. The process involves using failure reports to locate errors and correct the issues. If the code is edited, the documentation has to be verified and validated anew, while also repeating the error scenario to check that the fix has worked.
  2. Adaptive Maintenance – is adjusting the system to work in a new environment, this can include hardware, platform, security or policy changes. This maintenance ensures that the software will preserve its functionality with these changes.
  3. Perfective Maintenance – is when changes are made to improve the performance, maintainability or other attributes. This could be changes to the functional and non-functional requirements.
  4. Preventive Maintenance – is used to prevent any foreseen maintenance issues before they occur. This is usually achieved by changing the software in a way that does not change the external behavior of the code but improves its internal structure.

On average 75% of maintenance fall in the adaptive and perfective category. All 4 of these maintenance methods usually have to deal with changes made to the systems code. These modifications have to be done by the developers of the code, if an inexperienced engineer changes the code it could have a cascading effect creating more errors. These cascading errors can lead to the complete failure of the whole system.

Software maintenance is a standard practice to make sure software systems stay up to date in both functionality and security. This maintenance is best provided by the developers of the code, so that the system can be supported persevered and secured without leading to more errors.