What is Software maintenance?
Software maintenance is widely accepted part of SDLC now a days. It stands for all the modifications and updations done after the delivery of software product. There are number of reasons, why modifications are required, some of them are briefly mentioned below:
• Market Conditions - Policies, which changes over the time, such as taxation and newly introduced constraints like, how to maintain bookkeeping, may trigger need for modification.
• Client Requirements - Over the time, customer may ask for new features or functions in the software.
• Host Modifications - If any of the hardware and/or platform (such as operating system) of the target host changes, software changes are needed to keep adaptability.
Types of maintenance:
In a software lifetime, type of maintenance may vary based on its nature. It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature.
Following are some types of maintenance based on their characteristics:
• Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.
• Adaptive Maintenance - This includes modifications and updations applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.
• Perfective Maintenance - This includes modifications and updates done in order to keep the software usable over long period of time.
• Preventive Maintenance - This includes modifications and updations to prevent future problems of the software.
Cost of Maintenance:
• Reports suggest that the cost of maintenance is high. A study on estimating software maintenance found that the cost of maintenance is as high as 67% of the cost of entire software process cycle.
Software-end factors affecting Maintenance Cost
• Structure of Software Program
• Programming Language
• Dependence on external environment
• Staff reliability and availability
IEEE provides a framework for sequential maintenance process activities. It can be used in iterative manner and can be extended so that customized items and processes can be included.
These activities go hand-in-hand with each of the following phase:
• Identification & Tracing - It involves activities pertaining to identification of requirement of modification or maintenance.
• Analysis - The modification is analyzed for its impact on the system including safety and security implications.
• Design - New modules, which need to be replaced or modified, are designed against requirement specifications set in the previous stage. Test cases are created for validation and verification.
• Implementation - The new modules are coded with the help of structured design created in the design step.
• System Testing - Integration testing is done among newly created modules. Integration testing is also carried out between new modules and the system.
• Acceptance Testing - After testing the system internally, it is tested for acceptance with the help of users. If at this state, user complaints some issues they are addressed or noted to address in next iteration.
• Delivery - After acceptance test, the system is deployed all over the organization either by small update package or fresh installation of the system.
• Maintenance management - Configuration management is an essential part of system maintenance. It is aided with version control tools to control versions, semi-version or patch management.