Is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
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.
- Organization Changes: If there is any business level change at client end, such as reduction of organization strength, acquiring another company, organization venturing into new business, need to modify in the original software may arise.
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.
- 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. It includes new features, new user requirements for refining the software and improve its reliability and performance.
- Preventive Maintenance: This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but may cause serious issues in future.
The key software maintenance issues are both managerial and technical. Key management issues are: alignment with customer priorities, staffing, which organization does maintenance, estimating costs. Key technical issues are: limited understanding, impact analysis, testing, maintainability measurement.
Software maintenance is a very broad activity that includes error correction, enhancements of capabilities, deletion of obsolete capabilities, and optimization. Because change is inevitable, mechanisms must be developed for evaluation, controlling and making modifications.
Real-world factors affecting Maintenance Cost
- The standard age of any software is considered up to 10 to 15 years.
- Older softwares, which were meant to work on slow machines with less memory and storage capacity cannot keep themselves challenging against newly coming enhanced softwares on modern hardware.
- As technology advances, it becomes costly to maintain old software.
- Most maintenance engineers are newbie and use trial and error method to rectify problem.
- Often, changes made can easily hurt the original structure of the software, making it hard for any subsequent changes.
- Changes are often left undocumented which may cause more conflicts in future.
Software-end factors affecting Maintenance Cost
- Structure of Software Program
- Programming Language
- Dependence on external environment
- Staff reliability and availability