Software Project Cost Estimation

31
Software Project Software Project Cost Estimation Cost Estimation Using Using Function Points Function Points By By Drew Tkac Drew Tkac

Transcript of Software Project Cost Estimation

Page 1: Software Project Cost Estimation

Software Project Cost Software Project Cost EstimationEstimation

UsingUsingFunction PointsFunction Points

By By Drew TkacDrew Tkac

Page 2: Software Project Cost Estimation

Program Estimation ExampleProgram Estimation Example• Phone order company thinks they need a customer /

order taking program.• New customer contact information is entered into data

base controlled by the program. Fields are:– First Name– Last Name– Street Address– City– State– Zip Code– Phone Number– Initial Contact Date

Page 3: Software Project Cost Estimation

Program Estimation ExampleProgram Estimation Example• Inventory data base, controlled by another program, is referenced

for orders.– Stock Number– Quantity in Stock– Selling Price

• Customer order data base is maintained by the program. Fields are:– First Name– Last Name– Stock Number of Item Purchased– Quantity Purchased– Date of Purchase

• All records within the program may be created, modified or deleted.• How long will it take and how much will it cost to write

this program?

Page 4: Software Project Cost Estimation

The Point of Function Points….The Point of Function Points….

• A unit of software work• Generated during the requirements stage

for size and effort estimation.• Worst estimation technique, ahead of all

the others.• Something to count at the requirements

stage as opposed to lines of code.• Calibrated to type of software and past

staff performance.

Page 5: Software Project Cost Estimation

Function Point Users GroupFunction Point Users Group• The standard for function point counting is

International Function Point Users Group (IFPUG) www.ifpug.org

• Offer classes, seminars and certification.• Maintain data bases and references.

Page 6: Software Project Cost Estimation

Useful Regardless of Software Useful Regardless of Software ModelModel

Requirements Design Implementation Verification Maintenance

Adaptive Predictive

Big GiantRequirements

Bite SizedRequirements Design Implementation Verification Maintenance

Predictive

Adaptive

Page 7: Software Project Cost Estimation

Function Points Useful to….Function Points Useful to….• The business / department

– Used to determine ROI– What features can be compromised?

• The technical staff / consultant– Used to determine staffing requirements– Used for performance review– Used to establish schedule– Used to estimate cost

Page 8: Software Project Cost Estimation

Function Points ProvideFunction Points ProvideAn EstimateAn Estimate

• How long does it take you to get here from home?

• Normal conditions: 10 min.• Could it ever be 1 min?• Could it ever be 20 min?• Could it ever not happen?• Estimation – Has a probability attached – 98% of

the time it takes 10 min +/- 2 min

Page 9: Software Project Cost Estimation

Software Cost Estimates:Software Cost Estimates:Black Art or Real Science?Black Art or Real Science?

• Currently typical software organizations are struggling to avoid estimates that are incorrect by 100% or more.

• Most common estimation technique - compare new project with past project based on personal memory. Guessing, intuition and unstructured expert judgment are used for 60% to 85% of estimates.

Page 10: Software Project Cost Estimation

Results of Past ProjectsResults of Past Projects

Page 11: Software Project Cost Estimation

Some Past Project SizesSome Past Project Sizes

Page 12: Software Project Cost Estimation

Performing Function Point Performing Function Point AnalysisAnalysis

1. Start with the project requirements.2. Count function points. 3. Convert function points to lines of code based

on programming language.4. Convert lines of code to programmer hours

based on project type, and performance history.

5. Convert programmer hours to dollars using average values or staff salaries.

Page 13: Software Project Cost Estimation

Characteristics of a SoftwareProgram

Input Output

External Files

Process

Internal Files

Program

Page 14: Software Project Cost Estimation

What to Count?What to Count?

• External Inputs (EI)• External Outputs (EO)• External Queries (EQ)• Internal Logical File (ILF)• External Interface File (EIF)

Page 15: Software Project Cost Estimation

External Inputs (EI)External Inputs (EI)• Screens, forms, dialog boxes, or control signals

through which an end user or other program adds, deletes, or changes program data.

• Grouped logically.• Number of data elements determine the logical

inputs complexity. (Data element type DET)• Include any input that has a unique format or

unique processing.

Page 16: Software Project Cost Estimation

External Input ExampleExternal Input Example

