Cost Estimation

19
Cost Estimation

description

Cost Estimation. Problem. Our ability to realistically plan and schedule projects depends on our ability to estimate project costs and development efforts In order to come up with a reliable cost estimate, we need to have a firm grasp on the requirements, as well as our approach to meeting them - PowerPoint PPT Presentation

Transcript of Cost Estimation

Page 1: Cost Estimation

Cost Estimation

Page 2: Cost Estimation

Problem• Our ability to realistically plan and

schedule projects depends on our ability to estimate project costs and development efforts

• In order to come up with a reliable cost estimate, we need to have a firm grasp on the requirements, as well as our approach to meeting them

• Typically costs need to be estimated before these are fully understood

Page 3: Cost Estimation

Estimating uncertainty

Boehm 1981

Page 4: Cost Estimation

What are project costs?

• For most software projects, costs are:

• Hardware Costs

• Travel & Training costs

• Effort costs

Page 5: Cost Estimation

What are effort costs?

• Effort costs typically largest of the 3 types of costs, and the most difficult to estimate.

• Effort costs include:– Developer hours– Heating, power, space– Support staff; accountants, administrators, cleaners,

management– Networking and communication infrastructure– Central facilities such as rec room & library– Social security and employee benefits

Page 6: Cost Estimation

Effort cost estimation - Overhead

• Everything other than salaries

• OSU example: – 45% for benefits– 46% for “indirect” costs (space, infrastructure etc)

calculated on top of everything else

$1,000 +benefits ($450) + infrastructure ($667)

= $2,117

Page 7: Cost Estimation

Software cost estimation – Boehm (1981)

• Algorithmic cost modeling– Base estimate on project size (lines of code)

• Expert judgment– Ask others

• Estimation by analogy– Cost based on experience with similar projects

• Parkinson’s Law– Project time will expand to fill time available

• Pricing to win– Cost will be whatever customer is willing to pay

• Top-down estimation– Estimation based on function/object points

• Bottom-up estimation– Estimation based on components

Page 8: Cost Estimation

Aggravating & mitigating factors

• Market opportunity• Uncertainty/risks• Contractual terms• Requirements volatility• Financial health• Opportunity costs

Page 9: Cost Estimation

Cost drivers

• Software reliability • Size of application

database • Complexity • Analyst capability • Software engineering

capability • Applications experience • Virtual machine

experience • Programming language

expertise

• Performance requirements • Memory constraints • Volatility of virtual machine • Environment • Turnaround time • Use of software tools • Application of software

engineering methods • Required development

schedule

Page 10: Cost Estimation

Productivity metrics

• Lines of code– Simple, but not very meaningful metric– Easy to pad, affected by prog language– How to count revisions/debugging etc?

• Function points– Amount of useful code produced

(goals/requirements met)– Less volatile, more meaningful, not perfect

Page 11: Cost Estimation

Function points

Function points are computed by first calculating an unadjusted function point count (UFC). Counts are made for the following categories (Fenton, 1997):– External inputs – those items provided by the user that

describe distinct application-oriented data (such as file names and menu selections)

– External outputs – those items provided to the user that generate distinct application-oriented data (such as reports and messages, rather than the individual components of these)

– External inquiries – interactive inputs requiring a response – External files – machine-readable interfaces to other systems – Internal files – logical master files in the system

Each of these is then assessed for complexity and given a weighting from 3 (for simple external inputs) to 15 (for complex internal files).

Page 12: Cost Estimation

Unadjusted Function Point Count (UFC)

  Weighting Factor

Item Simple Average Complex

External inputs 3 4 6

External outputs 4 5 7

External inquiries 3 4 6

External files 7 10 15

Internal files 5 7 10

Each count is multiplied by its corresponding complexity weight and the results are summed to provide the UFC

Page 13: Cost Estimation

Object points

Similar to function points (used to estimate projects based heavily on reuse, scripting and adaptation of existing tools)

• Number of screens (simple x1, complex x2, difficult x3)

• Number of reports (simple x2, complex x5, difficult x8)• Number of custom modules written in languages like

Java/C x10

Page 14: Cost Estimation

Function points -> Lines of code

200-300 LOC/Function point in assembly

Multiplication factor by language

Programmer productivity?30-900 LOC/month!

Page 15: Cost Estimation

COCOMO II Model

• Supports spiral model of development• Supports component composition, reuse, customization• 4 sub-models:

– Application composition model – assumes system written with components, used for prototypes, development using scripts, db’s etc (object points)

– Early design model – After requirements, used during early stages of design (function points)

– Reuse model – Integrating and adapting reusable components (LOC)

– Post architecture model – More accurate method, once architecture has been designed (LOC)

Page 16: Cost Estimation

Application composition model

Used primarily to estimate cost of prototyping efforts

PM = (Application points x(1-%reuse/100)/ productivity

Productivity estimates from 4-50 object points/month, depending on experience and the availability/maturity of tools

Page 17: Cost Estimation

Early Design Model

Used once requirements are agreed to get going on an architectural design

PM=2.94 x Size^B x M

B=1.05-1.20

M=Proj characteristics

Page 18: Cost Estimation

Reuse model

• PM = (LOC needing to be adjusted X

% auto-generated)/productivity

Productivity ~ 2,400 LOC/Month

Page 19: Cost Estimation

Post-Architectural Model

• Organic projects - relatively small, simple projects with small teams and good application experience to less than rigid requirements. (A=2.4, B=1.05)

• Semi-detached projects - intermediate (in size and complexity) projects with mixed experience teams and a mix of requirements. (A=3.0, B=1.12)

• Embedded projects - software projects that must be developed within a set of tight hardware, software, and operational constraints. (A=3.6, B=1.20)

PM=A x Size^B x M