5.    Software Maintenance

Software maintenance is defined as the process of modifying existing software while not changing its primary functions [Boehm 1981].  The assumption made by the COCOMO II model is that software maintenance cost generally has the same cost driver attributes as software development costs.  Maintenance includes redesign and recoding of small portions of the original product, redesign and development of interfaces, and minor modification of the product structure.  Maintenance can be classified as either updates or repairs.  Product repairs can be further segregated into corrective (failures in processing, performance, or implementation), adaptive (changes in the processing or data environment), or perfective maintenance (enhancing performance or maintainability). Maintenance sizing is covered in Section 2.7.

There are special considerations for using COCOMO II in software maintenance.  Some of these are adapted from [Boehm 1981].

·         The SCED cost driver (Required Development Schedule) is not used in the estimation of effort for maintenance.  This is because the maintenance cycle is usually of a fixed duration.

·         The RUSE cost driver (Required Reusablity) is not used in the estimation of effort for maintenance.  This is because the extra effort required to maintain a component’s reusability is roughly balanced by the reduced maintenance effort due to the component’s careful design, documentation, and testing.

·         The RELY cost driver (Required Software Reliabilty) has a different set of effort multipliers for maintenance.  For maintenance the RELY cost driver depends on the required reliability under which the product was developed.  If the product was developed with low reliability it will require more effort to fix latent faults.  If the product was developed with very high reliability, the effort required to maintain that level of reliability will be above nominal.  Table 40 below shows the effort multipliers for RELY:

Table 1.         RELY Maintenance Cost Driver

RELY Descriptors:

slight inconvenience

low, easily recoverable losses

moderate, easily recoverable losses

high financial loss

risk to human life

 

Rating Levels

Very Low

Low

Nominal

High

Very High

Extra High

Effort Multipliers

1.23

1.10

1.00

0.99

1.07

n/a

·         The scaling exponent, E, is applied to the number of changed KSLOC (added and modified, not deleted) rather than the total legacy system KSLOC.  As discussed in Section 2.7, the effective maintenance size (Size)m is adjusted by a Maintenance Adjustment Factor (MAF) to account for legacy system effects.

The maintenance effort estimation formula is the same as the COCOMO II Post-Architecture development model (with the exclusion of SCED and RUSE):

                                                                                                Eq. 15

The COCOMO II approach differs from the COCOMO 81 maintenance effort estimation by letting you use any desired maintenance activity duration, TM.  The average maintenance staffing level, FSPM, can then be obtained via the relationship:

                                                               FSPM = PMM / TM                                                    Eq. 16