Software Maintenance is a very broad activity that takes place once the operation is done. It optimizes the software performance by reducing errors, eliminating useless lines of codes and applying advanced development. It can take up to 1-2 years to build a software system while its maintenance and modification can be an ongoing activity for 15-20 years.
Categories of Software Maintenance:
- Corrective Maintenance
- Adaptive Maintenance
- Perfective Maintenance
- Preventive Maintenance
The cost of system maintenance represents a large proportion of the budget of most organizations that use software system. More than 65% of software lifecycle cost is expended in the maintenance activities.
Cost of software maintenance can be controlled by postponing the. development opportunity of software maintenance but this will cause the following intangible cost:
- Customer dissatisfaction when requests for repair or modification cannot be addressed in a timely manner.
- Reduction in overall software quality as a result of changes that introduce hidden errors in maintained software.
Software maintenance cost factors:
The key factors that distinguish development and maintenance and which lead to higher maintenance cost are divided into two subcategories:
- Non-Technical factors
- Technical factors
The Non-Technical factors include:
- Application Domain
- Staff stability
- Program lifetime
- Dependence on External Enviroment
- Hardware stability
Technical factors include the following:
- module independence
- Programming language
- Programming style
- Program validation and testing
- Configuration management techniques
Efforts expended on maintenance may be divided into productivity activities (for example analysis and evaluation, design and modification, coding). The following expression provides a module of maintenance efforts:
M = P + K(C - D)
M: Total effort expended on the maintenance.
P: Productive effort.
K: An empirical constant.
C: A measure of complexity that can be attributed to a lack of good design and documentation.
D: A measure of the degree of familiarity with the software.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
- Software Maintenance and Various Software Maintenance Tables
- Software Engineering | Software Maintenance
- Components of Software Maintenance Process
- Boehm’s Software Maintenance Model
- Taute Software Maintenance Model
- Software Engineering | Cost Variance (CV) and Schedule Variance (SV)
- Software Engineering | Cost Performance Index (CPI)
- Cost of Quality in Software Testing
- Cost Estimation Models in Software Engineering
- Software Cost Estimation
- Difference between Cost Performance Index (CPI) and Schedule Performance Index (SPI)
- Difference between Cost Variance and Schedule Variance
- Cost and Schedule Estimating Process
- Software Engineering | Role and Responsibilities of a software Project Manager
- Software Engineering | Software Business and Development
- Difference between Packaged Software and Custom Software
- Difference between Generic Software Development and Custom Software Development
- Difference between Free Software and Open Source Software
- Software Freedom in FOSS (Free and open-source software)
- Difference between Software Inspection and Software Testing
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.