Estimation

45
Software Cost Estimation J. C. Huang Department of Computer Science University of Houston Houston, TX 77204-3010

description

 

Transcript of Estimation

Page 1: Estimation

Software Cost Estimation

J. C. Huang

Department of Computer Science

University of Houston

Houston, TX 77204-3010

Page 2: Estimation

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

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

Page 3: Estimation

©J. C. Huang 2005 Estimation Slide 3 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.

Page 4: Estimation

©J. C. Huang 2005 Estimation Slide 4 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).

Page 5: Estimation

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

Major Factors

Major factors that influence software cost:

• product size and complexity

• programmer ability

• available time

• required reliability

• level of technology

Page 6: Estimation

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

Three Approaches

Estimation can be done by using

• experience and historical data

• decomposition techniques

• empirical models

Page 7: Estimation

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

Decomposition Techniques

To obtain an estimation, we can decompose the problem to be solved, or decompose the process.

Page 8: Estimation

©J. C. Huang 2005 Estimation Slide 8 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.

Page 9: Estimation

©J. C. Huang 2005 Estimation Slide 9 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.

Page 10: Estimation

©J. C. Huang 2005 Estimation Slide 10 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.

Page 11: Estimation

©J. C. Huang 2005 Estimation Slide 11 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.

Page 12: Estimation

©J. C. Huang 2005 Estimation Slide 12 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.

Page 13: Estimation

©J. C. Huang 2005 Estimation Slide 13 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

Page 14: Estimation

©J. C. Huang 2005 Estimation Slide 14 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)

Page 15: Estimation

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

COCOMO

The COnstructive COst MOdel

It is LOC-based.

There are three models:

basic,

intermediate, and

advanced.

Page 16: Estimation

©J. C. Huang 2005 Estimation Slide 16 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.

Page 17: Estimation

©J. C. Huang 2005 Estimation Slide 17 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:

Page 18: Estimation

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

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

The COCOMO Model (continued)

Page 19: Estimation

©J. C. Huang 2005 Estimation Slide 19 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

Page 20: Estimation

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

The COCOMO (continued)

type of project a b

organic

semi-detached

embedded

3.2

3.0

2.8

1.05

1.12

1.20

Page 21: Estimation

©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

(ref. www.qsm.com)

Page 22: Estimation

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

The Software EquationE = ((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

Page 23: Estimation

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

Major Factors

Major factors that influence software cost:

• product size and complexity

• programmer ability

• available time

• required reliability

• level of technology

Page 24: Estimation

©J. C. Huang 2005 Estimation Slide 24 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.

Page 25: Estimation

©J. C. Huang 2005 Estimation Slide 25 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

Page 26: Estimation

©J. C. Huang 2005 Estimation Slide 26 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

Page 27: Estimation

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

0 1 2 3 410

20

30

40

50

60

70

80

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

system

utility

applicationDol

lars

per

line

of s

ourc

e co

de

Software size in 1,000 lines of code

1 10 100 1000 10000

Page 28: Estimation

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

0 1 2 3 40

10

20

30

40

50

60

1 10 100 1000 10000

Software size in 1,000 lines of source code

Requ

ired

dev

elop

men

t ti

me

in m

onth

s

application

utility

system

Required development time vs. size

Page 29: Estimation

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

0 1 2 3 40,00

0,01

0,02

0,03

1 10 100 1000 10000 0

Software size in 1,000 lines of source code

Line

s of

cod

e pe

r pr

gram

mer

per

day

application

utility

system

(11.8)

(5.8)

(2.8)

30

20

10

0

Productivity vs. size

Page 30: Estimation

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

Major Factors

Major factors that influence software cost:

• product size and complexity

• programmer ability

• available time

• required reliability

• level of technology

Page 31: Estimation

©J. C. Huang 2005 Estimation Slide 31 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

Page 32: Estimation

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

Programmer’s AbilityVariations in programmers abilities

worst/best ratio

performance measure program #1 program # 2

debugging hours

CPU time

coding hours

program size

run time

28:1

8:1

16:1

6:1

5:1

26:1

11:1

25:1

5:1

13:1

Page 33: Estimation

©J. C. Huang 2005 Estimation Slide 33 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.

Page 34: Estimation

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

Available Time

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

Page 35: Estimation

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

Available Time (continued)

According to Putnam, a schedule compression of 0.86 will increase required staff by a factor of 1.82.

Page 36: Estimation

©J. C. Huang 2005 Estimation Slide 36 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.

Page 37: Estimation

©J. C. Huang 2005 Estimation Slide 37 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

Page 38: Estimation

©J. C. Huang 2005 Estimation Slide 38 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

Page 39: Estimation

©J. C. Huang 2005 Estimation Slide 39 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

Page 40: Estimation

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

COCOMO Effort Multipliers (continued)

Project attributes

Use of modern programming practices1.24 to 0.82

Use of software tools 1.24 to 0.83

Required development schedule

1.23 to 1.00

Page 41: Estimation

©J. C. Huang 2005 Estimation Slide 41 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.

Page 42: Estimation

©J. C. Huang 2005 Estimation Slide 42 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:

Page 43: Estimation

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

Staffing-Level Estimation (continued)

FSP = PM(0.15Tdev+0.7t

0.25(Tdev)2 )e

- (0.15Tdev+0.7t)2

0.5(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.

Page 44: Estimation

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

FSP

t

Rayleigh curve

Staffing-Level Estimation (continued)

Page 45: Estimation

©J. C. Huang 2005 Estimation Slide 45 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