2-3 single space pages
COCOMO II/Chapter 2/Boehm et al. - 1 -
CHAPTER 2
COCOMO II: MODEL DEFINITION
2.1 Introduction
2.1.1 Overview
This chapter presents two models, the Post-Architecture and Early Design
models. Recall from Chapter 1 that these two models are used in the development
of Application Generator, System Integration, or Infrastructure developments.
The Post-Architecture is a detailed model that is used once the project is ready to
develop and sustain a fielded system. The system should have a life cycle
architecture package, which provides detailed information on cost driver inputs,
and enables more accurate cost estimates. The Early Design model is a high-level
model that is used in the exploration of architectural alternatives or incremental
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 2 -
development strategies. This level of detail is consistent with the general level of
information available and the general level of estimation accuracy needed.
The Post-Architecture and Early Design models use the same approach for
product sizing (including reuse) and for scale drivers. These will be presented
first. Then, the Post-Architecture model will be explained followed by the Early
Design model. The chapter ends with a discussion and example of using the
models for the eight decision analysis situations introduced at the beginning of
Chapter 1.
2.1.2 Nominal-Schedule Estimation Equations
Both the Post-Architecture and Early Design models use the same
functional form to estimate the amount of effort and calendar time it will take to
develop a software project. The amount of effort in person-months, PMNS, is
estimated by the formula:
∑
∏
=
=
×+=
××=
5
1j j
n
1i i
E NS
SF0.01BE where
EMSizeAPM Eqn. 2.1
The amount of calendar time, TDEVNS, it will take to develop the product
is estimated by the formula:
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 3 -
( )
B)(E0.2D
SF0.2DF where
PMCTDEV 5
1j j
F NSNS
−×+=
×+=
×=
∑ =
Eqn. 2.2
The value of n is 16 for the Post-Architecture model effort multipliers,
EMi, and 6 for the Early Design model. The values of A, B, EM1, …, EM16, SF1,
…, and SF5 for the COCOMO II.2000 Post-Architecture model are obtained by
calibration to the actual parameters and effort values for the 161 projects currently
in the COCOMO II database. The values of C and D for the COCOMO II.2000
schedule equation are obtained by calibration to the actual schedule values for the
161 project currently in the COCOMO II database.
The values of A, B, C, D, SF1, …, and SF5 for the Early Design model are
the same as those for the Post-Architecture model. The values of EM1, …, and
EM6 for the Early Design model are obtained by combining the values of their 16
Post-Architecture counterparts; the specific combinations are given in Section
2.3.2.2.
The subscript NS applied to PM and TDEV indicates that these are the
nominal-schedule estimates of effort and calendar time. The effects of schedule
compression or stretch-out are covered by an additional cost driver, Required
Development Schedule. They are also included in the COCOMO II.2000
calibration to the 161 projects. Its specific effects are given in Section 2.4.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 4 -
The specific milestones used as the endpoints in measuring development
effort and calendar time are defined in Appendix A, as are the other definitions
and assumptions involved in defining development effort and calendar time. Size
is expressed as thousands of source lines of code (SLOC) or as unadjusted
function points (UFP), as discussed in Section 2.2. Development labor cost is
obtained by multiplying effort in PM by the average labor cost per PM. The
values of A, B, C, and D in the COCOMO II.2000 calibration are:
A = 2.94 B = 0.91 C = 3.67 D = 0.28
Details of the calibration are presented in Chapter 4, which also provides
formulas for calibrating either A and C or A, B, C, and D to one’s own database
of projects. It is recommended that at least A and C be calibrated to the local
development environment to increase the model’s accuracy.
As an example, let's estimate how much effort and calendar time it would
take to develop an average 100 KSLOC sized project. For an average project, the
effort multipliers are all equal to 1.0. E will be set to 1.15 reflecting an average,
large project. The estimated effort is PMNS = 2.94(100)1.15 = 586.61.
Continuing the example, TDEVNS = 3.67(586.6)(0.28+0.2×(1.15-0.91)) =
3.67(586.6)0.328 = 29.7 months. The average number of staff required for the
nominal-schedule development is PMNS / TDEVNS = 586.6 / 29.7 = 19.75 or 20
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 5 -
people. In this example, an average 100 KSLOC software project will take about
30 months to complete with an average of 20 people.
2.2 Sizing
A good size estimate is very important for a good model estimation.
However, determining size can be challenging. Projects are generally composed
of new code, code reused from other sources--with or without modifications--and
automatically translated code. COCOMO II only uses size data that influences
effort which is new code and code that is copied and modified.
For new and reused code, a method is used to make them equivalent so
they can be rolled up into an aggregate size estimate. The baseline size in
COCOMO II is a count of new lines of code. The count for code that is copied
and then modified has to be adjusted to create a count that is equivalent to new
lines of code. The adjustment takes into account the amount of design, code and
testing that was changed. It also considers the understandability of the code and
the programmer familiarity with the code.
For automatically translated code, a separate translation productivity rate
is used to determine effort from the amount of code to be translated.
The following sections discuss sizing new code and sizing reused code.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 6 -
2.2.1 Counting Source Lines of Code (SLOC)
There are several sources for estimating new lines of code. The best
source is historical data. For instance, there may be data that will convert
Function Points, components, or anything available early in the project to estimate
lines of code. Lacking historical data, using expert opinion can be used to derive
estimates of likely, lowest likely, and highest likely size.
Code size is expressed in thousands of source lines of code (KSLOC. A
source line of code is generally meant to exclude non-delivered support software
such as test drivers. However, if these are developed with the same care as
delivered software, with their own reviews, test plans, documentation, etc., then
they should be counted [Boehm 81, pp. 58-59]. The goal is to measure the
amount of intellectual work put into program development.
Defining a line of code is difficult due to conceptual differences involved
in accounting for executable statements and data declarations in different
languages. Difficulties arise when trying to define consistent measures across
different programming languages. ). In COCOMO II, the logical source statement
has been chosen as the standard line of code. The Software Engineering Institute
(SEI) definition checklist for a logical source statement is used in defining the line
of code measure. The SEI has developed this checklist as part of a system of
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 7 -
definition checklists, report forms and supplemental forms to support
measurement definitions [Park 1992, Goethert et al. 1992].
Figure 2.1 shows the SLOC definition checklist as it is being applied to
support the development of the COCOMO II model. Each checkmark in the
“Includes” column identifies a particular statement type or attribute included in
the definition, and vice-versa for the excludes. Other sections in the definition
clarify statement attributes for usage, delivery, functionality, replications and
development status. The full checklist is provided at the end of this chapter in
Section 2.7.3.
Some changes were made to the line-of-code definition that departs from
the default definition provided in [Park 1992]. These changes eliminate
categories of software, which are generally small sources of project effort. Not
included in the definition are commercial-off-the-shelf software (COTS),
government-furnished software (GFS), other products, language support libraries
and operating systems, or other commercial libraries. Code generated with source
code generators is handled by counting separate operator directives as lines of
source code. It is admittedly difficult to count "directives" in a highly visual
programming system. As this approach becomes better understood, we hope to
provide more specific counting rules. For general source code sizing approaches,
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 8 -
such as PERT sizing, expert consensus, analogy, top-down, and bottom-up, see
Section 21.4 and Chapter 22 of [Boehm, 1981].
Measurement unit: Physical source lines Logical source statements √ Statement type Definition √ Data Array Includes Excludes When a line or statement contains more than one type, classify it as the type with the highest precedence.
1 Executable Order of precedence 1 √ 2 Nonexecutable
3 Declarations 2 √ 4 Compiler directives 3 √ 5 Comments
6 On their own lines 4 √ 7 On lines with source code 5 √ 8 Banners and non-blank spacers 6 √ 9 Blank (empty) comments 7 √
10 Blank lines 8 √ 11 12 How produced Definition √ Data array Includes Excludes 1 Programmed √ 2 Generated with source code generators √ 3 Converted with automated translators √ 4 Copied or reused without change √ 5 Modified √ 6 Removed √ 7 8 Origin Definition √ Data array Includes Excludes 1 New work: no prior existence √ 2 Prior work: taken or adapted from
3 A previous version, build, or release √ 4 Commercial, off-the-shelf software (COTS), other than libraries √ 5 Government furnished software (GFS), other than reuse libraries √ 6 Another product √ 7 A vendor-supplied language support library (unmodified) √ 8 A vendor-supplied operating system or utility (unmodified) √ 9 A local or modified language support library or operating system √ 10 Other commercial library √ 11 A reuse library (software designed for reuse) √ 12 Other software component or library √
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 9 -
13
14
2.2.2 Counting Unadjusted Function Points (UFP)
The function point cost estimation approach is based on the amount of
functionality in a software project and a set of individual project factors [Behrens
1983; Kunkler 1985; IFPUG 1994]. Function points are useful estimators since
they are based on information that is available early in the project life cycle. A
brief summary of function points and their calculation in support of COCOMO II
follows.
Function points measure a software project by quantifying the information
processing functionality associated with major external data or control input,
output, or file types. Five user function types should be identified as defined in
Table 2.1.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 10 -
Table 2.1 User Function Types
Function Point Description
External Input (EI) Count each unique user data or user control input type that enters the external boundary of the software system being measured.
External Output (EO)
Count each unique user data or control output type that leaves the external boundary of the software system being measured.
Internal Logical File (ILF)
Count each major logical group of user data or control information in the software system as a logical internal file type. Include each logical file (e.g., each logical group of data) that is generated, used, or maintained by the software system.
External Interface Files (EIF)
Files passed or shared between software systems should be counted as external interface file types within each system.
External Inquiry (EQ)
Count each unique input-output combination, where input causes and generates an immediate output, as an external inquiry type.
Each instance of these function types is then classified by complexity
level. The complexity levels determine a set of weights, which are applied to
their corresponding function counts to determine the Unadjusted Function Points
quantity. This is the Function Point sizing metric used by COCOMO II. The
usual Function Point procedure involves assessing the degree of influence (DI) of
fourteen application characteristics on the software project determined according
to a rating scale of 0.0 to 0.05 for each characteristic. The 14 ratings are added
together, and added to a base level of 0.65 to produce a general characteristic
adjustment factor that ranges from 0.65 to 1.35.
Each of these fourteen characteristics, such as distributed functions,
performance, and reusability, thus have a maximum of 5% contribution to
estimated effort. Having, for example, a 5% limit on the effect of reuse is
inconsistent with COCOMO experience; thus COCOMO II uses Unadjusted
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 11 -
Function Points for sizing, and applies its reuse factors, cost drivers, and scale
drivers to this sizing quantity to account for the effects of reuse, distribution, etc.
on project effort.
The COCOMO II procedure for determining Unadjusted Function Points
follows the definitions in [IFPUG, 1994]. This procedure is used in both the
Early Design and the Post-Architecture models.
1. Determine function counts by type. The unadjusted function counts should be
counted by a lead technical person based on information in the software
requirements and design documents. The number of each of the five user
function types should be counted (Internal Logical File (ILF), External
Interface File (EIF), External Input (EI), External Output (EO), and External
Inquiry (EQ)). See [IFPUG, 1994] for more detailed interpretations of the
counting rules for those quantities.
2. Determine complexity-level function counts. Classify each function count
into Low, Average and High complexity levels depending on the number of
data element types contained and the number of file types referenced. Use the
following scheme:
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 12 -
Table 2.2 FP Counting Weights
For Internal Logical Files and External Interface Files
Data Elements Record Elements 1 - 19 20 - 50 51+
1 Low Low Avg. 2 - 5 Low Avg. High 6+ Avg. High High
For External Output and External Inquiry Data Elements
File Types 1 - 5 6 - 19 20+ 0 or 1 Low Low Avg. 2 - 3 Low Avg. High 4+ Avg. High High
For External Input Data Elements
File Types 1 - 4 5 - 15 16+ 0 or 1 Low Low Avg. 2 - 3 Low Avg. High 3+ Avg. High High
3. Apply complexity weights. Weight the number of function types at each
complexity level using the following scheme (the weights reflect the relative
effort required to implement the function):
Table 2.3 UFP Complexity Weights
Complexity-Weight
Function Type Low Average High Internal Logical Files 7 10 15 External Interfaces Files 5 7 10 External Inputs 3 4 6 External Outputs 4 5 7 External Inquiries 3 4 6
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 13 -
4. Compute Unadjusted Function Points. Add all the weighted functions counts
to get one number, the Unadjusted Function Points.
2.2.3 Relating UFPs to SLOC
Convert the Unadjusted Function Points (UFP) to Lines of Code. The
unadjusted function points have to be converted to source lines of code in the
implementation language (Ada, C, C++, Pascal, etc.). COCOMO II does this for
both the Early Design and Post-Architecture models by using tables to convert
Unadjusted Function Points into equivalent SLOC. The current conversion ratios
shown in Table 2.4 are from [Jones, 1996]. Updates to these conversion ratios as
well as additional ratios can be found at
http://www.spr.com/library/0Langtbl.htm.
USR_1 through USR_5 are five extra slots provided by USC COCOMO
II.2000 to accommodate users' additional implementation languages. These ratios
are easy to determine with historical data or with a recently completed project. It
would be prudent to determine your own ratios for your local environment.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 14 -
Table 2.4 UFP to SLOC Conversion Ratios
Language SLOC / UFP Language SLOC / UFP
Access 38 Jovial 107 Ada 83 71 Lisp 64 Ada 95 49 Machine Code 640 AI Shell 49 Modula 2 80 APL 32 Pascal 91 Assembly - Basic 320 PERL 27 Assembly - Macro 213 PowerBuilder 16 Basic - ANSI 64 Prolog 64 Basic - Compiled 91 Query – Default 13 Basic - Visual 32 Report Generator 80 C 128 Second Generation Language 107 C++ 55 Simulation – Default 46 Cobol (ANSI 85) 91 Spreadsheet 6 Database – Default 40 Third Generation Language 80 Fifth Generation Language 4 Unix Shell Scripts 107 First Generation Language 320 USR_1 1 Forth 64 USR_2 1 Fortran 77 107 USR_3 1 Fortran 95 71 USR_4 1 Fourth Generation Language 20 USR_5 1 High Level Language 64 Visual Basic 5.0 29 HTML 3.0 15 Visual C++ 34 Java 53
2.2.4 Aggregating New, Adapted, and Reused Code
A product’s size discussed thus far has been for new development. Code
that is taken from another source and used in the product under development also
contributes to the product's effective size. Pre-existing code that is treated as a
black-box and plugged into the product is called reused code. Pre-existing code
that is treated as a white-box and is modified for use with the product is called
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 15 -
adapted code. The effective size of reused and adapted code is adjusted to be its
equivalent in new code. The adjusted code is called equivalent source lines of
code (ESLOC). The adjustment is based on the additional effort it takes to
modify the code for inclusion in the product. The sizing model treats reuse with
function points and source lines of code the same in either the Early Design model
or the Post-Architecture model.
2.2.4.1 Nonlinear Reuse Effects
Analysis in [Selby 1988] of reuse costs across nearly 3,000 reused
modules in the NASA Software Engineering Laboratory indicates that the reuse
cost function, relating the amount of modification of the reused code to the
resulting cost to reuse, is nonlinear in two significant ways (see Figure 2.2). The
effort required to reuse code does not start at zero. There is generally a cost of
about 5% for assessing, selecting, and assimilating the reusable component.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 16 -
The figure shows the results of the NASA analysis as blocks of relative
cost. A dotted line is superimposed on the blocks of relative cost to show
increasing cost as more of the reused code is modified. (The solid lines are
labeled AAM for Adaptation Adjustment Modifier. AAM is explained in
Equation 2.4.) It can be seen that small modifications in the reused product
generate disproportionately large costs. This is primarily due to two factors: the
cost of understanding the software to be modified, and the relative cost of
checking module interfaces.
[Parikh and Zvegintzov 1983] contain data indicating that 47% of the
effort in software maintenance involves understanding the software to be
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 17 -
modified. Thus, as soon as one goes from unmodified (black-box) reuse to
modified-software (white-box) reuse, one encounters this software understanding
penalty. Also, [Gerlich and Denskat 1994] shows that, if one modifies k out of m
software modules, the number of module interface checks required, N, is
expressed in Equation 2.3.
( ) ⎟ ⎠ ⎞
⎜ ⎝ ⎛ −×+×=
2 1kkk-mkN Eqn. 2.3
Figure 2.3 shows this relation between the number of modules modified k
and the resulting number, N, of module interface checks required for an example
of m = 10 modules. In this example, modifying 20% (2 of 10) of the modules
required revalidation of 38% (17 of 45) of the interfaces.
The shape of this curve is similar for other values of m. It indicates that there are
nonlinear effects involved in the module interface checking which occurs during
the design, code, integration, and test of modified software.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 18 -
For m = 10
0
10
20
30
40
50
0 2 4 6 8 10
k
N
Figure 2.3 Number of Module Interface Checks, N, vs. Modules Modified, k
The size of both the software understanding penalty and the module
interface-checking penalty can be reduced by good software structuring.
Modular, hierarchical structuring can reduce the number of interfaces which need
checking [Gerlich and Denskat 1994], and software which is well structured,
explained, and related to its mission will be easier to understand. COCOMO II
reflects this in its allocation of estimated effort for modifying reusable software.
2.2.4.2 A Reuse Model
The COCOMO II treatment of software reuse uses a nonlinear estimation
model, Equation 2-4. This involves estimating the amount of software to be
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 19 -
adapted and three degree-of-modification factors: the percentage of design
modified (DM), the percentage of code modified (CM), and the percentage of
integration effort required for integrating the adapted or reused software (IM).
These three factors use the same linear model as used in COCOMO 81, but
COCOMO II adds some nonlinear increments to the relation of Adapted KSLOC
of Equivalent KSLOC used to estimate effort. These are explained next.
( ) ( ) ( )
AAMKSLOC Adapted KSLOC Equivalent
50AAFfor , 100
UNFM)](SUAAF[AA
50AAFfor , 100
UNFM))]SU0.02(AAF(1[AA
AAM
IM0.3CM0.3DM0.4AAF
⋅=
⎪ ⎪ ⎩
⎪⎪ ⎨
⎧
> ×++
≤ ××++
=
×+×+×=
Eqn. 2.4
The Software Understanding increment (SU) is obtained from Table 2.5.
SU is expressed quantitatively as a percentage. If the software is rated very high
on structure, applications clarity, and self-descriptiveness, the software
understanding and interface-checking penalty is 10%. If the software is rated
very low on these factors, the penalty is 50%. SU is determined by taking the
subjective average of the three categories.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 20 -
Table 2.5 Rating Scale for Software Understanding Increment SU
Very Low Low Nominal High Very High
Structure
Very low cohesion, high coupling, spaghetti code.
Moderately low cohesion, high coupling.
Reasonably well-structured; some weak areas.
High cohesion, low coupling.
Strong modularity, information hiding in data / control structures.
Application
Clarity
No match between program and application world-views.
Some correlation between program and application.
Moderate correlation between program and application.
Good correlation between program and application.
Clear match between program and application world-views.
Self- Descriptive-
ness
Obscure code; documentation missing, obscure or obsolete
Some code commentary and headers; some useful documentation.
Moderate level of code commentary, headers, documentation.
Good code commentary and headers; useful documentation; some weak areas.
Self- descriptive code; documentation up-to-date, well- organized, with design rationale.
SU Increment to ESLOC
50
40
30
20
10
The other nonlinear reuse increment deals with the degree of Assessment
and Assimilation (AA) needed to determine whether a reused software module is
appropriate to the application, and to integrate its description into the overall
product description. Table 2.6 provides the rating scale and values for the
assessment and assimilation increment. AA is a percentage.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 21 -
Table 2.6 Rating Scale for Assessment and Assimilation Increment (AA)
AA Increment Level of AA Effort
0 None 2 Basic module search and documentation 4 Some module Test and Evaluation (T&E), documentation 6 Considerable module T&E, documentation 8 Extensive module T&E, documentation
The amount of effort required to modify existing software is a function not
only of the amount of modification (AAF) and understandability of the existing
software (SU), but also of the programmer’s relative unfamiliarity with the
software (UNFM). The UNFM factor is applied multiplicatively to the software
understanding effort increment. If the programmer works with the software every
day, the 0.0 multiplier for UNFM will add no software understanding increment.
If the programmer has never seen the software before, the 1.0 multiplier will add
the full software understanding effort increment. The rating of UNFM is in Table
2.7.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 22 -
Table 2.7 Rating Scale for Programmer Unfamiliarity (UNFM)
UNFM Increment Level of Unfamiliarity
0.0 Completely familiar 0.2 Mostly familiar 0.4 Somewhat familiar 0.6 Considerably familiar 0.8 Mostly unfamiliar 1.0 Completely unfamiliar
Equation 2.4 is used to determine an equivalent number of new lines of
code. The calculation of equivalent SLOC is based on the product size being
adapted and a modifier that accounts for the effort involved in fitting adapted
code into an existing product, called Adaptation Adjustment Modifier (AAM).
AAM uses the factors discussed above, Software Understanding (SU),
Programmer Unfamiliarity (UNFM), and Assessment and Assimilation (AA) with
a factor called the Adaptation Adjustment Factor (AAF). AAF contains the
quantities DM, CM, and IM where:
• DM (Percent Design Modified) is the percentage of the adapted
software’s design which is modified in order to adapt it to the new
objectives and environment. (This is necessarily a subjective
quantity.)
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 23 -
• CM (Percent Code Modified) is the percentage of the adapted
software’s code which is modified in order to adapt it to the new
objectives and environment.
• IM (Percent of Integration Required for Adapted Software) is the
percentage of effort required to integrate the adapted software into an
overall product and to test the resulting product as compared to the
normal amount of integration and test effort for software of
comparable size.
If there is no DM or CM (the component is being used unmodified) then
there is no need for SU. If the code is being modified then SU applies.
The range of AAM is shown in Figure 2.2. Under the worst case, it can
take twice the effort to modify a reused module than developing it as new (the
value of AAM can exceed 100). The best case follows a one for one
correspondence between adapting an existing product and developing it from
scratch.
2.2.4.3 Guidelines for Quantifying Adapted Software
This section provides guidelines to estimate adapted software factors for
different categories of code using COCOMO II. The New category refers to
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 24 -
software developed from scratch. Adapted code is pre-existing code that has
some changes to it, while reused code has no changes to the pre-existing source
(used as-is). COTS is off-the-shelf software that is generally treated the same as
reused code when there are no changes to it. One difference is that there may be
some new glue code associated with it that also needs to be counted (this may
happen with reused software, but here the option of modifying the source code
may make adapting the software more attractive).
Since there is no source modified in reused and COTS, DM=0, CM=0, and
SU and UNFM don’t apply. AA and IM can have non-zero values in this case.
Reuse doesn’t mean free integration and test. However in the reuse approach,
with well-architected product-lines, the integration and test is minimal.
For adapted software, CM > 0, DM is usually > 0, and all other reuse
factors can have non-zero values. IM is expected to be at least moderate for
adapted software, but can be higher than 100% for adaptation into more complex
applications. Table 2.8 shows the valid ranges of reuse factors with additional
notes for the different categories.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 25 -
Table 2.8 Adapted Software Parameter Constraints and Guidelines Code Category
Reuse Parameters DM CM IM AA SU UNFM
New - all original software
not applicable
Adapted - changes to pre- existing software
0% - 100% normally > 0%
0+% - 100% usually > DM and
must be > 0%
0% - 100+% IM usually
moderate and can be > 100%
0% – 8%
0% - 50%
0 - 1
Reused - unchanged existing software
0%
0%
0% - 100% rarely 0%, but could be very
small
0% – 8%
not applicable
COTS - off-the-shelf software (often requires new glue code as a wrapper around the COTS)
0%
0%
0% - 100%
0% – 8%
not applicable
2.2.5 Requirements Evolution and Volatility (REVL)
COCOMO II uses a factor called REVL, to adjust the effective size of the
product due to requirements evolution and volatility due to such factors as
mission or user interface evolution, technology upgrades, or COTS volatility. It is
the percentage of code discarded due to requirements evolution. For example, a
project which delivers 100,000 instructions but discards the equivalent of an
additional 20,000 instructions has an REVL value of 20. This would be used to
adjust the project’s effective size to 120,000 instructions for a COCOMO II
estimation.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 26 -
The use of REVL for computing size in given in Equation 2.5.
DSize100 REVL1Size ⋅⎟
⎠ ⎞
⎜ ⎝ ⎛ += Eqn. 2.5
where
SizeD is the reuse-equivalent of the delivered software.
2.2.6 Automatically Translated Code
The COCOMO II reuse model needs additional refinement to estimate the
costs of software re-engineering and conversion. The major difference in re-
engineering and conversion is the efficiency of automated tools for software
restructuring. These can lead to very high values for the percentage of code
modified (CM in the COCOMO II reuse model), but with very little
corresponding effort. For example, in the NIST re-engineering case study [Ruhl
and Gunn 1991], 80% of the code (13,131 COBOL source statements) was re-
engineered by automatic translation, and the actual re-engineering effort, 35
person months, was more than a factor of 4 lower than the COCOMO estimate of
152 person months.
The COCOMO II re-engineering and conversion estimation approach
involves estimation of an additional factor, AT, the percentage of the code that is
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 27 -
re-engineered by automatic translation. Based on an analysis of the project data
above, the productivity for automated translation is 2400 source statements /
person month. This value could vary with different technologies and is
designated in the COCOMO II model as another factor called ATPROD. In the
NIST case study ATPROD = 2400. Equation 2.6 shows how automated
translation affects the estimated effort, PMAuto.
( ) ATPROD
100 ATSLOC Adapted
PMAuto ×
= Eqn. 2.6
The NIST case study also provides useful guidance on estimating the AT
factor, which is a strong function of the difference between the boundary
conditions (e.g., use of COTS packages, change from batch to interactive
operation) of the old code and the re-engineered code. The NIST data on
percentage of automated translation (from an original batch processing
application without COTS utilities) are given in Table 2.9 [Ruhl and Gunn 1991].
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 28 -
Table 2.9 Variation in Percentage of Automated Re-engineering
Re-engineering Target AT (% automated translation)
Batch processing 96% Batch with SORT 90% Batch with DBMS 88%
Batch, SORT, DBMS 82% Interactive 50%
Automated translation is considered to be a separate activity from
development. Thus, its Adapted SLOC are not included as Size in Equivalent
KSLOC, and its PMAUTO are not included in PMNS in estimating the project’s
schedule.
2.2.7 Sizing Software Maintenance
COCOMO II differs from COCOMO 81 in applying the scale drivers to
the size of the modified code rather that to the size of the product being modified.
Applying the scale drivers to a 10 million SLOC product produced overlarge
estimates as most of the product was not being touched by the changes.
COCOMO II accounts for the effects of the product being modified via its
software understanding and unfamiliarity factors discussed for reuse in Section
2.2.4.2.
The scope of “software maintenance” follows the COCOMO 81
guidelines in [Boehm, 1981, pp.534-536]. It includes adding new capabilities and
fixing or adapting existing capabilities. It excludes major product rebuilds
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 29 -
changing over 50% of the existing software, and development of sizable (over
20%) interfacing systems requiring little rework of the existing system.
The maintenance size is normally obtained via Equation 2.7, when the
base code size is known and the percentage of change to the base code is known.
[ MAFMCFSize) Code (Base(Size)M ]××= Eqn. 2.7
The Maintenance Adjustment Factor (MAF) is discussed below. But first,
the percentage of change to the base code is called the Maintenance Change
Factor (MCF). The MCF is similar to the Annual Change Traffic in COCOMO
81, except that maintenance periods other than a year can be used. Conceptually
the MCF represents the ratio in Equation 2.8:
SizeCode Base Modified Size Added SizeMCF += Eqn. 2.8
A simpler version can be used when the fraction of code added or
modified to the existing base code during the maintenance period is known.
Deleted code is not counted.
MAFModified) Size Added (Size(Size)M ×+= Eqn. 2.9
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 30 -
The size can refer to thousands of source lines of code (KSLOC), Function
Points, or Object Points. When using Function Points or Object Points, it is better
to estimate MCF in terms of the fraction of the overall application being changed,
rather than the fraction of inputs, outputs, screens, reports, etc. touched by the
changes. Our experience indicates that counting the items touched can lead to
significant over estimates, as relatively small changes can touch a relatively large
number of items. In some very large COBOL programs, we found ratios of 2 to 3
FP-touched/SLOC-changed as compared to 91 FP/SLOC for development.
The Maintenance Adjustment Factor (MAF), Equation 2.10, is used to
adjust the effective maintenance size to account for software understanding and
unfamiliarity effects, as with reuse. COCOMO II uses the Software
Understanding (SU) and Programmer Unfamiliarity (UNFM) factors from its
reuse model (discussed in Section 2.2.4.2) to model the effects of well or poorly
structured/understandable software on maintenance effort.
⎟ ⎠ ⎞
⎜ ⎝ ⎛ ×+= UNFM 100 SU1MAF Eqn. 2.10
The use of (Size)M in determining maintenance effort, Equation 2.9, is
discussed in Section 2.5.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 31 -
2.3 Effort Estimation
In COCOMO II effort is expressed as Person-Months (PM). A person
month is the amount of time one person spends working on the software
development project for one month. COCOMO II treats the number of person-
hours per person-month, PH/PM, as an adjustable factor with a nominal value of
152 hours per Person-Month. This number excludes time typically devoted to
holidays, vacations, and weekend time off. The number of person-months is
different from the time it will take the project to complete; this is called the
development schedule or Time to Develop, TDEV. For example, a project may
be estimated to require 50 PM of effort but have a schedule of 11 months. If you
use a different value of PH/PM--say, 160 instead of 152--COCOMO II adjusts
the PM estimate accordingly (in this case, reducing by about 5%). This reduced
PM will result in a smaller estimate of development schedule.
The COCOMO II effort estimation model was introduced in Equation 2.1,
and is summarized in Equation 2.11. This model form is used for both the Early
Design and Post-Architecture cost estimation models. The inputs are the Size of
software development, a constant, A, an exponent, E, and a number of values
called effort multipliers (EM). The number of effort multipliers depends on the
model.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 32 -
II.2000) COCOMO(for 2.94A where
EM(Size)APM n
1i i
E
=
××= ∏ = Eqn. 2.11
The exponent E is explained in detail in Section 2.3.1. The effort
multipliers are explained in Section 2.3.2. The constant, A, approximates a
productivity constant in (Person Months) / (thousands of lines of source code) for
the case where E = 1.0. Productivity changes as E increases due to the non-linear
effects on Size. The constant A is initially set when the model is calibrated to the
project database reflecting a global productivity average. The COCOMO model
should be calibrated to local data which then reflects the local productivity and
improves the model's accuracy. Chapter 4 discusses how to calibrate the model.
The Size is in units of thousands of source lines of code (KSLOC). This is
derived from estimating the size of software modules that will constitute the
application program. It can also be estimated from unadjusted function points
(UFP), converted to SLOC, then divided by one thousand. Procedures for
counting SLOC or UFP were explained in Section 2.2, including adjustments for
reuse, requirements evolution, and automatically translated code.
Cost drivers are used to capture characteristics of the software
development that affect the effort to complete the project. A cost driver is a
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 33 -
model factor that "drives" the cost (in this case Person Months) estimated by the
model. All COCOMO II cost drivers have qualitative rating levels that expres
the impact of the driver on development effort. These ratings can range from
Extra Low to Extra High. Each rating level of each cost driver has a value, called
an effort multiplier (EM), associated with it. This scheme translates a cost dri
qualitative rating into a quantitative one for use in the model. The EM value
assigned to a cost driver's nominal rating is 1.00. If a cost driver's rating level
causes more software development effort, then its corresponding EM is above 1.0.
Conversel
s
ver's
y, if the rating level reduces the effort then the corresponding EM is less
than 1.0
uld
here are 7
Archite
.
This ex
e
.
The rating of cost drivers is based on a strong rationale that they wo
independently explain a significant source of project effort or productivity
variation. The difference between the Early Design and Post-Architecture models
are the number of cost drivers and the areas of influence they explain. T
cost drivers for the Early Design model and 17 cost drivers for the Post-
cture model. Each set is explained with its model later in the chapter.
It turns out that the most significant input to the COCOMO II model is
Size. Size is treated as a special cost driver in that it has an exponential factor, E
ponent is an aggregation of five scale drivers. These are discussed next.
What is not apparent in the model definition form given in Equation 2.11
is that there are some model drivers that apply only to the project as a whole. Th
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 34 -
scale drivers in the exponent, E, are only used at the project level. Addition
one of the cost drivers that is in the product of effort multipliers, Required
Development Schedule (SCED) is only used at the project level. The other cos
drivers, which are all represented in the product of effort multipliers, and size
apply to individual project components. The model can be used to estimate eff
for a project that has only one component or multiple components. For multi-
component pro
ally,
t
ort
jects the project-level cost drivers apply to all components, see
ection 2.2.3.
.3.1 Scale Drivers
t is
r
standards
and adm
S
2
The exponent E in Equation 2.11 is an aggregation of five scale drivers
that account for the relative economies or diseconomies of scale encountered for
software projects of different sizes [Banker et al 1994a]. If E < 1.0, the project
exhibits economies of scale. If the product's size is doubled, the project effor
less than doubled. The project's productivity increases as the product size is
increased. Some project economies of scale can be achieved via project-specific
tools (e.g., simulations, testbeds) but in general these are difficult to achieve. Fo
small projects, fixed start-up costs such as tool tailoring and setup of
inistrative reports are often a source of economies of scale.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 35 -
If E = 1.0, the economies and diseconomies of scale are in balance. This
linear model is often used for cost estimation of small projects.
If E > 1.0, the project exhibits diseconomies of scale. This is generally
due to two main factors: growth of interpersonal communications overhead
growth of large-system integration overhead. Larger projects will have more
personnel, and thus more interpersonal communications paths consuming
overhead. Integrating a small product as part of a larger product requires no
the effort
and
t only
to develop the small product, but also the additional overhead effort to
design,
ee [Banker et al 1994a] for a further discussion of software economies
and diseconomies of scale.
maintain, integrate, and test its interfaces with the remainder of the
product.
S
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 36 -
Figure 2.4 Diseconomies of Scale Effect on Effort
quation 2.12 defines the exponent, E, used in Equation 2.11. Table 2.10
provides the rating levels for the COCOMO II scale drivers. The selection of
scale drivers is based on the rationale that they
exponential variation on a project’s effort or productivity variation. Each scale
Very Low to Extra High. Each rating
level ha
t c
0
2000
6000
8000
12000
14000
KSLOC
P er
so n
M hs
4000
10000
16000
0 500 1000
on t
B=1.226
B=0.91
B=1.00
E
are a significant source of
driver has a range of rating levels, from
s a weight. The specific value of the weight is called a scale factor (SF).
The project's scale factors, the selected scale driver ratings, are summed and used
to determine a scale exponent, E, via equation 2.12. The B term in the equation is
a constant tha an be calibrated. Calibration is discussed in Chapter 4.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 37 -
II.2000) COCOMO(for 0.91B where
SF0.01BE 5
1j= Eqn. 2.12 j
=
×+= ∑
For example, scale drivers in COCOMO II with an Extra High rating are
ach assigned a scale factor weight of (0). Thus, a 100 KSLOC project with Extra
High ratings for all scale drivers will have ΣSFj = 0, E = 0.91, and a relative effort
of 2 94(1 0.91 94 Pe onths. F COM 0 c on of
scale factors in Table 2.10, a project with Very Low ratings for all scale drivers
will have ΣS , E = 1 a rela t of 1.226
Person Months. This represents a large varia but the increase invo in a
one-unit change in one of the factors is only about 6%. For very large (1,000
) p e eff ale uc s r
2
e
. 00) = 1 rson M or the CO O II.200 alibrati
Fj=31.6 .226, and tive effor 2.94(100) = 832
tion, lved
KSLOC roducts, th ect of the sc factors is m h larger, as een in Figu e
.4.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 38 -
Table 2.10 Scale Drivers for COCOMO II Models
Scale rivers Very Low Low Nominal High
Very High Extra High D
PREC
thoroughly unprecedented
largely unprecedented
somewhat unprecedented
generally familiar
largely familiar
thoroughly familiar
SFj: 6.20 4.96 3.72 2.48 1.24 0.00 FLEX rigorous occasional some general some general
goals relaxation relaxation conformity conformity
SF : 5.07 4.05 3.04 2.03 1.01 0.00 j RESL little (20%) some (40%) often (60%) generally
(75%) mostly (90%)
full (100%)
SFj: 7.07 5.65 4.24 2.83 1.41 0.00 very difficult some difficult basically
cooperative interactions
largely cooperative
highly cooperative
seamless interactions TEAM interactions interactions
SFj: 5.48 4.38 3.29 2.19 1.10 0.00
PMA SW-CMM Level
Lower SW-CMM Level
1 U SW-CMM Level
2 SW-CMM SW-CMM
Level 4 SW-CMM
T 1 pper Level 3 Level 5
SFj: 7.80 6.24 4.68 3.12 1.56 0.00 or the estimated Process M l (EMPL) aturity Leve
le drivers ess and Flexibility largely capture the
ifferences between the Organic, Semidetached, and Embedded modes of the
Table 2.11 and Table 2.12 reorganize
oehm 1981; Table 6.3] to map its project features onto the Precedentedness and
Development Flexibility scales. These table can be used as a more in depth
explanation for the PREC and FLEX rating scales given in Table 2.10.
2.3.1.1 Precedentedness (PREC)
The two sca , Precedentedn
d
original COCOMO model [Boehm, 1981].
[B
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 39 -
If a product is similar to several previously developed projects, then the
igh.
dness Rating Levels
eature Very Low Nominal / High Extra High
precedentedness is h
Table 2.11 Precedente
F
Organizational understanding of product objectives
General Considerable Thorough
Experience in working with related software systems
Moderate Considerable Extensive
Concurrent de associated ne opera
Some velopment of w hardware and
tional procedures
Extensive Moderate
Need processing architectures, algori
Minimal for innovative data
thms
Considerable Some
2.3.1.2 Development Flexibility (FLEX)
Table 2.12 Development Flexibility Rating Levels
Fe xtra High ature Very Low Nominal / High E
Need for software confo estab
Basic rmance with pre- lished requirements
Full Considerable
Need for software confo interface specifications
Full Considerable Basic rmance with external
Comb above with p compl
Low ination of inflexibilities remium on early
etion
High Medium
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 40 -
The PREC and FLEX scale factors are largely intrinsic to a project and
uncontrollable. The next three factors identify management controllables by
hich projects can reduce diseconomies of scale by reducing sources of project
turbulence, entropy, and rework.
cture / Ris lution )
combines two of the scale drivers in Ada COCOMO, “Design
y Product Revi R)” a sk E by
oyce 1989; Figures 4 and 5]. Table 2.13 consolidates the
atings to fo a more c rehensive definition for the
SL rating levels. It also relates the rating level to the
ife Cycle A itecture ( ) milestone as well as to the wate
he RES g is th ective ed ave f the l
evels
w
2.3.1.3 Archite k Reso (RESL
This factor
Thoroughness b
PDR” [Boehm and R
Design ew (PD nd “Ri limination
Ada COCOMO r
COCOMO II RE
rm omp
MBASE/RUP L rch LCA rfall
PDR milestone. T
characteristics.
L ratin e subj weight rage o isted
Table 2.13 RESL Rating L
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 41 -
Charac Low
Very High
Extra High
teristic Very Low Nominal High
Risk M identifi establis resolvi LCA.
Mostly Fully anagement Plan es all critical risk items, hes milestones for
ng them by PDR or
None Little Some Generally
Sched internal mil PDR o Risk M
ostly Fully ule, budget, and estones through
r LCA compatible with anagement Plan.
None Little Some Generally M
Percent of de schedu establishing architecture, given g objecti
40 velopment le devoted to
eneral product ves.
5 10 17 25 33
Percen softwa to project.
40 60 80 100 120 t of required top re architects available
20
Tool su rt available for resolving risk items, develo archite
None Little Some Good Strong Full ppo
ping and verifying ctural specs.
Level of uncertainty in key architecture drivers: mission, user interface, COTS hardware, tech perform
Extreme Significant Considera ble
Some Little Very Little
, nology,
ance. Numbe items.
> 10 Criti
5-10 Crit
2-4 Critical 1 Critical > 5Non- C
< 5 Non- al
r and criticality of risk cal ical ritical Critic
2.3.1.4 Team Cohesion (TEA
eam Cohesion scale driver accounts for the sources of project
es in synchronizing the project’s
, maintainers, interfacers, others. These
ficulties may arise from differences in stakeholder objectives and cultures;
; and stakeholders' lack of experience and
M)
The T
turbulence and entropy due to difficulti
stakeholders: users, customers, developers
dif
difficulties in reconciling objectives
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 42 -
familiarity in operating as a team. Table 2.14 provides a detailed definition for
the ove
Characteristic
Very Low
Low
Nominal
High
Very High
Extra High
rall TEAM rating levels. The final rating is the subjective weighted
average of the listed characteristics.
Table 2.14 TEAM Rating Components
Consistency of stakeholder obje
Little Some Basic Considera Strong Full ctives and cultures ble
A s
bili takeholders to
accommod stakeholders’ o
ble trong Full ty, willingness of Little Some Basic Considera S
ate other bjectives
Experience of stake s i operating as a te
ittle Basic sidera
Extensive h am
older n None Little L Con ble
Stakeholder te to achieve share ommitments
tle Little Basic sidera
Extensive ambuilding vision andd
None Lit Con ble
c
Overall Ma
or
2.3.1.5 Process Maturity (PMAT)
turity Levels
The procedure for determining PMAT is organized around the Software
Engineering Institute’s Capability Maturity Model (CMM). The time period f
rating Process Maturity is the time the project starts. There are two ways of rating
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 43 -
Process Maturity. The first captures the result of an organized evaluation based
on the CMM.
Table 2.15 PMAT Ratings for Estimated Process Maturity Level (EPM
PMAT Rating Very Low - CM
L)
Maturity Level EPML M Level 1 (lower half) 0
Low - CMM Level 1 (upper half) 1 Nominal - CMM Level 2 2
High - CMM Level 3 3 Very High - CMM Level 4 4 Extra High - CMM Level 5 5
Key Process Area Questionnaire
The second is organized around the 18 Key Process Areas (KPAs) in the
SEI Capability Maturity Model [Paulk et al., 1993, 1993a]. The procedure for
determining PMAT is to decide the percentage of compliance for each of the
KPAs. If the project has undergone a recent CMM Assessment then the
percentage compliance for the overall KPA (based on KPA Key Practice
compliance assessment data) is used. If an assessment has not been done then the
levels of compliance to the KPA’s goals are used (with the Likert scale in Table
2.16) to set the level of compliance. The goal-based level of compliance is
determined by a judgement-based averaging across the goals for each Key
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 44 -
Process Area. See [Paulk et al., 1995] for more information on the KPA
efinitions, goals and activities.
Table 2.16 KPA Ra
A lm
o ys
1
Fr eq
ue n
2
A bo
ut H
al
O cc
a 4
R ar
el y
if Ev
er 5
D oe
s N
o pl
y6
D on
’t K
no w
7
d
ting Levels
Key Process Areas (KPA)
st A
lw a
tly
f3
si on
al ly
t A p
Requirements Management
ne for software engineering and management use.
ocated to software.
� � � � � � � • System requirements allocated to software are controlled to
establish a baseli • Software plans, products, and activities are kept consistent with the
system requirements all
Software Project Planning • Software estimates are documented for use in planning and tracking
the software project.
d groups and individuals agree to their commitments related
• Software project activities and commitments are planned and documented.
• Affecte to the software project.
�
�
�
�
�
�
�
Software Project Tracking and Oversight tracked against the software
actual
re commitments are agreed to by the affected
�
�
�
�
�
• Actual results and performances are plans
• Corrective actions are taken and managed to closure when results and performance deviate significantly from the software plans.
• Changes to softwa groups and individuals.
�
�
Software Subcontract Management • The prime contractor selects qualified software subcontractors. • The prome contractor and the subcontractor agree to their
h other. r and the subcontractor maintain ongoing
communications. The prime contractor tracks the subcontractor’s actual results and performance against its commitments.
�
�
�
�
�
� commitments to eac • The prome contracto
•
�
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 45 -
Table 2.16 (Cont'd)
Software Quality Assurance (SQA) • SQA activities are planned. • Adherence of software products and activities to the applicable
standards, procedures, and requirements is verified objectively. of• Affected groups and individuals are informed
ults. software quality
re
�
�
�
�
�
�
�
assurance activities and res • Noncompliance issues that cannot be resolved within the softwa
project are addressed by senior management.
Software Configuration Management (SCM) • SCM activites are planned. • Selected workproducts are ide •
ntified, controlled, and available.
�
�
�
�
� Changes to identified work products are controlled.
• Affected groups and individuals are informed of the status and content of software baselines.
� �
Organization Process Focus • Software process development and improvement activities are
coordinated across the organization. • The strengths and weaknesses of the software processes used are
s
�
�
�
�
� identified relative to a process standard.
• Organization-level process development and improvement activitie are planned.
�
�
Organization Process Definition • A standard software process for the organiation is developed and
maintained. • Information related to the use of the organization’s standard
�
�
�
�
�
software process by the software projects is collected, reviewed, and made available.
� �
Training Program • Training activities are planned.
Training for developing the skills and knowledge needed to perfo• rm software management and technical roles is provided.
• Individuals in the software engineering group and software-related groups receive the training necessary to perform their roles.
�
�
�
�
�
�
�
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 46 -
Table 2.16 (Cont'd)
Integrated Software Management • The project’s defined software process is a tailored version of the
organization’s standard software process. • The project is planned and managed according to the project’s
defined software process.
�
�
�
�
�
�
�
Software Product Engineering • The software engineering tasks are defined, integrated, and
consistently performed to produce the software • Software work products are kept consistent with each other.
�
�
�
�
�
�
�
Intergroup Coordination • The customer’s requirements are agreed to by all affected groups. • The commitments between the engineering groups are agreed to by
the affected groups. • The engineering groups identify, track, and resolve intergroup
issues.
�
�
�
�
�
�
�
Peer Reviews • Peer review activities are planned. • Defects in the software work products are identified and removed.
�
�
�
�
�
�
�
Quantitative Process Management • The quantitative process management activities are planned. • The process performance of the project’s defined software process
is controlled quantitatively. • The process capability of the organization’s standard software
process is known in quantitative terms.
�
�
�
�
�
�
�
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 47 -
Table 2.16 (Cont'd)
Software Quality Management • The project’s software quality management activities are planned. • Measurable goals of software product quality and their priorities are
defined. • Actual progress toward achieving the quality goals for the software
products is quantified and managed.
�
�
�
�
�
�
�
Defect Prevention • Defect prevention activities are planned. • Common causes of defects are sought out and identified. • Common causes of defects are priortized and systematically
eliminated.
�
�
�
�
�
�
�
Technology Change Management • Incorporation of technology changes are planned. • New technologies are evaluated to determine their effect on quality
and productivity. • Appropriate new technologies are transferred into normal practice
across the organization.
�
�
�
�
�
�
�
Process Change Management • Continuous process improvement is planned. • Participation in the organization’s software process improvement
activities is organization wide. • The organization’s standard software process and the project’s
defined software processes are improved continuously.
�
�
�
�
�
�
�
1. Check Almost Always when the goals are consistently achieved and are well established in standard operating procedures (over 90% of the time).
2. Check Frequently when the goals are achieved relatively often, but sometimes are omitted under difficult circumstances (about 60 to 90% of the time).
3. Check About Half when the goals are achieved about half of the time (about 40 to 60% of the time). 4. Check Occasionally when the goals are sometimes achieved, but less often (about 10 to 40% of the time). 5. Check Rarely If Ever when the goals are rarely if ever achieved (less than 10% of the time). 6. Check Does Not Apply when you have the required knowledge about your project or organization and the KPA, but you feel
the KPA does not apply to your circumstances. 7. Check Don’t Know when you are uncertain about how to respond for the KPA.
An equivalent process maturity level (EPML) is computed as five times
the average compliance level of all n rated KPAs for a single project (Does Not
Apply and Don’t Know are not counted which sometimes makes n less than 18).
After each KPA is rated the rating level is weighted (100% for Almost Always,
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 48 -
75% for Frequently, 50% for About Half, 25% for Occasionally, 1% for Rarely if
Ever). The EPML is calculated as in Equation 2-13.
n 1
100 KPA%
5EPML n
1i
i ×⎟ ⎠
⎞ ⎜ ⎝
⎛ ×= ∑
=
Eqn. 2.13
An EPML of 0 corresponds with a PMAT rating level of Very Low in the
rating scales of Table 2.10 and Table 2.15.
The COCOMO II project is tracking the progress of the recent CMM
Integration (CMM-I) activity to determine likely future revisions in the definition
of PMAT.
2.3.2 Effort Multipliers
2.3.2.1 Post-Architecture Cost Drivers
This model is the most detailed and it is intended to be used when a
software life cycle architecture has been developed. This model is used in the
development and maintenance of software products in the Application Generators,
System Integration, or Infrastructure sectors discussed in Chapter 1.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 49 -
The 17 Post-Architecture effort multipliers (EM) are used in the
COCOMO II model to adjust the nominal effort, Person-Months, to reflect the
software product under development, see Equation 2.11. Each cost driver is
defined below by a set of rating levels and a corresponding set of effort
multipliers. The Nominal level always has an effort multiplier of 1.00, which
does not change the estimated effort. Off-nominal ratings generally do change the
estimated effort. For example, a high rating of Required Software Reliability
(RELY) will add 10% to the estimated effort, as determined by the COCOMO
II.2000 data calibration. A Very High RELY rating will add 26%. It is possible
to assign intermediate rating levels and corresponding effort multipliers for your
project. For example, the USC COCOMO II software tool supports rating cost
drivers between the rating levels in quarter increments, e.g. Low+0.25,
Nominal+0.50, High+0.75, etc. Whenever an assessment of a cost driver is
halfway between quarter increments always round to the Nominal rating, e.g. if a
cost driver rating falls halfway between Low+0.5 and Low+0.75, then select
Low+0.75; or if a rating falls halfway between High+0.25 and High+0.5, then
select High+0.25. Normally, linear interpolation is used to determine
intermediate multiplier values, but nonlinear interpolation is more accurate for the
high end of the TIME and STOR cost drivers and the low end of SCED.
The COCOMO II model can be used to estimate effort and schedule for
the whole project or for a project that consists of multiple modules. The size and
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 50 -
cost driver ratings can be different for each module, with the exception of the
Required Development Schedule (SCED) cost driver and the scale drivers. The
unique handling of SCED is discussed in Section 2.3.2.1.4 and in 2.4.
2.3.2.1.1 Product Factors
Product factors account for variation in the effort required to develop
software due to characteristics of the product under development. A product that
is complex, has high reliability requirements, or works with a large database will
require more effort to complete. There are five product factors and complexity
has the strongest influence on estimated effort.
Required Software Reliability (RELY)
This is the measure of the extent to which the software must perform its
intended function over a period of time. If the effect of a software failure is only
slight inconvenience then RELY is very low. If a failure would risk human life
then RELY is very high.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 51 -
Table 2.17 RELY Cost Driver
RELY Descriptors:
slight inconven- ience
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 0.82 0.92 1.00 1.10 1.26 n/a
This cost driver can be influenced by the requirement to develop software for
reusability, see the description for RUSE.
Data Base Size (DATA)
This measure attempts to capture the effect large data requirements have
on product development. The rating is determined by calculating D/P, the ratio of
bytes in the database to SLOC in the program. The reason the size of the database
is important to consider is because of the effort required to generate the test data
that will be used to exercise the program. In other words, DATA is capturing the
effort needed to assemble the data required to complete test of the program
through IOC.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 52 -
Table 2.18 DATA Cost Driver
DATA* Descriptors
DB bytes/Pgm SLOC < 10
10 ≤ D/P < 100
100 ≤ D/P < 1000
D/P ≥ 1000
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers n/a 0.90 1.00 1.14 1.28 n/a * DATA is rated as Low if D/P is less than 10 and it is very high if it is greater than 1000. P is measured in
equivalent source lines of code (SLOC), which may involve function point or reuse conversions.
Product Complexity (CPLX)
Complexity is divided into five areas: control operations, computational
operations, device-dependent operations, data management operations, and user
interface management operations. Using Table 2.19 select the area or
combination of areas that characterize the product or the component of the
product you are rating. The complexity rating is the subjective weighted average
of the selected area ratings. Table 2.20 provides the COCOMO II.2000 CPLX
effort multipliers.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 53 -
Table 2.19 Component Complexity Ratings Levels
Control Operations
Computational Operations
Device- dependent Operations
Data Management Operations
User Interface Management Operations
Very Low
Straight-line code with a few non-nested structured programming operators: DOs, CASEs, IF- THEN-ELSEs. Simple module composition via procedure calls or simple scripts.
Evaluation of simple expressions: e.g., A=B+C*(D- E)
Simple read, write statements with simple formats.
Simple arrays in main memory. Simple COTS- DB queries, updates.
Simple input forms, report generators.
Low
Straightforward nesting of structured programming operators. Mostly simple predicates
Evaluation of moderate-level expressions: e.g., D=SQRT(B**2- 4.*A*C)
No cognizance needed of particular processor or I/O device characteristics. I/O done at GET/PUT level.
Single file subsetting with no data structure changes, no edits, no intermediate files. Moderately complex COTS- DB queries, updates.
Use of simple graphic user interface (GUI) builders.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 54 -
Table 2.19 Component Complexity Ratings Levels
Control Operations
Computational Operations
Device- dependent Operations
Data Management Operations
User Interface Management Operations
Nominal
Mostly simple nesting. Some intermodule control. Decision tables. Simple callbacks or message passing, including middleware- supported distributed processing
Use of standard math and statistical routines. Basic matrix/vector operations.
I/O processing includes device selection, status checking and error processing.
Multi-file input and single file output. Simple structural changes, simple edits. Complex COTS-DB queries, updates.
Simple use of widget set.
Table 2.19 (Cont'd)
Control Operations
Computational Operations
Device- dependent Operations
Data Management Operations
User Interface Management Operations
High
Highly nested structured programming operators with many compound predicates. Queue and stack control. Homogeneous, distributed processing. Single processor soft real-time control.
Basic numerical analysis: multivariate interpolation, ordinary differential equations. Basic truncation, round-off concerns.
Operations at physical I/O level (physical storage address translations; seeks, reads, etc.). Optimized I/O overlap.
Simple triggers activated by data stream contents. Complex data restructuring.
Widget set development and extension. Simple voice I/O, multimedia.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 55 -
Table 2.19 Component Complexity Ratings Levels
Control Operations
Computational Operations
Device- dependent Operations
Data Management Operations
User Interface Management Operations
Very High
Reentrant and recursive coding. Fixed- priority interrupt handling. Task synchronization, complex callbacks, heterogeneous distributed processing. Single- processor hard real-time control.
Difficult but structured numerical analysis: near- singular matrix equations, partial differential equations. Simple parallelization.
Routines for interrupt diagnosis, servicing, masking. Communication line handling. Performance- intensive embedded systems.
Distributed database coordination. Complex triggers. Search optimization.
Moderately complex 2D/3D, dynamic graphics, multimedia.
Extra High
Multiple resource scheduling with dynamically changing priorities. Microcode-level control. Distributed hard real-time control.
Difficult and unstructured numerical analysis: highly accurate analysis of noisy, stochastic data. Complex parallelization.
Device timing- dependent coding, micro- programmed operations. Performance- critical embedded systems.
Highly coupled, dynamic relational and object structures. Natural language data management.
Complex multimedia, virtual reality, natural language interface.
Table 2.20 CPLX Cost Driver
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 0.73 0.87 1.00 1.17 1.34 1.74
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 56 -
Developed for Reusability (RUSE)
This cost driver accounts for the additional effort needed to construct
components intended for reuse on the current or future projects. This effort is
consumed with creating more generic design of software, more elaborate
documentation, and more extensive testing to ensure components are ready for
use in other applications. “Across project” could apply to reuse across the
modules in a single financial applications project. “Across program” could apply
to reuse across multiple financial applications projects for a single organization.
“Across product line” could apply if the reuse is extended across multiple
organizations. “Across multiple product lines” could apply to reuse across
financial, sales, and marketing product lines.
Development for reusability imposes constraints on the project's RELY
and DOCU ratings. The RELY rating should be at most one level below the
RUSE rating. The DOCU rating should be at least Nominal for Nominal and
High RUSE ratings, and at least High for Very High and Extra High RUSE
ratings.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 57 -
Table 2.21 RUSE Cost Driver
RUSE Descriptors:
none across project
across program
across product line
across multiple product
lines Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers n/a 0.95 1.00 1.07 1.15 1.24
Documentation match to life cycle needs (DOCU)
Several software cost models have a cost driver for the level of required
documentation. In COCOMO II, the rating scale for the DOCU cost driver is
evaluated in terms of the suitability of the project’s documentation to its life cycle
needs. The rating scale goes from Very Low (many life cycle needs uncovered)
to Very High (very excessive for life cycle needs).
Attempting to save costs via Very Low or Low documentation levels will
generally incur extra costs during the maintenance portion of the life cycle. Poor
or missing documentation will increase the Software Understanding (SU)
increment discussed in Section 2.2.4.2.
Table 2.22 DOCU Cost Driver
DOCU Descriptors:
Many life cycle needs uncovered
Some life cycle needs uncovered.
Right-sized to life cycle needs
Excessive for life cycle needs
Very excessive for life cycle needs
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 0.81 0.91 1.00 1.11 1.23 n/a
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 58 -
This cost driver can be influenced by the developed for reusability cost factor, see
the description for RUSE.
2.3.2.1.2 Platform Factors
The platform refers to the target-machine complex of hardware and
infrastructure software (previously called the virtual machine). The factors have
been revised to reflect this as described in this section. Some additional platform
factors were considered, such as distribution, parallelism, embeddedness, and
real-time operations. These considerations have been accommodated by the
expansion of the Component Complexity rating levels in Table 2.19.
Execution Time Constraint (TIME)
This is a measure of the execution time constraint imposed upon a
software system. The rating is expressed in terms of the percentage of available
execution time expected to be used by the system or subsystem consuming the
execution time resource. The rating ranges from nominal, less than 50% of the
execution time resource used, to extra high, 95% of the execution time resource is
consumed.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 59 -
Table 2.23 TIME Cost Driver
TIME Descriptors:
≤ 50% use of available execution time
70% use of available execution time
85% use of available execution time
95% use of available execution time
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers n/a n/a 1.00 1.11 1.29 1.63
Main Storage Constraint (STOR)
This rating represents the degree of main storage constraint imposed on a
software system or subsystem. Given the remarkable increase in available
processor execution time and main storage, one can question whether these
constraint variables are still relevant. However, many applications continue to
expand to consume whatever resources are available---particularly with large and
growing COTS products---making these cost drivers still relevant. The rating
ranges from nominal (less than 50%), to extra high (95%).
Table 2.24 STOR Cost Driver
STOR Descriptors:
≤ 50% use of available storage
70% use of available storage
85% use of available storage
95% use of available storage
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers n/a n/a 1.00 1.05 1.17 1.46
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 60 -
Platform Volatility (PVOL)
“Platform” is used here to mean the complex of hardware and software
(OS, DBMS, etc.) the software product calls on to perform its tasks. If the
software to be developed is an operating system then the platform is the computer
hardware. If a database management system is to be developed then the platform
is the hardware and the operating system. If a network text browser is to be
developed then the platform is the network, computer hardware, the operating
system, and the distributed information repositories. The platform includes any
compilers or assemblers supporting the development of the software system. This
rating ranges from low, where there is a major change every 12 months, to very
high, where there is a major change every two weeks.
Table 2.25 PVOL Cost Driver
PVOL Descriptors:
Major change every 12 mo.; Minor change every 1 mo.
Major: 6 mo.; Minor: 2 wk.
Major: 2 mo.;Minor: 1 wk.
Major: 2 wk.;Minor: 2 days
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers n/a 0.87 1.00 1.15 1.30 n/a
2.3.2.1.3 Personnel Factors
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 61 -
After product size, people factors have the strongest influence in
determining the amount of effort required to develop a software product. The
Personnel Factors are for rating the development team’s capability and experience
– not the individual. These ratings are most likely to change during the course of
a project reflecting the gaining of experience or the rotation of people onto and off
the project.
Analyst Capability (ACAP)
Analysts are personnel that work on requirements, high level design and
detailed design. The major attributes that should be considered in this rating are
Analysis and Design ability, efficiency and thoroughness, and the ability to
communicate and cooperate. The rating should not consider the level of
experience of the analyst; that is rated with APEX, LTEX, and PLEX. Analyst
teams that fall in the 15th percentile are rated very low and those that fall in the
90th percentile are rated as very high.
Table 2.26 ACAP Cost Driver
ACAP Descriptors:
15th percentile
35th percentile
55th percentile
75th percentile
90th percentile
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.42 1.19 1.00 0.85 0.71 n/a
Programmer Capability (PCAP)
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 62 -
Current trends continue to emphasize the importance of highly capable
analysts. However the increasing role of complex COTS packages, and the
significant productivity leverage associated with programmers’ ability to deal
with these COTS packages, indicates a trend toward higher importance of
programmer capability as well.
Evaluation should be based on the capability of the programmers as a team
rather than as individuals. Major factors which should be considered in the rating
are ability, efficiency and thoroughness, and the ability to communicate and
cooperate. The experience of the programmer should not be considered here; it is
rated with APEX, LTEX, and PLEX. A very low rated programmer team is in the
15th percentile and a very high rated programmer team is in the 90th percentile.
Table 2.27 PCAP Cost Driver
PCAP Descriptors
15th percentile
35th percentile
55th percentile
75th percentile
90th percentile
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.34 1.15 1.00 0.88 0.76 n/a
Personnel Continuity (PCON)
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 63 -
The rating scale for PCON is in terms of the project’s annual personnel
turnover: from 3%, very high continuity, to 48%, very low continuity.
Table 2.28 PCON Cost Driver
PCON Descriptors: 48% / year 24% / year 12% / year 6% / year 3% / year Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.29 1.12 1.00 0.90 0.81
Applications Experience (APEX)
The rating for this cost driver (formerly labeled AEXP) is dependent on
the level of applications experience of the project team developing the software
system or subsystem. The ratings are defined in terms of the project team’s
equivalent level of experience with this type of application. A very low rating is
for application experience of less than 2 months. A very high rating is for
experience of 6 years or more.
Table 2.29 APEX Cost Driver
APEX Descriptors: ≤ 2 months 6 months 1 year 3 years 6 years Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.22 1.10 1.00 0.88 0.81 n/a
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 64 -
Language and Tool Experience (LTEX)
This is a measure of the level of programming language and software tool
experience of the project team developing the software system or subsystem.
Software development includes the use of tools that perform requirements and
design representation and analysis, configuration management, document
extraction, library management, program style and formatting, consistency
checking, planning and control, etc. In addition to experience in the project’s
programming language, experience on the project’s supporting tool set also
affects development effort. A low rating is given for experience of less than 2
months. A very high rating is given for experience of 6 or more years.
Table 2.30 LTEX Cost Driver
LTEX Descriptors: ≤ 2 months 6 months 1 year 3 years 6 year Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.20 1.09 1.00 0.91 0.84
Platform Experience (PLEX)
The Post-Architecture model broadens the productivity influence of
platform experience, PLEX (formerly labeled PEXP), by recognizing the
importance of understanding the use of more powerful platforms, including more
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 65 -
graphic user interface, database, networking, and distributed middleware
capabilities.
Table 2.31 PLEX Cost Driver
PLEX Descriptors: ≤ 2 months 6 months 1 year 3 years 6 year Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.19 1.09 1.00 0.91 0.85 n/a
2.3.2.1.4 Project Factors
Project factors account for influences on the estimated effort due to use of
modern software tools, location of the development team, and compression of the
project schedule.
Use of Software Tools (TOOL)
Software tools have improved significantly since the 1970’s projects used
to calibrate the 1981 version of COCOMO. The tool rating ranges from simple
edit and code, very low, to integrated life cycle management tools, very high. A
Nominal TOOL rating in COCOMO 81 is equivalent to a Very Low TOOL rating
in COCOMO II. An emerging extension of COCOMO II is in the process of
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 66 -
elaborating the TOOL rating scale and breaking out the effects of TOOL
capability, maturity, and integration.
Table 2.32 TOOL Cost Driver
TOOL Descriptors
edit, code, debug
simple, frontend, backend CASE, little integration
basic life cycle tools, moderately integrated
strong, mature life cycle tools, moderately integrated
strong, mature, proactive life cycle tools, well integrated with processes, methods, reuse
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.17 1.09 1.00 0.90 0.78 n/a
Multisite Development (SITE)
Given the increasing frequency of multisite developments, and indications
that multisite development effects are significant, the SITE cost driver has been
added in COCOMO II. Determining its cost driver rating involves the assessment
and judgement-based averaging of two factors: site collocation (from fully
collocated to international distribution) and communication support (from surface
mail and some phone access to full interactive multimedia).
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 67 -
For example, if a team is fully collocated, it doesn't need interactive
multimedia to achieve an Extra High rating. Narrowband e-mail would usually be
sufficient.
Table 2.33 SITE Cost Driver
SITE: Collocation Descriptors:
Inter- national
Multi-city and Multi- company
Multi-city or Multi- company
Same city or metro. area
Same building or complex
Fully collocated
SITE: Communications Descriptors:
Some phone, mail
Individual phone, FAX
Narrow band email
Wideband electronic communicat ion.
Wideband elect. comm., occasional video conf.
Interactive multimedia
Rating Levels Very Low Low Nominal High Very High Extra High Effort Multipliers 1.22 1.09 1.00 0.93 0.86 0.80
Required Development Schedule (SCED)
This rating measures the schedule constraint imposed on the project team
developing the software. The ratings are defined in terms of the percentage of
schedule stretch-out or acceleration with respect to a nominal schedule for a
project requiring a given amount of effort. Accelerated schedules tend to produce
more effort in the earlier phases to eliminate risks and refine the architecture,
more effort in the later phases to accomplish more testing and documentation in
parallel. A schedule compression of 75% is rated very low. A schedule stretch-
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 68 -
out of 160% is rated very high. Stretch-outs do not add or decrease effort. Their
savings due to smaller team size are generally balanced by the need to carry
project administrative functions over a longer period of time. The nature of this
balance is undergoing further research in concert with our emerging CORADMO
extension to address rapid application development (see Chapter 5).
SCED is the only cost driver that is used to describe the effect of schedule
compression / expansion for the whole project. The scale drivers are also used to
describe the whole project. All of the other cost drivers are used to describe each
module in a multiple module project. Using the COCOMO II Post-Architecture
model for multiple module estimation is explained in Section 2.3.3.
Table 2.34 SCED Cost Driver
SCED
Descriptors 75%
of nominal 85%
of nominal 100%
of nominal 130%
of nominal 160%
of nominal
Rating Level Very Low Low Nominal High Very High Extra High Effort Multiplier 1.43 1.14 1.00 1.00 1.00 n/a
SCED is also handled differently in the COCOMO II estimation of time to
develop, TDEV. This special use of SCED is explained in Section 2.4.
2.3.2.2 Early Design Model Drivers
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 69 -
This model is used in the early stages of a software project when very little
may be known about the size of the product to be developed, the nature of the
target platform, the nature of the personnel to be involved in the project, or the
detailed specifics of the process to be used. This model could be employed in
either Application Generator, System Integration, or Infrastructure development
sectors. For discussion of these marketplace sectors see Chapter 1.
The Early Design model uses KSLOC or unadjusted function points (UFP)
for size. UFPs are converted to the equivalent SLOC and then to KSLOC as
discussed in Section 2.2.3. The application of project scale drivers is the same for
Early Design and the Post-Architecture models and was described in Section
2.3.1. In the Early Design model a reduced set of cost drivers is used as shown in
Table 2.35. The Early Design cost drivers are obtained by combining the Post-
Architecture model cost drivers. Whenever an assessment of a cost driver is
halfway between the rating levels always round to the Nominal rating, e.g. if a
cost driver rating is halfway between Very Low and Low, then select Low. The
effort equation is the same as given in Equation 2-9 except that the number of
effort multipliers is 7 (n = 7).
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 70 -
Table 2.35 Early Design and Post-Architecture Effort Multipliers
Early Design Cost Driver Counterpart Combined Post-Architecture Cost Drivers
RCPX RELY, DATA, CPLX, DOCU RUSE RUSE PDIF TIME, STOR, PVOL PERS ACAP, PCAP, PCON PREX APEX, PLEX, LTEX FCIL TOOL, SITE
SCED SCED
Overall Approach: Personnel Capability (PERS) Example
The following approach is used for mapping the full set of Post-
Architecture cost drivers and rating scales onto their Early Design model
counterparts. It involves the use and combination of numerical equivalents of the
rating levels. Specifically, a Very Low Post-Architecture cost driver rating
corresponds to a numerical rating of 1, Low is 2, Nominal is 3, High is 4, Very
High is 5, and Extra High is 6. For the combined Early Design cost drivers, the
numerical values of the contributing Post-Architecture cost drivers are summed,
and the resulting totals are allocated to an expanded Early Design model rating
scale going from Extra Low to Extra High. The Early Design model rating scales
always have a Nominal total equal to the sum of the Nominal ratings of its
contributing Post-Architecture elements.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 71 -
Personnel Capability (PERS)
An example will illustrate this approach. The Early Design PERS cost
driver combines the Post-Architecture cost drivers Analyst capability (ACAP),
Programmer capability (PCAP), and Personnel continuity (PCON). Each of these
has a rating scale from Very Low (=1) to Very High (=5). Adding up their
numerical ratings produces values ranging from 3 to 15. These are laid out on a
scale, and the Early Design PERS rating levels assigned to them, as shown below.
The associated effort multipliers are derived from the ACAP, PCAP, and PCON
effort multipliers by averaging the products of each combination of effort
multipliers associated with the given Early Design rating level.
The effort multipliers for PERS and the other Early Design model cost
drivers are derived from those of the Post-Architecture model by averaging the
products of the constituent Post-Architecture multipliers (ACAP, PCAP, PCON)
for each combination of cost driver ratings corresponding with the Early Design
rating level. For PERS = Extra High, this would involve four combinations:
ACAP, PCAP, and PCON all Very High, or only one High and the other two
Very High.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 72 -
Table 2.36 PERS Cost Driver
PERS Descriptors: • Sum of ACAP, PCAP,
PCON Ratings 3, 4 5, 6 7, 8 9 10,
11 12, 13 14, 15
• Combined ACAP and PCAP Percentile
20% 35% 45% 55% 65% 75% 85%
• Annual Personnel Turnover 45% 30% 20% 12% 9% 6% 4% Rating Levels Extra
Low Very Low
Low
Nominal
High
Very High
Extra High
Effort Multipliers 2.12 1.62 1.26 1.00 0.83 0.63 0.50
The Nominal PERS rating of 9 corresponds to the sum (3 + 3 + 3) of the
Nominal ratings for ACAP, PCAP, and PCON, and its corresponding effort
multiplier is 1.0. Note, however that the Nominal PERS rating of 9 can result
from a number of other combinations, e.g. 1 + 3 + 5 = 9 for ACAP = Very Low,
PCAP = Nominal, and PCON = Very High.
The rating scales and effort multipliers for PCAP and the other Early
Design cost drivers maintain consistent relationships with their Post-Architecture
counterparts. For example, the PERS Extra Low rating levels (20% combined
ACAP and PCAP percentile; 45% personnel turnover) represent averages of the
ACAP, PCAP, and PCON rating levels adding up to 3 or 4.
Maintaining these consistency relationships between the Early Design and
Post-Architecture rating levels ensures consistency of Early Design and Post-
Architecture cost estimates. It also enables the rating scales for the individual
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 73 -
Post-Architecture cost drivers, Table 2.35, to be used as detailed backups for the
top-level Early Design rating scales given above.
Product Reliability and Complexity (RCPX)
This Early Design cost driver combines the four Post-Architecture cost
drivers Required software reliability (RELY), Database size (DATA), Product
complexity (CPLX), and Documentation match to life cycle needs (DOCU).
Unlike the PERS components, the RCPX components have rating scales with
differing width. RELY and DOCU range from Very Low to Very High; DATA
ranges from Low to Very High, and CPLX ranges from Very Low to Extra High.
The numerical sum of their ratings thus ranges from 5 (VL, L, VL, VL) to 21
(VH, VH, EH, VH).
Table 2.37 assigns RCPX ratings across this range, and associates
appropriate rating scales to each of the RCPX ratings from Extra Low to Extra
High. As with PERS, the Post-Architecture RELY, DATA CPLX, and DOCU
rating scales discussed in Section 2.3.2.1.1 provide detailed backup for
interpreting the Early Design RCPX rating levels.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 74 -
Table 2.37 RCPX Cost Driver
RCPX Descriptors: • Sum of RELY, DATA,
CPLX, DOCU Ratings 5, 6 7, 8 9 - 11 12 13 - 15 16 - 18 19 - 21
• Emphasis on reliability, documentation
Very Little
Little Some Basic Strong Very Strong
Extreme
• Product complexity Very simple
Simple Some Moderate Complex Very complex
Extremely complex
• Database size Small Small Small Moderate Large Very Large
Very Large
Rating Levels Extra Low
Very Low
Low
Nominal
High
Very High
Extra High
Effort Multipliers 0.49 0.60 0.83 1.00 1.33 1.91 2.72
Developed for Reusability (RUSE)
This Early Design model cost driver is the same as its Post-Architecture
counterpart, which is covered in Section 2.3.2.1.2.
Platform Difficulty (PDIF)
This Early Design cost driver combines the three Post-Architecture cost
drivers Execution time constraint (TIME), Main storage constraint (STOR), and
Platform volatility (PVOL). TIME and STOR range from Nominal to Extra High;
PVOL ranges from Low to Very High. The numerical sum of their ratings thus
ranges from 8 (N, N, L) to 17 (EH, EH, VH).
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 75 -
Table 2.38 assigns PDIF ratings across this range, and associates the
appropriate rating scales to each of the PDIF rating levels. The Post-Architecture
rating scales in Tables 2.23, 2.24, 2.25 provide additional backup definition for
the PDIF ratings levels.
Table 2.38 PDIF Cost Driver
PDIF Descriptors: • Sum of TIME, STOR, and
PVOL ratings 8 9 10 - 12 13 - 15 16, 17
• Time and storage constraint ≤ 50% ≤ 50% 65% 80% 90% • Platform volatility Very stable Stable Somewhat
volatile Volatile Highly
volatile Rating Levels Low Nominal High Very High Extra High Effort Multipliers 0.87 1.00 1.29 1.81 2.61
Personnel Experience (PREX)
This Early Design cost driver combines the three Post-Architecture cost
drivers Application experience (APEX), Language and tool experience (LTEX),
and Platform experience (PLEX). Each of these range from Very Low to Very
High; as with PERS, the numerical sum of their ratings ranges from 3 to 15.
Table 2.39 assigns PREX ratings across this range, and associates
appropriate effort multipliers and rating scales to each of the rating levels.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 76 -
Table 2.39 PREX Cost Driver
PREX Descriptors: • Sum of APEX, PLEX, and
LTEX ratings 3, 4 5, 6 7, 8 9 10, 11 12, 13 14, 15
• Applications, Platform, Language and Tool Experience
≤ 3 mo. 5 months
9 months
1 year 2 years
4 years 6 years
Rating Levels Extra Low
Very Low
Low
Nominal
High
Very High
Extra High
Effort Multipliers 1.59 1.33 1.22 1.00 0.87 0.74 0.62
Facilities (FCIL)
This Early Design cost driver combines two Post-Architecture cost
drivers: Use of software tools (TOOL) and Multisite development (SITE). TOOL
ranges from Very Low to Very High; SITE ranges from Very Low to Extra High.
Thus, the numerical sum of their ratings ranges from 2 (VL, VL) to 11 (VH, EH).
Table 2.40 assigns FCIL ratings across this range, and associates
appropriate rating scales to each of the FCIL rating levels. The individual Post-
Architecture TOOL and SITE rating scales in Section 2.3.2.1.4 again provide
additional backup definition for the FCIL rating levels.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 77 -
Table 2.40 FCIL Cost Driver
FCIL Descriptors:
• Sum of TOOL and SITE ratings
2
3
4, 5
6
7, 8
9, 10
11
• TOOL support
Minimal Some Simple CASE tool collection
Basic life cycle tools
Good; moderately integrated
Strong; moderately integrated
Strong; well integrated
• Multisite conditions
Weak support of complex multisite developme nt
Some support of complex M/S devel.
Some support of moderately complex M/S devel.
Basic support of moderately complex M/S devel.
Strong support of moderately complex M/S devel.
Strong support of simple M/S devel.
Very strong support of collocated or simple M/S devel.
Rating Levels
Extra Low
Very Low
Low
Nominal
High
Very High
Extra High
Effort Multipliers
1.43 1.30 1.10 1.0 0.87 0.73 0.62
Required Development Schedule (SCED)
This Early Design model cost driver is the same as its Post-Architecture
counterpart, which is covered in Section 2.3.2.1.4.
2.3.3 Multiple Module Effort Estimation
Usually software systems are comprised of multiple subsystems or
components. It is possible to use COCOMO II to estimate effort and schedule for
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 78 -
multiple components. The technique described here is for one level of sub-
components. For multiple levels of sub-components see (Boehm 81).
The COCOMO II method for doing this does not use the sum of the
estimates for each component as this would ignore effort due to integration of the
components. The COCOMO II multiple module method has the following steps:
1. Sum the sizes for all of the components to yield an aggregate size.
∑ =
= n
1i i)Component(Total SizeSize
2. Apply the project-level factors to the aggregated size to derive the nominal
effort for the total project. Don’t forget that the SCED effort multiplier is
applied at the total project-level.
SCED)(SizeAPM ETotalalTotalNomin ××=
3. Apportion the total nominal effort to each component based on its
contribution to the aggregate size.
⎟⎟ ⎠
⎞ ⎜⎜ ⎝
⎛ ×=
Total
i)Component( Nominal TotalNominal i)Component( Size
Size PMPM
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 79 -
4. For each component apply the component-level effort multipliers (excluding
SCED) to the effort apportioned to that component.
∑ =
×= 16
1j jNominal i)Component(i)Component( EMPMPM
5. Sum the effort estimations from all of the components to derive the
aggregate effort for the total project.
∑ =
= n
1i i)Component(Total PMPM
6. Using the total project effort, derive the schedule using Equation 2.14.
2.4 Schedule Estimation
The initial version of COCOMO II provides a simple schedule estimation
capability similar to those in COCOMO and Ada COCOMO. The initial baseline
schedule equation for the COCOMO II Early Design and Post-Architecture stages
is:
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 80 -
0.91B 0.28,D 3.67,C where 100
SCED%])(PM[CTDEV B))(E0.2(DNS
===
××= −×+ Eqn. 2.14
In equation 2.14, C is a TDEV coefficient that can be calibrated, PMNS is
the estimated person-months excluding the SCED effort multiplier as defined in
Equation 2.1, D is a TDEV scaling base-exponent that can also be calibrated, E is
the effort scaling exponent derived as the sum of project scale drivers and B as the
calibrated scale driver base-exponent (discussed in Sections 2.1.2 and 2.3.1), and
SCED% is the compression / expansion percentage in the SCED effort multiplier
rating scale discussed in Section 2.3.2.1.4.
Time to Develop, TDEV, is the calendar time in months between the
estimation endpoints defined in Figure A.1 of Appendix A. For the waterfall
model, this goes from the determination of a product’s requirements baseline to
the completion of an acceptance activity certifying that the product satisfies its
requirements. For the MBASE/RUP model discussed in Chapter 1, it covers the
time span between LCO and IOC milestones.
As COCOMO II evolves, it will have a more extensive schedule
estimation model, reflecting the different classes of process models a project can
use. The effects of reusable and COTS software; the effects of applications
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 81 -
composition capabilities; and the effects of alternative strategies such as Rapid
Application Development are discussed in Chapter 5.
2.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.2.7.
There are special considerations for using COCOMO II in software
maintenance. Some of these are adapted from [Boehm, 1981].
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 82 -
• 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. The table below shows
the effort multipliers for RELY:
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 83 -
Table 2.41 RELY Maintenance Cost Driver
RELY Descriptors:
slight inconvenien ce
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.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):
∏ =
⋅⋅= 15
1i
E MM EM)(SizeAPM i Eqn. 2.15
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 84 -
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 Eqn. 2.16
2.6 Using COCOMO II for Software Decisions
In Section 1.1, we presented a number of software decision situations for
which COCOMO II can provide help in reasoning about your options and
decisions. Now that we have described the COCOMO II framework and cost
driver values, we can use these to illustrate how you can use these for software
decision analyses, even without exercising the full model.
Our example organization is an auto-parts company named UST, Inc. It
has out-sourced or acquired commercial packages for many of its business
functions, but retains a software engineering staff of about 200 people to perform
corporate success-critical software functions.
2.6.1 Making Investment Decisions and Business-Case Analyses.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 85 -
UST is considering the development of a manufacturing control system
(MCS) to support just-in-time manufacturing in its primary factory. UST expects
that the reductions in inventory carrying costs (usually about 25% of the value of
the inventory per year) will justify the expenditure (mostly software) to develop
the MCS, but would like to do a return-on-investment (ROI) analysis to make
sure. The analysis will make conservative assumptions, both for simplicity and to
strengthen the conclusions.
Conservatively, UST estimates that the new system will reduce its current
average manufacturing inventory value of $80 M by 20%. The corresponding
savings in annual carrying costs (for investing control, property taxes, finances,
etc.) is ($80M)(20%)(25%) = $4M/year.
A similar simple, conservative COCOMO II software cost analysis
assumes that the MCS system will require 100 KSLOC of software, that all the
cost driver and scale driver ratings will be nominal, and that the burdened cost of
a UST software engineer is $8K per person-month. The nominal cost drivers are
all 1.0. The nominal scale factors in Table 2.10 lead to a scaling exponent E =
0.91+.01(3.72+3.04+4.24+3.29+4.68) = 1.10. The resulting estimated effort is E
= 2.94(100)1.10 = 466 person-months (PM). The corresponding estimated
development cost is (466)($8K) = $3.728M.
However, the development cost is not the full MCS project cost. For the
MBASE/RUP spiral model being used for the MCS project, Table 2.42 indicates
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 86 -
that an added 6% is needed for the project’s Inception phase, and an added 12% is
needed for the Transition phase. This extra 18% means that the estimated project
cost is (1.18)($3.728M) = $4.4M.
For software maintenance, the ratings are again assumed to be nominal,
and the annual amount of modified software, discussed in Section 2.2.7, is
estimated to be 20% or 20 KSLOC. The estimated annual cost of software
maintenance is 2.94(20)1.10($8K) = $635K; the net savings per year is thus $4M-
.635M = $3.365M. The annual return on investment is thus savings/project costs
or $3.365M/$4.4M = 76%. For 5 years of operation, the savings are 5•($3.365M)
= $16.8M, and the ROI (5 years) is 16.8/4.4 = about 380%.
This is sufficiently high to justify the investment, even though we have
not used a present-value analysis to reconcile present and future cash flows.
Techniques for such analyses and more complete business-case analyses can be
found in Chapters 14 and 31.8 of [Boehm, 1981].
2.6.2 Setting project budgets and schedules.
The development schedule for the MCS is estimated to be TDEV =
3.67(MCS-PM)(0.28+0.2(E-0.91)) = 3.67(466)0.318 = 26 months. As the MCS project
plans to use the MBASE/RUP spiral approach to development, we can use the
phase schedule and effort percentages in Section 2.5 to calculate the schedule and
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 87 -
effort within each phase. Once we have the estimated effort in person-months
(PM) and the schedule in months (Mo) for each phase, we can calculate the
average personnel level for each phase as P=PM/Mo. These calculations are done
in Table 2.42.
Thus, if the MCS project were truly all-nominal with respect to its cost
drivers and scale drivers, its manager should expect, for example, to employ an
average of 11.5 people during its Elaboration phase (between its Life Cycle
Objective and Life Cycle Architecture milestones as defined in Table A.1 of
Appendix A). The MCS manager should also plan for the Elaboration phase to
take 9.75 months and to cost $896k.
Table 2.42 MCS Project Phase Distributions
Effort Schedule Personnel Cost @ Phase % PM % Mo P $8K/PM Inception 6 28 12.5 3.25 8.6 $224K Elaboration Construction
24 76
112 354
37.5 62.5
9.75 16.25
11.5 21.8
$896K $2832K
Transition 12 56 12.5 3.25 17.2 $448K Devel. Total 100 466 100.0 26.00 17.9 $3728K Project Total 118 550 125 32.5 16.9 $4400K
2.6.3 Performing Tradeoff Analyses
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 88 -
The COCOMO II cost drivers and scale drivers can be used directly to
analyze their effects on a project’s cost and schedule. For example, we can use
the Required Reliability (RELY) effort multipliers for software development and
maintenance to analyze the effects of different RELY levels on software life cycle
costs of the MCS project. For projects such as MCS, a good planning factor is to
assume that life cycle maintenance costs will be about twice as high as the
original project costs for a Nominal level of RELY.
The resulting analysis is shown in Table 2.43. For development, it
appears that lower RELY levels can save money. But these lower RELY levels
cause more maintenance effort to be spent on debugging and error correction,
making their life cycle costs higher than the Nominal level of required reliability.
When the costs of operational failures are also included, the higher RELY levels
will turn out to be lower-cost for high cost-of-failure systems.
Table 2.43 Effects of Reliability Level on MCS Life Cycle Costs
RELY Rating Very Low Low Nominal High Very High
Development Effort Multiplier 0.82 0.92 1.0 1.10 1.26 Cost $3608K $4048K $4400K $4840K $5544K
Maintenance Effort Multiplier 1.35 1.15 1.0 0.98 1.10 Cost (x2 for Nom.) $11,880K $10,120K $8,800K $8,624K $9,680K
Life Cycle Cost $15,488K $14,168K $13,200K $13,464K $15,224K
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 89 -
2.6.4 Cost Risk Management
If there are uncertainties in key cost drivers, it can be a good idea to
establish a risk management reserve to cover the resulting possibilities of cost
growth [Edgar, 1982]. For example, suppose that there is some chance that new
developments will cause a 15% requirement evolution and volatility factor
(REVL) in the amount of software to be developed. From Equation 2.5, this
changes the effective size of the product to (1.15)(100KSLOC) = 115 KSLOC,
and the estimated cost to (2.94)(115)1.1 (1.18)($8K) = $5130K, an increase of
$730K over the original $4400K estimate. In such a case, the project’s financial
sponsor could establish a risk management reserve of $730K to cover any added
costs due to requirements evolution or volatility. Experience has shown that it is
best to provide performance incentives such as award fees to encourage
conserving as much as possible of the risk management reserve.
The project may have other common risks to assess. For example, the
project may not get all the experienced people it has asked for. Rather than
having overall Nominal ratings of Applications Experience (APEX) and Platform
Experience (PLEX), the project personnel may average halfway between Nominal
and Low for these cost drivers. Should this happen, the effort multipliers for
APEX (1.05) and PLEX (1.045) would be halfway between the Nominal and Low
values in Section 2.3.2.1.3. The resulting estimated cost would be
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 90 -
($4400K)(1.05)(1.045) = $4828K and the resulting potential overrun risk would
be $428K. Further risk assessment guidance can be found in [Boehm, 1989] or
[Hall, 1998].
2.6.5 Development vs. Reuse Decisions
Another way of dealing with cost-growth (or schedule-growth) risks is to
reduce the costs. Many of the COCOMO II cost drivers provide opportunities to
reduce costs; one of the most attractive is to reduce the effective product-
development size via software reuse or commercial-off-the-shelf (COTS)
products.
The COCOMO II reuse model, Section 2.2.4, includes a number of factors
which help you to reason about reuse decisions. In the context of the MCS
system, for example, suppose we find a 40 KSLOC component of a related
project which we might reuse. However, it will need a good deal of redesign and
recoding. It is also not well-structured or well-documented, and there are no
people available for its modification who are familiar with its internals.
We would evaluate the COCOMO II reuse factors as follows:
DM = 40 (% design modified)
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 91 -
CM = 50 (% code modified)
IM = 100 (% integration into new system required)
SU = 50 (poorly structured and documented)
UNFM = 1.0 (complete unfamiliarity with software)
AA = 5 (average assessment and adaptation effort)
The resulting equivalent size of the reuse component is:
( ) ( )
( ) ( )
( ) KSLOC 46.4
0.550.61KSLOC 40 100
1.0505 100
1000.3500.3400.4KSLOC 40
100 UNFMSUAA
100 IM0.3CM0.3DM0.4SLOC AdaptedESLOC
= +×=
⎟ ⎠ ⎞
⎜ ⎝ ⎛
⎥⎦ ⎤
⎢⎣ ⎡ ×++⎥⎦
⎤ ⎢⎣ ⎡ ×+×+××=
⎟ ⎠ ⎞
⎜ ⎝ ⎛
⎥⎦ ⎤
⎢⎣ ⎡ ×++⎥⎦
⎤ ⎢⎣ ⎡ ×+×+××=
Thus, for this situation, we can see that the reuse component would be a
poor decision: its equivalent size, and thus its contribution to cost and schedule, is
larger than the 40 KSLOC option of developing a new component. Experience
has shown that this is the case for many hasty reuse decisions.
However, the COCOMO II reuse model also shows us which factors
might be able to change the situation. We can’t do much about the nature of the
reused component, but if we could find people to modify it who were very
familiar with its code and structure, we could reduce the unfamiliarity factor
UNFM enough to reduce the equivalent size ESLOC below 40 KSLOC.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 92 -
However, we would still have some highly unmaintainable software, and a life
cycle analysis would probably show that newly developed software with better
DM, CM, IM, and SU factors would still be a better decision. A similar life cycle
decision situation, legacy software phaseout, is discussed next.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 93 -
2.6.6 Legacy Software Phaseout Decisions
A separate program related to the MCS program is a corporate property
value accounting system. It is an old 50 KSLOC COBOL program which is
becoming increasingly difficult to maintain. Its key factors are:
Annual MCF = 0.20 (20% of the code –10KSLOC—is changed each year)
SU = 50 (very poorly structured and documented)
UNFM = 0.7 (few people familiar with the code)
Thus, its equivalent size to be changed each year is:
KSLOC/Yr. 13.5100 0.7))(50(1KSLOC 10 =⎥⎦
⎤ ⎢⎣ ⎡ ×+×
If the program were redeveloped, it could use the same database
management system and graphic user interface software as the MCS system is
using, leaving only 20 KSLOC of new applications software to be built.
Conservatively, let us assume that the new software will reduce the SU penalty
from 50 to 25, and that the UNFM factor will be reduced from 0.7 to 0.4. Then
the equivalent size to be changed each year is:
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 94 -
( ) KSLOC/Yr. 4.41.14100 0.42510.20KSLOC 20 =×=⎟
⎠ ⎞⎜
⎝ ⎛ ×+××
If we add up the equivalent sizes of developing and maintaining the new
software for, say, 3 years, we get:
( ) KSLOC 32.24.4320 =×+
Maintaining the old legacy software for 3 years generates a larger
equivalent size of
KSLOC40.513.53 =×
Given that we will need to do property value accounting for at least 3
years, and that the size and cost reductions for the new software continue to
improve after 3 years, it is a good decision to build the new system and phase out
the old one.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 95 -
2.6.7 Software Reuse and Product Line Decisions
Besides its primary factory in the United States, UST has two large
foreign factories and several smaller factories. UST wishes to analyze whether it
would pay off to develop an MCS to support just-in-time manufacturing in all of
its factories. The product line would have particular challenges; due to the need
to accommodate multiple-country supplier logistics, order-processing interfaces,
and labor regulations. COCOMO II can support such an analysis via its Required
Reusability (RUSE) and related cost drivers affecting the cost to develop suitably
reusable software, and via the reused-software part of its sizing model.
In assessing the RUSE factor with respect to the rating scale in Section
2.3.2.1.1, UST conservatively judges that its multi-country factories have some
aspects of multiple product lines, and assigns a RUSE rating halfway between
Very High and Extra High. Following the RUSE guidance that the Required
Reliability (RELY) rating should be at most one level below the RUSE rating,
RELY is rated halfway between High and Very High. Conservatively, UST also
assigns a High rather than Nominal rating to the Documentation (DOCU) cost
driver. With all the other ratings at Nominal, this leads to an Effort Adjustment
Factor of (RUSE)(RELY)(DOCU) = (1.195)(1.18)(1.11) = 1.551. Applying this
to the Nominal project cost estimate produces a develop-for-reuse cost estimate of
($4400K)(1.551) = $6824K.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 96 -
In assessing the size adjustments due to reused software, UST makes the
following factor ratings, which are conservative for software developed to the
product-line standards in the develop-for-reuse cost estimate:
New factory-specific software: 40%
Black-box plug-and-play reuse: 30%
Reuse with modifications: 30%
Assessment and assimilation factor (AA): 2
Software understanding increment (SU): 10
Unfamiliarity factor (UNFM): 0.3
% design modified (DM): 10%
% code modified (CM): 20%
% integration redone (IM): 20%
With respect to the 100 KSLOC MCS product, the equivalent size due to
reuse works out to:
[ ] [ ] [ ]
[ ] SLOC 46.9
0.030.060.060.040.02300.640 100
100.3203.0100.40.02SLOC 300.02SLOC 30SLOC 40ESLOC
= ++++×++=
⎟ ⎠ ⎞⎜
⎝ ⎛ ×+×+×+×+×+=
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 97 -
The resulting cost to reuse the software at each new factory is then:
$2966K PM
$8K1.55118.146.92.94Cost 1.1
=
××××=
We can then compare the cost of redeveloping the MCS software for each
new factory to the product line cost of developing-for-reuse plus the cost-to-reuse
for each reuse instance, as summarized in Figure 2.5.
Number of Factories Redevelopment Cost Product Line Cost Investment Return 1 $4,400K $6,824K -$2,424K 2 8,800K 9,790K -990K 3 13,200K 12,256K 444K 4 17,600K 15,772K 1,878K
-$3,000
-$2,000
-$1,000
$0
$1,000
$2,000
$3,000
$4,000
0 1 2 3 4
Number of Factories
In ve
st m
en t R
et ur
n ($
K )
Figure 2.5 Reuse vs. Redevelopment Costs
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 98 -
The results are consistent with the empirical “Rule of Three” for software
reuse: that it usually takes three instances of a product line to achieve a net payoff.
Given that UST has at least three large factories, and that its factor estimates have
been conservative, a decision to invest in a product line appears reasonable.
However, the decision should also consider other cultural circumstances critical to
successful software reuse; see [Reifer, 1997; Jacobson et. al., 1997; Poulin,
1997].
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 99 -
2.6.8 Process Improvement Decisions
COCOMO II has several cost drivers and scale drivers which can be used
to evaluate candidate strategies for software process and productivity
improvement. Besides the software process maturity scale driver (PMAT), the
main COCOMO II factors include the reuse size factor we just discussed, the tool
usage cost driver (TOOL), the architecture and risk resolution scale driver
(RESL), and the project communications portion of the multisite development
cost driver (SITE). As discussed in Chapter 4, the analysis of the 161 project data
points in the current COCOMO II data base show a statistically significant
correlation between improvements in these and most other COCOMO II cost
drivers and reductions in software project effort.
Below, we show a simple return-on-investment analysis for improving
software productivity based just on the improvements in the Software Engineering
Institute Capability Maturity Model’s (SEI-CMM’s) 18 Key Process Areas
included in the PMAT scale driver rating. The COCOMO II PMAT variable
separates out such pure-process gains from complementary gains achievable via
reuse, tools, project communications, personnel factors, etc. In practice, the
PMAT analysis should be only a part of an overall product / process / personnel
productivity improvement analysis addressing not just effort and cost reduction
but other goals such as schedule reduction and quality improvement. An
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 100 -
emerging COCOMO II extension called the Constructive Productivity Model
(COPROMO) is discussed in Chapter 5 as a step in this direction.
The UST software organization has achieved Level 2 on the SEI -CMM
rating scale, and wishes to perform a return-on-investment analysis for the
investment required to achieve Level 3. UST’s analysis of required investments
identifies process definition and training as the major investment items. Process
definition will be the main responsibility of a Software Engineering Process
Group (SEPG) of 3 full-time people plus 4 quarter-time people from UST’s major
performer organizations. This cost over the normal 2 years required to go from
Level 2 to Level 3 [Hayes-Zubrow, 1995] is estimated as (2years)(4
persons)($96K/person-year) = $768K.
For training, UST has identified three 1-week courses on Peer Reviews,
Product Engineering, and Management and Organizational Factors to cover the 7
Key Process Areas at Level 3. Conservatively, UST assumes that all 200
software people will require the 3 weeks of training. This is 3/52 of their annual
personnel cost of (200 persons)($8K/PM)(12 mo.) = $19,200K, or $1108K. The
other main costs of learning, institutionalization, and evaluation will largely be
done by the SEPG, but UST budgets another $124K for contingencies to make a
total investment of $768K+$1108K+$124K = $2000K, or $2 million.
From the COCOMO II scale drivers in Table 2.10, we can see that the
effect of going from Level 2 (Nominal) to Level 3 (High) involves a reduction in
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 101 -
the scale factor from 4.68 to 3.12, or a reduction of .0156 in the exponent E used
to relate size to effort. For the typical 100KSLOC, all-nominal UST project, the
baseline exponent E = 1.10 yields an estimated effort of 2.94(100)1.10 = 466PM.
The reduced exponent for Level 3 yields an estimated effort of 2.94(100)1.0844 =
434PM, roughly a 7% improvement in productivity. This percentage
improvement will vary from about 4% for small projects (10 KSLOC) to about
11% for very large projects (2000 KSLOC) [Clark, 1999].
As discussed above, the annual cost of UST’s 200-person software
organization is roughly $19.2 million. A 7% improvement in productivity
corresponds with an annual savings of (.07)($19.2 million) = $1.344 million.
This is an annual return of about 67% on the $2 million investment to achieve
Level 3. Even a conservative 4% productivity improvement would produce an
annual return of about 38%. This conservative top-level analysis provides
stronger support of the anecdotal evidence that investments in software process
maturity are worthwhile. However, it is important to repeat that an organization’s
productivity strategies and analyses should not just look at the CMM, but should
be driven by the organization’s goals and priorities (e.g., for improving cost,
schedule, or quality); should consider added improvement strategies such as
reuse, staffing, and tool; and should be tailored to the organization’s specific
situation.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 102 -
2.6.9 Decision Analysis Summary
This section showed how the elements of the COCOMO II model defined
in Chapter 2 can support the eight decision analysis situations presented at the
beginning of Chapter 1. Note that all of the analyses could be done by hand (and
a hand calculator) via use of COCOMO II’s open internal equations, tables, and
definitions. One of the major advantages of COCOMO II is its ability to support
such analyses, based on a full understanding of the underlying cost drivers and
their effects, and to support reasoned discussion and negotiation of software cost
and schedule tradeoffs, based on the project stakeholders’ shared understanding of
the underlying model.
2.7 COCOMO II Model Summary and Versions
This section is a summary of the Early Design and Post-Architecture models
discussed in this chapter.
2.7.1 Model Equations, Tables, and Driver Rating Scales
2.7.1.1 Sizing equations
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 103 -
The Post-Architecture and Early Design models use the same sizing equations.
Sizing is summarized below and discussed in Sections 2.2.4.2 and 2.2.5.
( )
[ ]
( ) ( ) ( )IM0.3CM0.3DM0.4AAF
0.5AAFfor , 100
UNFM) (SUAAFAA
0.5 AAFfor , 100
)UNFMSU0.02(1AAFAA
AAM
AAMKSLOC AdaptedKSLOC Equivalent
KSLOC Equivalent KSLOC New 100
REVL1Size
×+×+×=
⎪ ⎪ ⎩
⎪⎪ ⎨
⎧
> ×++
≤ ××+×+
=
×=
+×⎟ ⎠ ⎞
⎜ ⎝ ⎛ +=
Table 2.44 Sizing Equation Symbol Descriptions Symbol Description
AA Assessment and Assimilation AAF Adaptation Adjustment Factor AAM Adaptation Adjustment Modifier CM Percent Code Modified DM Percent Design Modified IM Percent of Integration Integration Required for the Adapted Software
KSLOC Thousands of Source Lines of Code REVL Requirements Evolution and Volatility
SU Software Understanding UNFM Programmer Unfamiliarity with Software
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 104 -
2.7.1.2 Post-Architecture Model equations
( ) ATPROD
100 ATSLOC Adapted
PM
SF0.01BE
PMEMSizeAPM
Auto
5
1j j
Auto 17
1i i E
× =
×+=
+×⋅=
∑ ∏
=
=
Table 2.45 Post-Architecture Model Symbol Descriptions Symbol Description
A Effort coefficient that can be calibrated, currently set to 2.94 AT Percentage of the code that is re-engineered by automatic translation
ATPROD Automatic translation productivity B Scaling base-exponent that can be calibrated, currently set to 0.91 E Scaling exponent described in Section 2.3.1
EM 17 Effort Multipliers discussed in Section 2.3.2.1 PM Person Months effort from developing new and adapted code
PMAuto Person Months effort from automatic translation activities discussed in Section 2.2.6.
SF 5 Scale Factors discussed in Section 2.3.1
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 105 -
2.7.1.3 Early Design Model equations
Auto 7
1i i E PM EMSizeAPM ∏ = +×⋅=
Table 2.46 Early Design Symbol Descriptions Symbol Description
A Effort coefficient that can be calibrated, currently set to 2.94 E Scaling exponent described in Section 2.3.1
EM 7 Effort Multipliers discussed in Section 2.3.2.2 PM Person Months effort from developing new and adapted code
PMAuto Person Months effort from automatic translation activities discussed in Section 2.2.6.
SF 5 Scale Factors discussed in Section 2.3.1
2.7.1.4 Time to Develop equation
[ ]( )B-E0.2DF 100
SCED%])(PM[CTDEV FNS
×+=
××=
Table 2.47 TDEV Equation Symbol Descriptions Symbol Description
B The scaling base-exponent for the effort equation, currently set to 0.91 C Coefficient that can be calibrated, currently set to 3.67 D Scaling base-exponent that can be calibrated, currently set to 0.28 E The scaling exponent for the effort equation
PMNS Person Months estimated without the SCED cost driver (Nominal Schedule) SCED Required Schedule Compression TDEV Time to Develop in calendar months
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 106 -
2.7.1.4 Driver Rating Scales
The driver rating scales for the Scale Drivers are given below and discussed in
Section 2.3.1.
Table 2.48 Scale Factors for COCOMO II Models
Scale
Drivers
Very Low
Low
Nominal
High
Very High
Extra High
PREC thoroughly unpreceden ted
largely unpreceden ted
somewhat unpreceden ted
generally familiar
largely familiar
thoroughly familiar
FLEX rigorous occasional relaxation
some relaxation
general conformity
some conformity
general goals
RESL little (20%) some (40%) often (60%) generally (75%)
mostly (90%)
full (100%)
TEAM
very difficult interactions
some difficult
interactions
basically cooperative interactions
largely cooperative
highly cooperative
seamless interactions
PMAT
SW-CMM Level 1 Lower
SW-CMM Level 1 Upper
SW-CMM Level 2
SW-CMM Level 3
SW-CMM Level 4
SW-CMM Level 5
or the estimated Process Maturity Level (EMPL)
The driver rating scales for the Post-Architecture model Cost Drivers are given
below in Table 2.44 and discussed in Section 2.3.2.1. The Cost Drivers for the
Early Design model are discussed in Section 2.3.2.2
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 107 -
Table 2.49 Cost Driver Ratings for Post-Architecture Model
Cost Drivers
Very Low
Low
Nominal
High
Very High
Extra High
RELY slight inconvenienc
e
low, easily recoverable
losses
moderate, easily
recoverable losses
high financial loss
risk to human life
DATA DB bytes / Pgm SLOC <
10
10 ≤ D/P < 100
100 ≤ D/P < 1000
D/P > 1000
CPLX see Table 2.19 RUSE none across
project across
program across
product line across multiple
product lines DOCU Many life-
cycle needs uncovered
Some life- cycle needs uncovered.
Right-sized to life-cycle needs
Excessive for life-cycle needs
Very excessive for life-cycle needs
TIME ≤ 50% use of available execution time
70% 85% 95%
STOR ≤ 50% use of available storage
70% 85% 95%
PVOL major change every 12 mo.; minor change every 1 mo.
major: 6 mo.; minor: 2 wk.
major: 2 mo.; minor: 1 wk.
major: 2 wk.; minor: 2 days
ACAP 15th percentile
35th percentile
55th percentile
75th percentile
90th percentile
PCAP 15th percentile
35th percentile
55th percentile
75th percentile
90th percentile
PCON 48% / year 24% / year 12% / year 6% / year 3% / year AEXP ≤ 2 months 6 months 1 year 3 years 6 years PEXP ≤ 2 months 6 months 1 year 3 years 6 year LTEX ≤ 2 months 6 months 1 year 3 years 6 year TOOL edit, code,
debug simple, frontend, backend CASE, little integration
basic lifecycle tools, moderately integrated
strong, mature lifecycle tools, moderately integrated
strong, mature, proactive lifecycle tools, well integrated with processes, methods, reuse
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 108 -
Table 2.49 (Cont'd)
Cost Drivers
Very Low
Low
Nominal
High
Very High
Extra High
SITE: Collo- cation
International Multi-city and multi- company
Multi-city or multi- company
Same city or metro area
Same building or complex
Fully collocated
SITE: Com- muni- cation
Some phone, mail
Individual phone, FAX
Narrow-band email
Wide-band electronic communica- tion.
Wide-band elect. comm, occasional video conf.
Interactive multimedia
SCED 75% of nominal
85% of nominal
100% of nominal
130% of nominal
160% of nominal
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 109 -
2.7.2 COCOMO II Version Parameter Values
2.7.2.1 COCOMO II.2000 Calibration
The following table, Table 2,46, shows the COCOMO II.2000 calibrated values
for Post-Architecture scale factors and effort multipliers.
Table 2.50 COCOMO II.2000 Post-Architecture Calibrated values
Baseline Effort Constants: A = 2.94; B = 0.91 Baseline Schedule Constants: C = 3.67; D = 0.28
Driver Symbol VL L N H VH XH PREC SF1 6.20 4.96 3.72 2.48 1.24 0.00 FLEX SF2 5.07 4.05 3.04 2.03 1.01 0.00 RESL SF3 7.07 5.65 4.24 2.83 1.41 0.00 TEAM SF4 5.48 4.38 3.29 2.19 1.10 0.00 PMAT SF5 7.80 6.24 4.68 3.12 1.56 0.00 RELY EM1 0.82 0.92 1.00 1.10 1.26 DATA EM2 0.90 1.00 1.14 1.28 CPLX EM3 0.73 0.87 1.00 1.17 1.34 1.74 RUSE EM4 0.95 1.00 1.07 1.15 1.24 DOCU EM5 0.81 0.91 1.00 1.11 1.23 TIME EM6 1.00 1.11 1.29 1.63 STOR EM7 1.00 1.05 1.17 1.46 PVOL EM8 0.87 1.00 1.15 1.30 ACAP EM9 1.42 1.19 1.00 0.85 0.71 PCAP EM10 1.34 1.15 1.00 0.88 0.76 PCON EM11 1.29 1.12 1.00 0.90 0.81 APEX EM12 1.22 1.10 1.00 0.88 0.81 PLEX EM13 1.19 1.09 1.00 0.91 0.85 LTEX EM14 1.20 1.09 1.00 0.91 0.84 TOOL EM15 1.17 1.09 1.00 0.90 0.78 SITE EM16 1.22 1.09 1.00 0.93 0.86 0.80
SCED EM17 1.43 1.14 1.00 1.00 1.00
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 110 -
Table 2.47 shows the COCOMO II.2000 calibrated values for Early Design effort
multipliers. The scale factors are the same as for the Post-Architecture model.
Table 2.51 COCOMO II.2000 Early Design Calibrated values
Baseline Effort Constants: A = 2.94; B = 0.91 Baseline Schedule Constants: C = 3.67; D = 0.28
Driver Symbol XL VL L N H VH XH PERS EM1 2.12 1.62 1.26 1.00 0.83 0.63 0.50 RCPX EM2 0.49 0.60 0.83 1.00 1.33 1.91 2.72 PDIF EM3 0.87 1.00 1.29 1.81 2.61 PREX EM4 1.59 1.33 1.12 1.00 0.87 0.74 0.62 FCIL EM5 1.43 1.30 1.10 1.0 0.87 0.73 0.62
RUSE EM6 0.95 1.00 1.07 1.15 1.24 SCED EM7 1.43 1.14 1.00 1.00 1.00
2.7.2.2 COCOMO II.1997 Calibration
The following table shows the COCOMO II.1997 calibrated values for scale
factors and effort multipliers.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 111 -
Table 2.52 COCOMO II.1997 Post-Architecture Calibrated values
Baseline Effort Constants: A = 2.45; B = 1.01 Baseline Schedule Constants: C = 2.66; D = 0.33
Driver Symbol VL L N H VH XH PREC SF1 0.0405 0.0324 0.0243 0.0162 0.0081 0.00 FLEX SF2 0.0607 0.0486 0.0364 0.0243 0.0121 0.00 RESL SF3 0.0422 0.0338 0.0253 0.0169 0.0084 0.00 TEAM SF4 0.0494 0.0395 0.0297 0.0198 0.0099 0.00 PMAT SF5 0.0454 0.0364 0.0273 0.0182 0.0091 0.00 RELY EM1 0.75 0.88 1.00 1.15 1.39 DATA EM2 0.93 1.00 1.09 1.19 RUSE EM3 0.91 1.00 1.14 1.29 1.49 DOCU EM4 0.89 0.95 1.00 1.06 1.13 CPLX EM5 0.75 0.88 1.00 1.15 1.30 1.66 TIME EM6 1.00 1.11 1.31 1.67 STOR EM7 1.00 1.06 1.21 1.57 PVOL EM8 0.87 1.00 1.15 1.30 ACAP EM9 1.50 1.22 1.00 0.83 0.67 PCAP EM10 1.37 1.16 1.00 0.87 0.74 PCON EM11 1.24 1.10 1.00 0.92 0.84 APEX EM12 1.22 1.10 1.00 0.89 0.81 PLEX EM13 1.25 1.12 1.00 0.88 0.81 LTEX EM14 1.22 1.10 1.00 0.91 0.84 TOOL EM15 1.24 1.12 1.00 0.86 0.72 SITE EM16 1.25 1.10 1.00 0.92 0.84 0.78 SCED EM17 1.29 1.10 1.00 1.00 1.00
2.7.3 Logical Lines of Source Code Counting Rules
What is a line of source code? This checklist, adopted from the Software
Engineering Institute [Park 1992], attempts to define a logical line of source code.
The intent is to define a logical line of code while not becoming too language
specific for use in collection data to validate the COCOMO 2.0 model.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 112 -
Table 2.53 Definition Checklist for Source Statements Counts
Definition Checklist for Source Statements Counts
Definition name: Logical Source Statements Date:_______________ (basic definition) Originator: COCOMO II Measurement unit: Physical source lines Logical source statements √ Statement type Definition √ Data Array Includes Excludes When a line or statement contains more than one type, classify it as the type with the highest precedence.
1 Executable Order of precedence: 1 √ 2 Nonexecutable
3 Declarations 2 √ 4 Compiler directives 3 √ 5 Comments
6 On their own lines 4 √ 7 On lines with source code 5 √ 8 Banners and non-blank spacers 6 √ 9 Blank (empty) comments 7 √
10 Blank lines 8 √ How produced Definition √ Data array Includes Excludes 1 Programmed √ 2 Generated with source code generators √ 3 Converted with automated translators √ 4 Copied or reused without change √ 5 Modified √ 6 Removed √ Origin Definition √ Data array Includes Excludes 1 New work: no prior existence √ 2 Prior work: taken or adapted from
3 A previous version, build, or release √ 4 Commercial, off-the-shelf software (COTS), other than libraries √ 5 Government furnished software (GFS), other than reuse libraries √ 6 Another product √ 7 A vendor-supplied language support library (unmodified) √ 8 A vendor-supplied operating system or utility (unmodified) √ 9 A local or modified language support library or operating system √ 10 Other commercial library √ 11 A reuse library (software designed for reuse) √ 12 Other software component or library √
Usage Definition √ Data array Includes Excludes 1 In or as part of the primary product √ 2 External to or in support of the primary product √
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 113 -
Table 2.54 Definition Checklist for Source Statements Counts (continued)
Definition Checklist for Source Statements Counts
Definition name: Logical Source Statements Date:_______________ (basic definition) Originator: COCOMO II Delivery Definition √ Data array Includes Excludes 1 Delivered:
2 Delivered as source √ 3 Delivered in compiled or executable form, but not as source
√
4 Not delivered: 5 Under configuration control √ 6 Not under configuration control √
Functionality Definition √ Data array Includes Excludes 1 Operative √ 2 Inoperative (dead, bypassed, unused, unreferenced, or
unaccessible):
3 Functional (intentional dead code, reactivated for special purposes)
√
4 Nonfunctional (unintentionally present) √ Replications Definition √ Data array Includes Excludes 1 Master source statements (originals) √ 2 Physical replicates of master statements, stored in the master code √ 3 Copies inserted, instantiated, or expanded when compiling or linking √ 4 Postproduction replicates—as in distributed, redundant, or
reparameterized systems √
Development status Definition √ Data array Includes Excludes Each statement has one and only one status, usually that of its parent unit.
1Estimated or planned √ 2 Designed √ 3 Coded √ 4 Unit tests completed √ 5 Integrated into components √ 6 Test readiness review completed √ 7 Software (CSCI) tests completed √ 8 System tests completed √ Language Definition √ Data array Includes Excludes
List each source language on a separate line. 1 Separate totals for each language √
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 114 -
Table 2.55 Definition Checklist for Source Statements Counts (continued)
Definition Checklist for Source Statements Counts
Definition name: Logical Source Statements Date:_______________ (basic definition) Originator: COCOMO II Clarifications Definition √ Data array Includes Excludes
(general) 1 Nulls, continues, and no-ops √ 2 Empty statements, e.g. “;;” and lone semicolons on separate lines √ 3 Statements that instantiate generics √ 4 Begin...end and {...} pairs used as executable statements √ 5 Begin...end and {...} pairs that delimit (sub)program bodies √ 6 Logical expressions used as test conditions √ 7 Expression evaluations used as subprograms arguments √ 8 End symbols that terminate executable statements √ 9 End symbols that terminate declarations or (sub)program bodies √ 10 Then, else, and otherwise symbols √ 11 Elseif statements √ 12 Keywords like procedure division, interface, and implementation √ 13 Labels (branching destinations) on lines by themselves √ Clarifications Definition √ Data array Includes Excludes
(language specific) Ada
1 End symbols that terminate declarations or (sub)program bodies √ 2 Block statements, e.g. begin...end √ 3 With and use clauses √ 4 When (the keyword preceding executable statements) √ 5 Exception (the keyword, used as a frame header) √ 6 Pragmas √
Assembly 1 Macro calls √ 2 Macro expansions √
C and C++ 1 Null statement, e.g. “;” by itself to indicate an empty body4 √ 2 Expression statements (expressions terminated by semicolons) √ 3 Expression separated by semicolons, as in a “for” statement √ 4 Block statements, e.g. {...} with no terminating semicolon √ 5 “;”, “;” or “;” on a line by itself when part of a declaration √ 6 “;” or “;” on a line by itself when part of an executable statement √ 7 Conditionally compiled statements (#if, #ifdef, #ifndef) √ 8 Preprocessor statements other than #if, #ifdef, and #ifndef √
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 115 -
Table 2.56 Definition Checklist for Source Statements Counts (continued)
Definition Checklist for Source Statements Counts
Definition name: Logical Source Statements Date:_______________ (basic definition) Originator: COCOMO II Clarifications Definition √ Data array Includes Excludes
(language specific) CMS-2
1 Keywords like SYS-PROC and SYS-DD √ COBOL
1 “PROCEDURE DIVISION”, “END DECLARATIVES”, etc. √ FORTRAN
1 END statements √ 2 Format statements √ 3 Entry statements √
PASCAL 1 Executable statements not terminated by semicolons √ 2 Keywords like INTERFACE and IMPLEMENTATION √ 3 FORWARD declarations √
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 116 -
Table 2.57 Definition Checklist for Source Statements Counts (continued)
Definition Checklist for Source Statements Counts
Definition name: Logical Source Statements Date:_______________ (basic definition) Originator: COCOMO II
Summary of Statement Types Executable statements Executable statements cause runtime actions. They may be simple statements such as assignments, goto’s, procedure calls, macro calls, returns, breaks, exits, stops, continues, nulls, no- ops, empty statements, and FORTRAN’s END. Or they may be structured or compound statements, such as conditional statements, repetitive statements, and “with” statements. Languages like Ada, C, C++, and Pascal have block statements [begin...end and {...}] that are classified as executable when used where other executable statements would be permitted. C and C++ define expressions as executable statements when they terminate with a semicolon, and C++ has a <declaration> statement that is executable. Declarations Declarations are nonexecutable program elements that affect an assembler’s or compiler’s interpretation of other program elements They are used to name, define, and initialize; to specify internal and external interfaces; to assign ranges for bounds checking; and to identify and bound modules and sections of code. Examples include declarations of names, numbers, constants, objects, types, subtypes, programs, subprograms, tasks, exceptions, packages, generics, macros, and deferred constants. Declarations also include renaming declarations, use clauses, and declarations that instantiate generics. Mandatory begin...end and {...} symbols that delimit bodies of programs and subprograms are integral parts of program and subprogram declarations. Language superstructure elements that establish boundaries for different sections of source code are also declarations. Examples include terms such as PROCEDURE DIVISION, DATA DIVISION, DECLARATIVES, END DECLARATIVES, INTERFACE, IMPLEMENTATION, SYS-PROC and SYS- DD. Declarations, in general, are never required by language specifications to initiate runtime actions, although some languages permit compilers to implement them that way. Compiler Directives Compiler directives instruct compilers, preprocessors, or translators (but not runtime systems) to perform special actions. Some, such as Ada’s pragma and COBOL’s COPY, REPLACE, and USE, are integral parts of the source language. In other languages like C and C++, special symbols like # are used along with standardized keywords to direct preprocessor or compiler actions. Still other languages rely on nonstandardized methods supplied by compiler vendors. In these languages, directives are often designated by special symbols such as #, $, and {$}.
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 117 -
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
2.7.4 COCOMO Model comparisons
Since the 1981 publication of Software Engineering Economics, there have been
upgrades and modifications to COCOMO. The latest upgrade to the model is
presented in this chapter. The table below contrasts the differences of two major
upgrades to the original COCOMO 1981 model: Ada COCOMO and COCOMO
II.
COCOMO II/Chapter 2/Boehm et al. - 118 -
Table 2.58 COCOMO Model Comparisons
COCOMO 81
Ada COCOMO
COCOMO II Early Design
COCOMO II Post-Architecture
Size Delivered Source Instructions (DSI) or Source Lines of Code (SLOC)
DSI or SLOC Function Points (FP) with Language or SLOC
FP with Language or SLOC
Reuse Equivalent SLOC = Linear ƒ(DM,CM,IM)
Equivalent SLOC = Linear ƒ(DM,CM,IM)
Equivalent SLOC = nonlinear ƒ (AA,SU,UNFM,DM,CM,IM)
Equivalent SLOC = nonlinear ƒ (AA,SU,UNFM,DM,CM,IM)
Requirements Change
Requirements Volatility rating (RVOL)
RVOL rating Change %: Requirements Evolution (REVL)
REVL
Maintenance Annual Change Traffic (ACT) = (%added + %modified)/yr.
ACT ƒ (MCF, SU, UNFM) MCF = (%added + %modified)
ƒ(MCF, SU, UNFM)
Scale Drivers, B, in PMNom=A(Size)B
Organic: 1.05 Semidetached: 1.12 Embedded: 1.20
Embedded: 1.04 – 1.24 depending on the degree of: - early risk elimination - solid architecture - stable requirements - Ada process maturity
B = 0.91 to 1.23 depending on the degree of: - Precedentedness - Development conformity - Early architecture and risk resolution - Team Cohesion - Process maturity
B = 0.91 to 1.23 depending on the degree of: - Prededentedness - Development conformity - Early architecture and risk
resolution - Team Cohesion - Process maturity
Product Cost Drivers
RELY, DATA, CPLX RELY1, DATA, CPLX1, RUSE
RCPX1,2, RUSE1,2 RELY1, DATA1, DOCU1,2, CPLX1,2, RUSE1,2
Platform Cost Drivers
TIME, STOR, VIRT, TURN TIME, STOR, VMVH, VMVT, TURN
Platform difficulty: PDIF1,2 TIME1, STOR1, PVOL1 (=VIRT)
Personnel Cost Drivers
ACAP, AEXP, PCAP, VEXP, LEXP
ACAP1, AEXP, PCAP1, VEXP, LEXP
Personnel capability and experience: PERS1,2, PREX1,2
ACAP1, PCAP1, PCON1,2, APEX1,2, LTEX1,2, PLEX1,2
Project Cost Drivers
MODP, TOOL, SCED MODP1, TOOL1, SCED, SECU
SCED1, FCIL1,2 TOOL1,2, SCED1, SITE1,2
1 Different multiplers 2 Different rating scale
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
COCOMO II/Chapter 2/Boehm et al. - 119 -
© 1999-2000 USC Center for Software Engineering. All Rights Reserved COCOMO_II_Ch_2_(Boehm_et_al_2000)-2
- Description
- Adaptation Adjustment Modifier
- Software Understanding
- Description
- Effort coefficient that can be calibrated, currently set to 2.94
- Description
- Effort coefficient that can be calibrated, currently set to 2.94
- Description
- Person Months estimated without the SCED cost driver (Nominal Schedule)
- Time to Develop in calendar months