Archive for June, 2008

Software Maintenance

Monday, June 9th, 2008

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;

  1. 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.
  2. Key Issues in Software Maintenance – the technical issues, the management
    issues, maintenance cost estimation, and software maintenance
  3. Maintenance Process – topics on the maintenance processes and maintenance
  4. 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;

  1. process implementation
  2. problem and modification analysis
  3. modification implementation
  4. maintenance review/acceptance
  5. migration
  6. 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.