According to SWEBOK, this knowledge area addresses the phase of the life cycle that commences upon delivery. However, it acknowledges that maintenance activities can occur sooner. I think that agile further blurs this line, because of the frequent delivery cycles. SWEBOK breaks this area into four sub-areas;
- Software Maintenance Fundamentals – definitions and terminology, the nature of maintenance, the
need for maintenance, the majority of maintenance costs, the
evolution of software, and the categories of maintenance. - Key Issues in Software Maintenance – the technical issues, the management
issues, maintenance cost estimation, and software maintenance
measurement. - Maintenance Process – topics on the maintenance processes and maintenance
activities. - Techniques for Maintenance – program comprehension, re-engineering, and
reverse engineering.
The relevant IEEE standards for the definition of Software Maintenance is IEEE 1219 which states:
“the modification of a software product after delivery to correct faults, to
improve performance or other attributes, or to adapt the product to a modified environment.”
AND IEEE/EIA 12207 states:
“the process of a software product undergoing modification to code and associated documentation due
to a problem or the need for improvement. The objective is to modify the existing software product while
preserving its integrity.
ISO/IEC 14764, the international standard is similar.
IEEE/EIA 12207 also identifies the primary activities of software maintenance;
- process implementation
- problem and modification analysis
- modification implementation
- maintenance review/acceptance
- migration
- retirement
Reading this knowledge area in SWEBOK, one finds that it consistently notes the misconception of maintenance as a minimal task in comparison to development. With notations to outside references, SWEBOK states that non-corrective actions account for over 80% of the effort. There is much more involved with software maintenance than just fixing “bugs”.
BTW, one of the technical issues identified by SWEBOK, is that of limited understanding. It states that 40-60% of the maintenance effort can be devoted to understanding the software to be modified.
Allen