What is software maintenance?
While hardware systems are affected by pollution, weather or atmosphere, software systems often have dependencies within their working environment. The software will eventually lose its value if it does not undergo a maintenance task.
Here are a few examples that can cause a software system to lose its value:
- A website that validates authentic users using Google authentication stops working because Google modifies its authentication protocol.
- An instant messaging application becomes obsolete when a competitor releases a better messaging application.
- The software that manages sales and orders in a company is not working properly because its compatible hardware is obsolete.
- An application requires integration with new interfaces.
To deal with these changing technologies and business environments, software maintenance is necessary.
Software maintenance is the process of modifying and updating the software according to the customer’s requirements. Its purpose is to correct the fault and improve the software performance after it has been delivered to the customers.
Why is software maintenance necessary?
- To fix the bugs and errors in the software system.
- To improve the functionality of the software to make your product more compatible with the latest marketing and business environments.
- To remove outdated functions from your software that is inhibiting your product efficiency.
- To improve your software performance.
Types of software maintenance
1. Corrective Software Maintenance
Defect in the software arises due to errors and faults in design, logic, and code of the software. Corrective maintenance action (commonly referred to as “bug fixing”) addresses these errors and faults in your software system.
Corrective changes in the software are required when:
- Software is not working the way it is expected due to some acute issues, such as faulty logic flow, incorrect implementation, invalid or incomplete tests, etc.
- The issues in the software are affecting users after you have released the software.
Most commonly, bug reports are created by users and sent as feedback to the company that designed the software. Then the company’s developers and testers review the code and make corrective changes to the software accordingly. Its purpose is to enhance and improve the software.
If you detect and resolve the flaws in the software before users discover it, then the maintenance action is preventive or adaptive. However, if you fix the problem after getting bug reports from the user’s side, then it is corrective maintenance action.
If you are spending the majority of time dealing with corrective maintenance task then pay attention to the following:-
- Adopt a robust testing practice.
- Develop high-quality code.
- Focus on the correct implementation of the design specification.
- Enhance your ability to anticipate the problems.
2. Adaptive Software Maintenance
Adaptive maintenance aims at updating and modifying the software when:
- The platform in which your software operates is changing (due to technology, laws, policies, rules, operating system,etc.)
- Your customers need the product to interface with new hardware or software.
- You have predicted defects in the software that will affect your customers in the future.
Suppose you are running a web application and you found that it is not compatible with a new version of Microsoft web browser (Chromium-powered Edge browser) through a pre-release beta version for developers. If you address this compatibility issue in your web application before the final stable release of Microsoft Chromium-powered Edge browser, then you are performing an adaptive software maintenance task.
However, if you wait for a stable release of the new version of Microsoft Chromium-powered Edge browser, your customers will run into issues. Then the changes you perform after that to fix those issues is corrective maintenance task. It’s better to perform adaptive maintenance action quickly because delaying it will lead you to perform corrective maintenance later, which is a costly approach.
Note that if you are modifying the environment in which your software lives, then it will trigger changes within other parts of your software as well. For example, updating the server, processors, compilers, etc. will also affect the functionality of your software.
3. Perfective Software Maintenance
Perfective software maintenance is performed when you update the software system to improve its value, according to user demands. This includes:
- Speed optimization
- Improvement in user interfaces
- Improvements in software usability
- Enhancement of software functionality
- Improvement in software performance
Some key points about Perfective software maintenance:
- It involves making enhancements in software functionality by implementing new or changed user requirements (even when the changes are not considered a defect, error or fault).
- It is often, but not always, initiated by customer feedback.
- It accounts for 50% of all the maintenance activities.
Examples of perfective maintenance include modifying an ERP (Enterprise Resource Planning) program to include a new payment settlement feature in a software system.
4. Preventive Software Maintenance
Preventive maintenance is a software change you make to prevent the occurrence of errors in the future. It increases the software maintainability by reducing its complexity. Preventive maintenance task include:
- Updating the documentation: Updating the document according to the current state of the system.
- Optimizing the code: Modifying the code for faster execution of programs or making efficient use of storage space.
- Reconstructing the code: Transforming the structure of the program by reducing the source code, making it easily understandable.
Difference between adaptive and preventive maintenance
Understanding the difference between adaptive and preventive maintenance can be difficult sometimes. To know the difference between these two maintenance tasks, read the following:
1. It is linked to an event that might
2. For example, you have a definite and your software due to unpredictable future very good idea about when your circumstances, then it is preventive maintenance.
1. It is linked to an event that is sure to or might not happen in the future.
2. For example, if you decide to modify software, it will have scalability issues, then any change you make to deal with this issue is adaptive maintenance.