Software maintenance is an important phase of SDLC.
It is defined as a set of activities to keep the software functional and behavioral as intended for as long as possible with few problems. These activities might involve any processes to modify software product after final release cycle. As a result, software maintenance will
- Improve performance
- Correct faults
- Adapt the product to a modified environment
How software maintenance is different from software development?
Software Development is kind of a new development where a new environment and system is created from the scratch and there are no sketchy boundaries, if not limited by requirements.
But think of introducing a new feature in the developed product which is running in a specific environment.
Then, the existing system setting and environment plays a major role as they are required to be considered and analyzed at the planning stage of new feature development.
Consideration of limitations posed by existing system and environment is the key difference between software maintenance and software development.
What is the purpose of software maintenance?
The purpose is to preserve the value of software over the time. The value can be enhanced by expanding the customer base, enhancements of capabilities, deletion of obsolete capabilities, more efficient and employing newer technology.
What are the categories of Software Maintenance?
Software maintenance is categorized mainly into 4 categories:
Adaptive: As the name suggests, it is related to activities which ensures software remain functional during movement of software to a new system environment. For example: Up gradation of processor will require software to be adapted to the upgraded environment.
Perfective: Here, more the requirements, more expansion of software is required. Requirements grow over a course of time so do software. Perfective is an approach to accommodate the enhancement of the initial product.
Corrective: As the name suggests, Corrective approach tends to correct any errors or bugs. These errors or bugs might have introduced during design stage, coding stage. These issues might have been missed during development or later crop up under some new test scenarios which were not covered during testing.
Preventive: Preventive approach is more a beforehand precaution approach where activities are lined up to avoid any corrective action. For example: Any maintenance activity might lead to code complexity so a series of code restructuring and code optimization activities are performed to avoid any successive issues.