Software Engineering: What is Software Maintenance?

what is software maintenance?

It is the changes to a software product or service, while maintaining its integrity after the software has been promoted to production. Software maintenance is a part of software engineering. Now software maintenance is also the software’s evolution based on users’ feedback. Software maintenance lasts longer than software development. For example, the development may last one year but the maintenance may last for 5 to 10 years. This is because organizations want to get the most Return on Investment in software development. For the same reason, there are more jobs in software maintenance than in software development.

Why is software maintenance required?

The reasons for software maintenance are First, to fix bugs. This is also called corrective maintenance. Implement enhancements required by users or new regulations. Different sources say that this is the largest percentage of work in software maintenance. To increase non-functional qualities like performance, security, usability and design of the software. Software maintenance is also required to decrease software complexity for example, by code refactoring or data refactoring. Enhancing the software in these ways by implementing enhancements, increasing non-functional qualities and decreasing the complexity is also called perfective maintenance. Software maintenance is also required to make the software work in a new environment, like upgraded hardware, new or upgraded operating system, new Database Management system or other software. Making the software work in a new environment is called adaptive maintenance. Finally, software maintenance is also required to delete the retired functionalities. Now, let us see the Software Maintenance Agreement. Now, software maintenance is planned and agreed with the help of a software maintenance agreement. Now, this document states the scope of software maintenance. It also mentions transition. Transition means training from the software developers to the maintenance team, setting up help desk etc. Service level agreements and incident management. Incident management means receive requests, log the requests, prioritize them, send them to the responsible role and track them until they are closed. Software maintenance agreement also mentions the software maintenance process. We will see this in just a moment. The roles and responsibilities of the maintenance team. And cost estimates.

Now, let us see the software maintenance process. The software maintenance process is done by the software maintainers. it generally involves tasks like analyze change request, confirm or deny the request based on the analysis, design one or more solution options, document the possible solutions. Then the users approve one of the solutions. The maintenance developer implements the solution. Then the maintenance tester tests the solution. Finally, the solution is accepted by the users. Lastly, let us see the challenges or issues in software maintenance. These are constraints like changing user priorities, high rate of requests or low skill levels in skills (like debugging, programming and communication), team instability, The maintenance team may have limited knowledge of the software source code. They may have limited domain knowledge. The source code quality may be poor. For example, it may have low readability. There may be a lack of documentation. The original software developers may not be available. Now, impact analysis means the identification of parts of software affected by a specific change. The maintenance developer may do an incorrect or incomplete impact analysis. There may be testing issues like limited regression testing due to lack of knowledge or lack of time. Or there may be issues in the maintenance process (as the process being too lengthy or time-consuming). Still, the software maintenance team has to resolve these issues and enhance the software while keeping it operational.