Fox< Posted September 19, 2017 Posted September 19, 2017 In software engineering, software maintenance is the modification of a software product after delivery, to correct errors, improve performance, or other attributes.1 Software maintenance is one of the most common engineering activities of software. Software maintenance is also one of the phases in the system development life cycle (SDLC), which is applied to software development. The maintenance phase is the phase that follows the deployment (implementation) of the software in the field. A common perception of maintenance is that it is merely defect correction. However, one study indicated that most, more than 80%, of the maintenance effort is used for non-corrective actions (Pigosky 1997). This perception is perpetuated by users submitting reports of problems that are actually improvements of functionality to the system [citation needed]. Software maintenance and system evolution was first approached by Meir M. Lehman in 1969. Over a period of twenty years, his research led to the formulation of Lehman's laws (Lehman 1997). Key findings from his research include that maintenance is really an evolutionary development and that maintenance decisions are aided by understanding what happens to systems (and software) over time. Lehman showed that systems continue to evolve over time. As they evolve, they grow more complex unless some measures like code refactoring are taken to reduce complexity. The key software maintenance issues are administrative and technical. Key management issues are: alignment with customer priorities, staffing, which organization does maintenance, cost estimation. These are key technical issues: limited understanding, impact analysis, testing, maintenanceability measurement. Software maintenance is a very broad activity that includes bug fixes, capacity upgrades, obsolete function removal and optimization. Because change is inevitable, mechanisms for evaluation, control, and modification must be developed. 1
Recommended Posts