Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 45

Software Cost Estimation

J. C. Huang
Department of Computer Science
University of Houston
Houston, TX 77204-3010
On Precision
It is the mark of an instructed mind to rest
satisfied with the degree of precision which
the nature of subject admits, and not to seek
exactness when only an approximation of
the truth is possible... -Aristotle

©J. C. Huang 2005 Estimation Slide 2 of 44


An Observation
Estimation of resources, cost, and schedule
for a software development effort requires
experience, access to good historical
information, and the courage to commit to
quantitative measures when qualitative data
are all that exist.

©J. C. Huang 2005 Estimation Slide 3 of 44


Another Observation
  Estimation for software project carries
inherent risk because of uncertainty in
project complexity, project size, and
structure (of requirements and problem to
be solved).

©J. C. Huang 2005 Estimation Slide 4 of 44


Major Factors
Major factors that influence software cost:
• product size and complexity
• programmer ability
• available time
• required reliability
• level of technology

©J. C. Huang 2005 Estimation Slide 5 of 44


Three Approaches
Estimation can be done by using

• experience and historical data


• decomposition techniques
• empirical models

©J. C. Huang 2005 Estimation Slide 6 of 44


Decomposition Techniques

To obtain an estimation, we can decompose


the problem to be solved, or decompose the
process.

©J. C. Huang 2005 Estimation Slide 7 of 44


Decomposition
Decomposition should be done in such a way that
1. size can be properly estimated,
2. cost or effort required for each component can
be accurately estimated,
3. the team's ability to handle the components is
well known, and
4. the estimated values will be relatively unaffected
by changes to the requirements.

©J. C. Huang 2005 Estimation Slide 8 of 44


Problem-Based Estimation
1. Based on the software scope, decompose the software into
problem functions that can be estimated individually.
2. Estimate LOC or FP of each function.
3. Make optimistic (sopt), most likely (sm), and pessimistic
(spess) estimates for each item. Then compute the expected
value:
EV = (sopt + 4 sm + spess)/6
4. Apply baseline productivity metrics to compute estimated
cost or effort.

©J. C. Huang 2005 Estimation Slide 9 of 44


Process-Based Estimation

1. Decompose the process into a set of tasks


or activities.
2. Estimate the cost or effort required for
each.

©J. C. Huang 2005 Estimation Slide 10 of 44


Empirical Estimation Models

• An estimation model provides empirically


derived formulas to predict effort as a
function of LOC or FP.
• The data used to support these models are
derived from a limited sample. Thus no
model is appropriate for all classes of
software.

©J. C. Huang 2005 Estimation Slide 11 of 44


Structure of Estimation Model

E = A + BXC
where A, B, and C are empirically derived
constants, E is the effort in person months, and X
is the estimation variable, either in LOC or FP.

©J. C. Huang 2005 Estimation Slide 12 of 44


LOC-based Model
Walston-Felix Model E = 5.2(KLOC)0.91
Bailey-Basili Model E = 5.5+0.73(KLOC)1.16
Boehm Model (simple) E = 3.2(KLOC)1.05
Doty Model for KLOC > 9 E = 5.288(KLOC)1.047

©J. C. Huang 2005 Estimation Slide 13 of 44


FP-based model

Albrecht and Gaffney Model


E = -13.39 + 0.0545(FP)
Kemerer Model
E = 60.62 + 7.728(FP)310-8
Matson, Barnett & Mellichamp Model
E = 585.7 + 15.12(FP)

©J. C. Huang 2005 Estimation Slide 14 of 44


COCOMO
The COnstructive COst MOdel

It is LOC-based.

There are three models:


basic,
intermediate, and
advanced.
©J. C. Huang 2005 Estimation Slide 15 of 44
Three Classes of Software Project

• Organic -- a relatively small simple project in


