Saturday, September 24th, 2016
Software Maintenance is making changes to the software after delivery, in order to correct faults and deficiencies found during usage, or to improve performance or any other attribute as well as to adapt the product to a new environment.
The software maintenance is generally classified as:
|Adaptive||…change in environment|
|Perfective||…improving quality (e.g. performance)|
|Evolutive||…changing user requirements|
|Preventive||…due to forseeable errors but with no immediate benefit (e.g. Y2K problem)|
Regarding the future maintenance of the software, we can find two types of projects, with very different behaviours:
- Short-term approach: The software is developed as soon as possible, taking into account only the cost (and the profit) of the current project, regardless its future maintenance and growth. In that case, software maintenance is not given the priority it deserves and as such it is often neglected by the management.
- Long-term approach: The software is developed incrementally, as part of a much bigger vision, taking into account the future maintenance and growth of the product.
The final user or company who has paid for the product must to know how maintainable is the software that they have acquired.
With short-term approaches there is usually big Technical Debt inside the code, that impairs or prevents the growth of the product at a reasonable cost and schedule.
Technical Debt for the software maintenance cost is like an iceberg: 90% of the cost is unknow. There are big hidden costs.
Therefore, software must to be built using always a long-term approach because always the maintainability must to be a priority in every project, in order to avoid future hidden costs.
The best way to lower maintenance effort is to build quality in from the start. Quality is eliminate Technical Debt. Quality is release a Minimum Viable Product, receive feedback from the final users and work in short iterations to add new functionality. Quality is developing always in “maintenance mode” so we are improving and adapting the product continuously.