NameStreet Address

Zip

Phone

Part Number

Part Description

Program

1 External Input with 4 DET

1 External Input with 2 DET

Page 17: Software Project Cost Estimation

External Outputs (EO)External Outputs (EO)• Screens, reports, graphs, or control

signals that the program generates for use by an end user or other program.

• Grouped logically.• Number of data elements determine an

outputs complexity. (DET)• They include any output that has a

different format or different processing than other types.

Page 18: Software Project Cost Estimation

External Output ExampleExternal Output Example

Program

1 External Output with 4 DET

First NameLast Name

Date of Purchase

Item Purchased

Page 19: Software Project Cost Estimation

External Queries (EQ)External Queries (EQ)• Input/output combinations in which an

input results in an immediate, simple output.

• Receive data directly from a data base with little formatting.

Page 20: Software Project Cost Estimation

Internal Logical Files (ILF)Internal Logical Files (ILF)• Major logical groups of end user data that

is completely controlled by the program.• Number of data elements control

complexity.• Single table in a data base or a data file

Page 21: Software Project Cost Estimation

External Interface Files (EIF)External Interface Files (EIF)• Files controlled by another program with

which the program interacts.• Major logical group of data.• Number of data elements control

complexity.

Page 22: Software Project Cost Estimation

Tally the Points, Accounting Tally the Points, Accounting WorkWork

• Each EI, EO, EQ, EIF, and ILF have values attached.

• Complexities for each are considered.• Additional factors are applied to produce

adjusted function points.• Can be cross checked to other methods.• Tables are available via IFPUG

Page 23: Software Project Cost Estimation

The Dutch MethodThe Dutch Method• Works well early in the project• High degree of uncertainty• Best applied to data base related projects• Great to determine if the project is worth

taking the next step.• Developed by Netherlands Software

Metrics Association (NESMA)• Formula: Function Point Count = (35 X Internal

Logical Files) + (15 X External Interface Files)

Page 24: Software Project Cost Estimation

Convert Function Points to Lines Convert Function Points to Lines of Codeof Code

Page 25: Software Project Cost Estimation

Lines of Code per Staff MonthLines of Code per Staff Month

Page 26: Software Project Cost Estimation

Diseconomies of ScaleDiseconomies of Scale

Page 27: Software Project Cost Estimation

Convert Staff Hours to CostConvert Staff Hours to CostProgrammer’s SalariesProgrammer’s Salaries

Haskell $198,000

Erlang $99,000

Objective-C $82,000

Pascal $81,000

C++ $80,000

SmallTalk $80,000

TCL $80,000

C# $79,000

Java $79,000

Python $78,000

Perl $77,000

Ruby $74,000

COBOL $73,000

JavaScript $72,000

ColdFusion $64,000

Delphi $64,000

PHP $64,000

Visual Basic $64,000

C $60,000

Page 28: Software Project Cost Estimation

Our ExampleOur ExampleCalculate Function PointsCalculate Function Points

• Internal Logical Files– Customer Contact File– Customer Purchase File

• External Interface Files- Inventory Data Base

• Using the Dutch Method:FP = (35 X 2) + (15 X 1) = 85 FP’s

Page 29: Software Project Cost Estimation

Our ExampleOur ExampleConvert Function Points to Lines of CodeConvert Function Points to Lines of Code

• Choose the programming language that requires the fewest number of lines of code to implement a function point

• Consider cost of a programmer for this language and availability

• Consider maintenance factors• My choice was: Visual Basic • Example program: 32 lines of code / function

point or 32 X 85 = 2720 LOC

Page 30: Software Project Cost Estimation

Our ExampleOur ExampleConvert Lines of Code to CostConvert Lines of Code to Cost

• VB Programmers $64K / year X 1.25 benefits = $80K / 12 months = $6667/mo

• Lines of code per month for a business system, medium performance, small project = 3000

• 2720 Lines of code / 3000 Lines of code per month = 0.9 Months or $6045

Page 31: Software Project Cost Estimation

ReferencesReferencesGarmus, David and Herron, David, Function Point Analysis,

ISBN-0-201-69944-3

McConnell, Steve, Software Estimation, ISBN10: 0-7356-0535-1

International Function Point Users Group

Brooks, Fred, The Mythical Man-Month: Essays on Software Engineering