Software Cost Estimation
Major Issues in Estimating Software Cost
Companies and/or projects do not collect project cost data
on past projects.
Precision of estimate is far greater than its accuracy.
Estimates are usually based on lines of code, which in
itself is an estimate.
Software cost estimates are hard to justify.
Cost models are not perceived to be very reliable;
therefore they are not used with any degree of regularity.
Software cost estimates are convenient to reduce when
developers want to lower their bid.
Why Are Software Estimations So Unreliable?
Lack of historical data from past projects on which to base
estimates.
First-of-a-kind systems. Past history on similar projects
does not exist.
Lack of expertise by the estimator in making estimates.
Things left out. There are often large pieces that just never
get put on the list of things to do and are discovered later.
Premature estimation. Estimates must be given before a
proper understanding of the project is available or developed.
Productive time is not 40 hours per week, yet many
schedules are built as if it were.
1
Failure to update estimates when the project or
environment changes.
Undue (unfounded) optimism on the part of the
developers.
Cost (and Schedule) Estimation Techniques
Algorithmic models - Algorithms for producing a software
cost estimate (COCOMO is an example)
Rules of thumb - Guidelines that have evolved over time
Expert judgment - Consulting one or more experts
Estimation by analogy - Comparisons with completed
projects
Design to cost - Product is matched to the effort (cost)
available
Price-to-win estimating - Price believed to be necessary to
win the job (not a cost estimate)
Top-down estimating - Overall estimate derived from global
properties (Intermediate COCOMO is an example)
Bottom-up estimating-Each component is separately
estimated and the results aggregated (WBS a useful tool)
Difficulty with Estimation
Conflicting project goals
Lack of detailed product description
Wide variation in effort needed to reuse code
Emergence of new development processes, methods, and
tools
COCOMO Model of Estimation
Constructive Cost Model (COCOMO): A software cost
estimation method based on a set of empirically derived
equations.
Provides effort estimates for the development life cycle
phases only (i.e. software design, programming, and integration
and testing)
Different versions of COCOMO:
Basic COCOMO used mostly for rough, early
estimates
Intermediate COCOMO Includes 15 different
factors to account for the influence of various project
attributes such as personnel capability, use of modern
tools, hardware constraints, etc.
Detailed COCOMO Account for the influence of
different factors on individual phases of the project
COCOMO models include 3 software development types:
Organic: relatively small software teams develop
familiar types of software in an in-house environment.
Most personnel have previous experience on similar
system in the organization
Embedded: the project may require new
technology, unfamiliar algorithms, or an innovative new
method for solving the problem
Semi-detached: having a mixture between
organic and embedded types
Basic COCOMO
Type
Effort
Organic
PM=2.4 (KDSI) 1.05
Semi-detached PM=3.0 (KDSI) 1.12
Embedded
PM=3.6 (KDSI) 1.20
Schedule
TD=2.5 (PM) 0.38
TD=2.5 (PM) 0.35
TD=2.5 (PM) 0.32
Where,
PM = person-month (man-month)
KDSI = delivered source instructions, in thousands
TD = number of months estimated for software development
Example Basic COCOMO Calculation
Assuming an organic type project with an
estimated size = 128,000 lines of code.
Effort: PM = 2.4(128) 1.05 = 392 person-months
Productivity: 128,000 DSI / 392 PM = 327
DSI/PM
0.38
Schedule: TD = TD=2.5 (PM)
Avg. Staffing: 392 PM / 24 months = 16 FSP
Where,
FSP = full-time-equivalent staff person
= 24 months