software project management (intro) introduction to estimating development effort

28
Software project management (intro) Software project management (intro) Introduction to Introduction to estimating development estimating development effort effort

Post on 15-Jan-2016

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software project management (intro) Introduction to estimating development effort

Software project management (intro)Software project management (intro)

Introduction to estimating Introduction to estimating development effortdevelopment effort

Page 2: Software project management (intro) Introduction to estimating development effort

What makes a successful What makes a successful project?project?

Delivering:Delivering: agreed functionalityagreed functionality on timeon time at the agreed costat the agreed cost with the required with the required

qualityquality

Stages:Stages:

1. set targets1. set targets

2. Attempt to achieve 2. Attempt to achieve targetstargets

BUT what if the targets are not achievable?

Page 3: Software project management (intro) Introduction to estimating development effort

Over and under-estimatingOver and under-estimating

Parkinson’s Law: Parkinson’s Law: ‘Work expands to fill ‘Work expands to fill the time available’the time available’

An over-estimate is An over-estimate is likely to cause likely to cause project to take project to take longer than it would longer than it would otherwiseotherwise

Weinberg’s Zeroth Weinberg’s Zeroth Law of reliability: ‘a Law of reliability: ‘a software project that software project that does not have to does not have to meet a reliability meet a reliability requirement can requirement can meet any other meet any other requirement’requirement’

Page 4: Software project management (intro) Introduction to estimating development effort

A taxonomy of estimating A taxonomy of estimating methodsmethods

Expert opinion - just guessing?Expert opinion - just guessing?

Bottom-up - activity basedBottom-up - activity based

Parametric e.g. function pointsParametric e.g. function points

AnalogyAnalogy

artificial neural networks - a view of the artificial neural networks - a view of the future?future?

Parkinson and ‘price to win’Parkinson and ‘price to win’

Page 5: Software project management (intro) Introduction to estimating development effort

Heemstra and Kusters surveyHeemstra and Kusters survey

Expert judgement Expert judgement 25.5%25.5%

Analogy Analogy 60.8%60.8%

‘‘Capacity problem’Capacity problem’ 20.8%20.8%

Price-to-winPrice-to-win 8.9%8.9%

Parametric modelsParametric models 13.7%13.7%

Page 6: Software project management (intro) Introduction to estimating development effort

Heemstra and Kusters contd.Heemstra and Kusters contd.

Only 50% kept project data on past Only 50% kept project data on past projects - but 60.8% used analogy!projects - but 60.8% used analogy!

35% did not produce estimates35% did not produce estimates

62% used methods based on intuition - 62% used methods based on intuition - only 16% used formalized methodsonly 16% used formalized methods

Function point users produced worse Function point users produced worse estimates!estimates!

Page 7: Software project management (intro) Introduction to estimating development effort

Top-down versus Bottom-upTop-down versus Bottom-up

Top-downTop-down produce overall estimate based on project produce overall estimate based on project

cost driverscost drivers based on past project databased on past project data

Bottom-upBottom-up use when no past project datause when no past project data

Page 8: Software project management (intro) Introduction to estimating development effort

Top-down estimatesTop-down estimates

Produce overall Produce overall estimate using effort estimate using effort driver(s)driver(s)

distribute proportions distribute proportions of overall estimate to of overall estimate to componentscomponentsdesign code

overall project

test

Estimate100 days

30%i.e.30 days

30%i.e.30 days

40%i.e. 40 days

Page 9: Software project management (intro) Introduction to estimating development effort

Bottom-up estimatingBottom-up estimating

1. Break project into smaller and smaller 1. Break project into smaller and smaller componentscomponents

[2. Stop when you get to what one person [2. Stop when you get to what one person can do in one/two weeks]can do in one/two weeks]

3. Estimate costs for the lowest level 3. Estimate costs for the lowest level activitiesactivities

4. At each higher level calculate estimate by 4. At each higher level calculate estimate by adding estimates for lower levelsadding estimates for lower levels

Page 10: Software project management (intro) Introduction to estimating development effort

Parametric modelsParametric models

COCOMO (lines of code) and function COCOMO (lines of code) and function points examples of thesepoints examples of these

Problem with COCOMO etc:Problem with COCOMO etc:

guess algorithm estimate

but what is desired issystem

characteristicalgorithm estimate

Page 11: Software project management (intro) Introduction to estimating development effort

Parametric models - continuedParametric models - continued

Examples of system characteristicsExamples of system characteristics no of screens x 4 hoursno of screens x 4 hours no of reports x 2 daysno of reports x 2 days no of entity types x 2 daysno of entity types x 2 days

the quantitative relationship between the the quantitative relationship between the input and output products of a process can input and output products of a process can be used as the basis of a parametric be used as the basis of a parametric modelmodel

Page 12: Software project management (intro) Introduction to estimating development effort

Parametric models - the need Parametric models - the need for historical datafor historical data

simplistic model for an estimate simplistic model for an estimate estimated effort = (system size) / productivityestimated effort = (system size) / productivity

e.g.e.g.system size = lines of codesystem size = lines of code

productivity = lines of code per dayproductivity = lines of code per day

productivity = (system size) / effortproductivity = (system size) / effort based on past projects based on past projects

Page 13: Software project management (intro) Introduction to estimating development effort

Parametric modelsParametric models

Some models focus on task or system Some models focus on task or system size e.g. Function Pointssize e.g. Function Points

FPs originally used to estimate Lines of FPs originally used to estimate Lines of Code, rather than effortCode, rather than effort

model

Number of file types

Numbers of input and output transaction types

‘systemsize’

Page 14: Software project management (intro) Introduction to estimating development effort

Parametric modelsParametric models

Other models focus on productivity: e.g. Other models focus on productivity: e.g. COCOMOCOCOMO

Lines of code (or FPs etc) an inputLines of code (or FPs etc) an input

Systemsize

Productivity factors

Estimated effort

Page 15: Software project management (intro) Introduction to estimating development effort

COCOMOCOCOMO

Based on industry productivity standards - Based on industry productivity standards - database is constantly updateddatabase is constantly updated

Allows an organization to benchmark its Allows an organization to benchmark its software development productivitysoftware development productivity

Page 16: Software project management (intro) Introduction to estimating development effort

Boehm simple modelBoehm simple model E = a * (KLOC)E = a * (KLOC)bb

D = 2.5 (E)D = 2.5 (E)dd

COCOMO – Examples COCOMO – Examples

S/W Project ab bb db

Organic 2.4 1.05 0.38

Semi detached 3.0 1.12 0.35

Embedded 3.6 1.20 0.32

Coefficient table

Page 17: Software project management (intro) Introduction to estimating development effort

Estimating by analogyEstimating by analogy

source cases

attribute values

effort

attribute values ?????

target case

attribute values

attribute values

attribute values

attribute values

attribute values

effort

effort

effort

effort

effortSelect case with closet attributevalues

Use effortfrom source as estimate

Page 18: Software project management (intro) Introduction to estimating development effort

Anchor + adjustmentAnchor + adjustment

You are here:how do you get to red cross?

FOREST

go to tall buildingby line of sight

pace distance on a bearingN

FOREST

Page 19: Software project management (intro) Introduction to estimating development effort

Estimating by analogyEstimating by analogy

Identify significant attributes (‘drivers’)Identify significant attributes (‘drivers’)

locate closest match amongst source locate closest match amongst source cases for targetcases for target

adjust for differences between source and adjust for differences between source and targettarget

Page 20: Software project management (intro) Introduction to estimating development effort

Machine assistance for source Machine assistance for source selection (ANGEL)selection (ANGEL)

Nu

mb

er

of

inp

uts

Number of outputs

target

Source A

Source B

Euclidean distance = sq root ((It - Is)2 + (Ot - Os)2 )

It-Is

Ot-Os

Page 21: Software project management (intro) Introduction to estimating development effort

Stages: identifyStages: identify

Significant features of the current projectSignificant features of the current project

previous project(s) with similar featuresprevious project(s) with similar features

differences between the current and differences between the current and previous projectsprevious projects

possible reasons for error (risk)possible reasons for error (risk)

measures to reduce uncertaintymeasures to reduce uncertainty

Page 22: Software project management (intro) Introduction to estimating development effort

System size: function pointsSystem size: function points

Based on work at IBM 1979 onwardsBased on work at IBM 1979 onwards Albrecht and Gaffney wanted to measure the Albrecht and Gaffney wanted to measure the

productivity independently of lines of codeproductivity independently of lines of code has now been developed by the International has now been developed by the International

FP User Group (which is US based)FP User Group (which is US based) Mark II FPs developed by Simons mainly Mark II FPs developed by Simons mainly

used in UKused in UK

Page 23: Software project management (intro) Introduction to estimating development effort

Albrecht function pointsAlbrecht function points

internal logical

files

external inputs external

outputs

external inquiries

external interface files

Page 24: Software project management (intro) Introduction to estimating development effort

Function points are based onFunction points are based on

2 ‘data function’ types2 ‘data function’ types internal logical files (ILF)internal logical files (ILF) external interface files (EIF)external interface files (EIF)

3 ‘transactional function’ types3 ‘transactional function’ types external inputs (EI)external inputs (EI) external outputs (EO)external outputs (EO) external inquiries (EQ)external inquiries (EQ)

Each occurrence is judged Each occurrence is judged simple,simple, averageaverage or or complexcomplex

Page 25: Software project management (intro) Introduction to estimating development effort

Albrecht FP weightingsAlbrecht FP weightings

TYPE SIMPLE AVERAGE COMPLEX

ILF (Internal Logical File) 7 10 15

EIF (External Interface File) 5 7 10

EI (External Input) 3 4 6

EO (External Output) 4 5 7

EQ (External Inquiry) 3 4 6

FP = count total * (0.65 + 0.01 * (Fi)); i = 1 to 14

Page 26: Software project management (intro) Introduction to estimating development effort

Taking Complexity into Taking Complexity into AccountAccount

1. Data communications2. Backup and recovery3. Distributed functions4. Heavily used configurations5. Transaction rate6. On-line data entry7. On-line update8. End user efficiency9. Complex processing10. Installation ease11.Operational ease12.Multiple sites13.Facilitate change14.Reusable

0 (not important) to5 (very important)

Factors are rated on a scale

Questions for Complexity Adjustment

Values

Page 27: Software project management (intro) Introduction to estimating development effort

Example: FP Example: FP ApproachApproach

number of user inputs number of user outputs number of user inquiries number of files number of ext.interfaces algorithms

measurement parameter

4 5 4 7 7 3

count

x x x x x x

count-total

= = = = = =

weight

complexity multiplier

feature points

0.25 p-m / FP = 120 p-m

40 25 12 4 4 60

160 125 48 28 28 180

569

.84

478

Page 28: Software project management (intro) Introduction to estimating development effort

Some conclusions: Some conclusions: how to review estimateshow to review estimates

Ask the following questions about an estimateAsk the following questions about an estimate

What are the task size drivers?What are the task size drivers?

What productivity rates have been used?What productivity rates have been used?

Is there an example of a previous project of Is there an example of a previous project of about the same size?about the same size?

Are there examples of where the productivity Are there examples of where the productivity rates used have actually been found?rates used have actually been found?