Software Maintenance

This is the last step in software development life cycle. Its main purpose is to improve and update the software after delivery. When users spend on software, they expect it to meet both their present and future needs. This may prove impossible due to the ever-changing market conditions, new client requirements, host modifications, and modern technology. Other than that, software requires maintenance to fix bugs, incorporate modern technology, remove outdated functions, make it compatible to the current market, and improve its performance levels.

Software maintenance can be categorized in four classes: Adaptive maintenance that modifies the system to make sure its compatible with the ever-changing technical environment, corrective maintenance that detects errors and corrects them, perfective maintenance that tunes of all the software’s elements to make sure the system operates perfectly, and lastly, preventive maintenance that protects systems from any upcoming vulnerabilities.

The process of software maintenance begins from the identification and tracing of the maintenance requirements. It can be generated by users or by the system itself. The next step is the analysis. The software requirements are analyzed to find out their impact on the system, including safety issues. The design stage is then implemented, and new modules are designed against the requirements. Different test cases are created for verification, and the test cases are implemented to solve the requirements.

Testing is done on the newly created modules and integration testing is also done to verify compatibility of the new modules to the system. After internal testing, the system is tested with the operational acceptance testing. If at this stage the system is operating effectively, it’s finally distributed to the clients. A user’s manual is provided to the users in a hard copy in addition to a training facility that can be provided if needed. Even at this stage, software maintenance isn’t complete; it’s a continuous process that goes on as long as the software is still operational.