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:
|
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: