34
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Lecture 6: Estimation Techniques Lecturer: Hermann Lehner (http://sct.inf.ethz.ch/h ) Slides: Based on KSE06 – With kind permission of Peter Müller

Lecture 6: Estimation Techniques - Ethse.inf.ethz.ch/old/teaching/ss2007/252-0204-00/slides/06-softeng...Lecture 6: Estimation Techniques Lecturer: ... time available gnita pdl-Glo

Embed Size (px)

Citation preview

Software EngineeringProf. Dr. Bertrand Meyer

March 2007 – June 2007

Chair of Software Engineering

Lecture 6: Estimation Techniques

Lecturer: Hermann Lehner (http://sct.inf.ethz.ch/h)

Slides: Based on KSE06 – With kind permission of Peter Müller

Why estimations?

Based on estimations

ResourcesSchedule

Resource allocation

HiringMilestones

Duration

Costs

Price (bids)

Change requests

Project selection

Estimations in software projects

ResourcesSchedule

Costs

Effort

Mostly personnel cost (effort)Travel, trainingHardware, software

Duration is essentially effort / resources

Overview

Estimation TechniquesEmpirical EstimationsAlgorithmical Estimations

Estimation Process

Estimation Exercise

How many passenger planes does Lufthansa have?Not counting regional subsidiaries

How can we approach this problem systematically?

Overview

Estimation TechniquesEmpirical EstimationsAlgorithmical Estimations

Estimation Process

Empirical estimation: Expert judgment

Estimate is based on experience and historical data

Involve experts inDevelopment techniquesApplication domain

Most common technique in practice

Top-down estimation

Estimation by analogyComparison with similar projectsAnalysis of differencesTypical example: SAP introduction

ProsQuicker and less expensive than other methodsCan be done early in the project

ConsUnderestimation of difficult technical problems likelyNo detailed justification of estimateBe aware of scalability problems!

Top-down estimation: Delphi method

More accurate than ordinary expert judgmentEliminates outliers

More expensive to produce

Step 1: Each expert submitsEstimateJustification

Step 3: Each expert submitsNew estimateJustification of deviation from average of previous estimates

Top-down estimation: Typical figures

Typical figures for software development

Analysis 20%Design 40%Implementation 15%Test 25%

Very helpful to validate estimations

Analysis

DesignImplementation

Test

Bottom-up estimation

Estimation by decompositionEstimating the effort for individual work packagesCost and accuracy depend on size of the work packages

ProsSee “cons” of top-down estimation

ConsUnderestimation because effort does not grow linearly (due to complexity, etc.)Underestimation of integration effortRequires initial system design

Program evaluation and review technique

Goal: Manage probabilities with simple statistics Approach: Ask several experts for three estimates

Optimistic, Likely (mode), and PessimisticImportant formulas

Mean M = ( O + 4 × L + P ) / 6Deviation V = ( P – O ) / 6

AssumptionsProject effort is normally distributed(more than 20 work packages)Work package efforts are statistically independent(ignores single underlying cause of delay)

Overview

Estimation TechniquesEmpirical EstimationsAlgorithmical Estimations

Estimation Process

Algorithmic estimation of software

Basic cost model

Size: Some measurement of the software sizeA: Constant factor that depends on

Organizational practicesType of software

B: Usually lies between 1 and 1.5X: Vector of cost factorsm: Adjustment multiplier

Effort = A × SizeB × m(X)

Cost models

Cost modelsDefine a way to determine the sizeDefine cost factors XProvide defaults for parameters A, B, m (based on hundreds of projects)

Important examplesFunction point analysisConstructive cost model (COCOMO)

Effort = A × SizeB × m(X)

Measuring size: Lines of code

Software size can be measured in lines of source codeMost commonly used metric

Difficult in early phases of the project (before design is known)

Reuse, make-or-buy decisions

Influenced heavily by choice of programming languageShould only be used indirectly

Function point analysis

Size is estimated based on requirements

FunctionExternal files

Internal files

Inputs

Outputs

Inquiries

Functions

InputsForms, dialogs, messages, XML documents

OutputsWeb pages, reports, graphs, messages, XML documents

Inquiries (input/output combinations)Simple web inputs, generally producing a single output

Logical internal files (controlled by the program)Tables, views or files in database

External files (controlled by other programs)Tables or files used from other systems or databases

Complexity of functions

Factor Simple Average Complex

Inputs 3 4 6

Outputs 4 5 7

Inquiries 3 4 6

Ext. files 7 10 15Int. files 5 7 10

Determine complexity of each function Weight each function according to complexity

Input Simple Average Complex

Data elements

1-5 6-10 >10

Checking Formal Formal, logical

Formal, logical, requires DB access

Cost factors

Data communicationsDistributed processing PerformanceHeavy useTransaction rateOnline data entryComplex interfaceOnline data update Complex processingReusability Installation ease Operational easeMultiple sites Facilitate change

Rate each element from 0 – 50: no influence1: insignificant influence2: moderate influence3: average influence4: significant influence5: strong influence

Technical complexity factorTCF = 0.65 + 0.01 × sumVaries between 0.65 and 1.35

Function point computation

Adjusted function points: FP = UFP × TCF

Determining effort and size

Empirical value for effortOr use a table

Empirical value for sizeHuge differences in productivity

Factor 10-20 between individual programmersFactor 4 between companies

Effort = FP1.4 / 150

Observation about software size

Consider a project that requires 10 Web pages, 15 reports, and 20 database tables

315 function points, if each item is medium complexityHow many lines of C code would it have?

About 32,000 linesWhat if you used Excel?

About 2,000 lines

Why do you think there are so many spreadsheets out there?

Function point analysis: Discussion

ProsBased on requirements (instead of code size)Can be applied in early project phasesCan be calibrated (for company, project type)Counting standards by “International Function Points User Group”Technology-independent

ConsEstimation of overall effort (not per phase)Tailored towards functional decomposition (rather than OO)Tailored towards information systemsNeeds calibration to produce reliable results

Estimation techniques: Discussion

Empirical studiesDo not show that uncalibrated algorithmic estimation is, in general, more accurateShow that algorithmic estimation is more accurate than experts who do not have important domain knowledge

Empirical EstimationAccurate if experts are experiencedExperts can be strongly biased (over-optimism)

Algorithmic EstimationVery accurate if model is calibratedCalibration is very difficult and expensiveEstimation is expensive

Other estimation strategies

Parkinson’s LawWork expands to fill the time available- Gold plating

Effort is determined by available resourcesImportant for team management

Pricing to winCost is estimated to whatever the customer is willing to spendCommon strategy to win projectsFeatures are negotiated later, constrained by agreed costsCosts are fixed, not requirements

Overview

Estimation TechniquesEmpirical EstimationsAlgorithmical Estimations

Estimation Process

Estimate types

Rough order of magnitude

-25 / +75%

Initial estimates

Budgetary

-10 / +25%

Decision making, response to proposals

Definitive

-5 / +10%

Project plan, proposals

Refine your estimates at each project stageRequirements document, system design, detailed design, working code

Estimating process

Establish objectives

Determine project details

Document

Generate effort estimate

Determine team size and duration

Select strategy and plan

Validate and finalize

Why? Accuracy? Audience?

Document assumptions

Different method, review

Duration = √EffortDuration = 3.0 × Effort1/3

(Effort in person months,Duration in months)Effort = Duration × Team Size

Estimators, type of validation, historic data

Estimation tips

• Avoid off-the-cuff estimates

• Allow time for the estimate, and plan it

• Use historic data• Use developer-based

estimates• Estimate by walkthrough• Estimate by categories

e.g. easy, medium, hard

• Estimate at a low level of detail

• Don’t omit common tasks (management; use checklists)

• Use differenttechniques and compare the results

• Change estimation practices as the project progresses

From effort to costs

Direct costs: Costs incurred for the benefit of a specific project

Salaries of project staffEquipment bought specifically for the projectTravel expenses

Indirect costs: Costs incurred for the joint benefit over multiple projects (“overhead”)

Accounting, quality assurance departmentLine managementRooms, electricity, heating

Unit costs

Projects have to budget forDirect costsA certain share of indirect costs

Budgets are usually determined by using unit costsUnit cost: Price per unit of a resourceLoaded rate: Including indirect costsUnloaded rate: Without indirect costs

ExamplesLoaded day rate for senior IT consultant: CHF 3.500Loaded day rate for internal developer: CHF 1.200

From costs to prices

The price is often based on the costsand a marginPrice = Costs / ( 1 - Margin )Example

Costs = CHF 1.000.000Margin = 5%Price = CHF 1.052.632

Price is influenced byMarket situationBusiness strategy

BACKUP