which small teams with good application
experience work to a set of less than rigid
requirements.
• Semi-detached -- an intermediate project in which
teams with mixed experience must meet a mix of
rigid and less than rigid requirements.
• Embedded -- a project that must meet tight
hardware, software, and operational constraints.
©J. C. Huang 2005 Estimation Slide 16 of 44
The COCOMO (continued)
The basic equations
E = a(KLOC)b
T = cEd
where E is the effort required in person-months, T
is the required development time in chronological
months, KLOC is the estimated size of software in
thousand lines of delivered source code. The
constants a, b, c, and d are listed below:
©J. C. Huang 2005 Estimation Slide 17 of 44
The COCOMO Model (continued)

type of project a b c d

organic 2.4 1.05 2.5 0.38


semi-detached 3.0 1.12 2.5 0.35
embedded 3.6 1.20 2.5 0.32

©J. C. Huang 2005 Estimation Slide 18 of 44


The COCOMO (continued)

Effort equation for the intermediate model:

E = a(KLOC)b(EAF)

where EAF is the effort adjustment factor that


ranges from 0.9 to 1.4, and constants a and b
are

©J. C. Huang 2005 Estimation Slide 19 of 44


The COCOMO (continued)

type of project a b
organic 3.2 1.05
semi-detached 3.0 1.12
embedded 2.8 1.20

©J. C. Huang 2005 Estimation Slide 20 of 44


The Software Equation
E = ((LOC)B0.333/P)3(1/t4)
where
E = effort in person-months
t = project duration in months
B = special skill factor ranging from 0.16 to 0.39
P = productivity parameter

(ref. www.qsm.com)
©J. C. Huang 2005 Estimation Slide 21 of 44
The Software Equation
E = ((LOC)B0.333/P)3(1/t4)
where
E= effort in person-months
t= project duration in months
B= special skill factor ranging from 0.16 to 0.39

P = productivity parameter that reflects


 overall process maturity and management practices
 the extent to which good SE practices are used
 the level of programming language used
 the state of software environment
 the skill and experience of the software team
 the complexity of the application

©J. C. Huang 2005 Estimation Slide 22 of 44


Major Factors
Major factors that influence software cost:
• product size and complexity
• programmer ability
• available time
• required reliability
• level of technology

©J. C. Huang 2005 Estimation Slide 23 of 44


Product Complexity
Three categories of products:
Application programs: those developed in the
environment by a language compiler, such as C++.
Utility programs: those written to provide user
processing environments and make sophisticated use
of the operating system facilities.
System programs: those interact directly with
hardware, and often involve concurrent processing
with time constraints.

©J. C. Huang 2005 Estimation Slide 24 of 44


Required Effort
Given KDSI, thousand lines of deliverable code,
Required programmer-months:
application programs: PM = 2.4 x (KDSI)1.05
utility programs: PM = 3.0 x (KDSI)1.12
system programs: PM = 3.6 x (KDSI)1.20

©J. C. Huang 2005 Estimation Slide 25 of 44


Required Development Time
Required development time:
application programs: TDev = 2.5 x (PM)0.38
utility programs: TDev = 2.5 X (PM)0.35
system programs: TDev = 2.5 x (PM)0.32

©J. C. Huang 2005 Estimation Slide 26 of 44


Unit cost vs. size (assuming $5,000/PM)
80
system
70

60
Dollars per line of source code

50

40
utility
30

20 application

10
10 101 2
100 1000
3 10000
4
Software size in 1,000 lines of code

©J. C. Huang 2005 Estimation Slide 27 of 44


Required development time vs. size
60

application
50
Required development time in months

utility
40

system
30

20

10

0
10 1
10 100
2 1000
3 10000
4
Software size in 1,000 lines of source code

©J. C. Huang 2005 Estimation Slide 28 of 44


Productivity vs. size
0,03
30

0,02
20 application
Lines of code per prgrammer per day

(11.8)
utility
0,01
10
(5.8)
system (2.8)
0,00
00
10 101 100
2 1000
3 4
10000
Software size in 1,000 lines of source code
©J. C. Huang 2005 Estimation Slide 29 of 44
Major Factors
Major factors that influence software cost:
• product size and complexity
• programmer ability
• available time
• required reliability
• level of technology

©J. C. Huang 2005 Estimation Slide 30 of 44


