In the software development lifecycle, the last phase (but not least) is Maintenance. Once you delivered software, defects are uncovered, environments might change and new requirementes will appear; thus, software maintenance is necessary. Its objective is to modify existing software while preserving its integrity. It’s also important to apply maintenance activities before the final delivery of software.
Maintenance consumes a major share of the financial resources in a software life cycle. I suppose its because it has no end (or until Retirement).
There are key issues that must be covered to ensure a good maintenance, basically they are:
- Technical issues
- Management issues
- Cost estimation
Techniques of Software Maintenance:
- Program comprehension: To read and understand programs in order to implement modifications.
- Reengineering: To alterate software to reconstitute it in a new form and to implement it. Refactoring is a reengineering technique that reorginizes the program without changing its behavior.
- Reverse engineering: To identify software’s components and their relantionships to reach higher levels of abstraction. Its purpose is to produce graphs from source code.
- Migration: To modify software so it can run in different enviroments.
- Retirement: When software reaches the end of its useful life. A previous analysis must be done to make the retirement decision.
As you can see, maintenance can be the most important phaste of the lifecycle, without it, the previous steps won’t be used to the maximum.