How programmers spend their time.

Writing programs 13%


Reading programs and manuals 16%
Job communications 32%
Personal 13%
Miscellaneous 15%
Training 6%
Mail 5%
Based on Bell Lab Study conducted in 1964 on 70 programmers

©J. C. Huang 2005 Estimation Slide 31 of 44


Programmer’s Ability
Variations in programmers abilities
worst/best ratio
performance measure program #1 program # 2
debugging hours 28:1 26:1
CPU time 8:1 11:1
coding hours 16:1 25:1
program size 6:1 5:1
run time 5:1 13:1
©J. C. Huang 2005 Estimation Slide 32 of 44
Programmer’s Ability (continued)
By eliminating extreme performance in
both directions, a variability of 5 to 1 in
programmer productivity can be expected.

©J. C. Huang 2005 Estimation Slide 33 of 44


Available Time
Software projects require more total
effort if development time is
compressed or expanded from the
optimal time.

©J. C. Huang 2005 Estimation Slide 34 of 44


Available Time (continued)
According to Putnam, a schedule
compression of 0.86 will increase
required staff by a factor of 1.82.

©J. C. Huang 2005 Estimation Slide 35 of 44


Available Time (continued)
It is commonly agreed that there is a
limit beyond which a software project
cannot reduce its schedule by adding
more personnel and equipment. This
limit occurs roughly at 75% of the
normal schedule.

©J. C. Huang 2005 Estimation Slide 36 of 44


COCOMO Effort Multipliers
Product attributes
Required reliability 0.75 to 1.40
Data-base size 0.94 to 1.16
Product complexity 0.70 to 1.65

©J. C. Huang 2005 Estimation Slide 37 of 44


COCOMO Effort Multipliers (continued)

Computer attributes
Execution time constraint 1.00 to 1.66
Main storage constraint 1.00 to 1.56
Virtual machine volatility 0.87 to 1.30
Computer turn-around time 0.87 to 1.15

©J. C. Huang 2005 Estimation Slide 38 of 44


COCOMO Effort Multipliers (continued)

Personnel attributes
Analyst capability 1.46 to 0.71
Programmer capability 1.42 to 0.70
Applications experience 1.29 to 0.82
Virtual machine experience 1.21 to 0.90
Programming language experience 1.14 to 0.95

©J. C. Huang 2005 Estimation Slide 39 of 44


COCOMO Effort Multipliers (continued)

Project attributes
Use of modern programming practices
1.24 to 0.82
Use of software tools 1.24 to 0.83
Required development schedule
1.23 to 1.00

©J. C. Huang 2005 Estimation Slide 40 of 44


Staffing Level Estimation
A software project typically starts with a
small group of capable people to do
planning and analysis, a larger, but still
small group to do architectural design. The
size of required personnel increases in each
successive phase, peaks at the
implementation and system testing phase,
and decreases in the maintenance phase.
©J. C. Huang 2005 Estimation Slide 41 of 44
Staffing-Level Estimation
The personnel level of effort required
throughout the life cycle of a software
product can be approximated by the
following equation, which describes a
Rayleigh curve:

©J. C. Huang 2005 Estimation Slide 42 of 44


Staffing-Level Estimation (continued)
(0.15Tdev+0.7t)2
0.15Tdev+0.7t -
FSP = PM( )e 0.5(Tdev)2
0.25(Tdev)2
where FSP is the no. of full-time software personnel required at time t,

PM is the estimated programmer-months for product


development, excluding planning and analysis, and

Tdev is the estimated development time.

©J. C. Huang 2005 Estimation Slide 43 of 44


Staffing-Level Estimation (continued)
FSP

Rayleigh curve

©J. C. Huang 2005 Estimation Slide 44 of 44


Skills most lacking in entry level programmers
• Express oneself clearly in English
• Develop and validate software requirements and
specifications
• Work within applications area
• Perform software maintenance
• Perform economic analyses
• Work with project management techniques
• Work in group
©J. C. Huang 2005 Estimation Slide 45 of 44

You might also like