Estimation – Software Projects project planning - what to do project control make sure it’s done...

Preview:

Citation preview

Estimation – Software Projects

project planning - what to doproject control make sure it’s done rightestimation of detailed system design

Planning Process

• determine requirements from objectives

• specify work activities

• plan project organization

• develop schedule

• develop resource plan and budget

• establish control mechanisms

each project unique

Determine Requirements

Specify work activities

STATEMENT OF WORK:– product descriptions– constraints– schedule requirements– budget limits– roles & responsibilities

WORK DEFINITION

• once objectives set,

TRANSLATE INTO WORK ELEMENTS

• what needs to be done– easy to overlook some, or duplicate

• WORK BREAKDOWN STRUCTURE– divide project into major work

categories• subdivide

Work Breakdown Structure

w hat's been doneP A C K A G E

needs doingP A C K A G E

libraryTA S K

searchP A C K A G E

internetTA S K

researchC A TE G O R Y

w riteP A C K A G E

w ritingC A TE G O R Y

run offP A C K A G E

printingC A TE G O R Y

w rite paperP R O JE C T

Work Breakdown Structure• level 1 - overall project

• level 2 - category– major project sub-element

• level 3 - task– Sub-element of category

• level x - subtask

• level bottom - WORK PACKAGE– specific activity

Detailed Task List

• WBS can be focused on– PRODUCT– FUNCTION– etc.

• when work packages identified,– estimate requirements by resource– WHAT IS NEEDED– WHEN– WHAT MUST PRECEDE

Work Breakdown Structure

• needs to be checked, approved

• provides– good definition of work– how long it will take– resources required– estimated costs

• planning & control– assignments, budget, basis for control

Work Packages• chunk of required work

• relatively small cost and short duration

• include– summary of work– inputs required (predecessors)– manager responsible– product specifications– resources required (including budget, dates)– deliverables

list of work packages(activities)

system designactivity predecessor timeA2 identify req’d info A1 10 daysA31 basic software A2 3 daysA32 data access req’d A2 1 dayA33 vendor softwareA2 1 day

Work Packages

• need to identify start and finish events for each work package

• related tasks without definable end results (overhead & management; inspection; maintenance) should be included as task-oriented work packages for COST purposes

Project Organization

• identify resources required by work package

• RESPONSIBILITY MATRIX– which functions do what work packages– cost account structure

• start & finish date• budget• responsibilities

Project Management System

• lists activities on one axis

• lists people on other axis

• shows who is– primarily responsible– also involved– has approval authority– must be notified

Scheduling

• BASIS for – RESOURCE ALLOCATION– ESTIMATED COST– plan for monitoring & control

• EVENTS or MILESTONES– when activity completed (or started)– INTERFACE EVENT

• when responsibility passes

Kinds of Schedules

• project schedules– project master schedule - top

management– overview rather than detail

• task schedules– specific activities required– more detail

Resource Plans & Budgets

• Activities often compete for the same resources– hire more– reschedule

• Resource plans show critical resource schedules– bottlenecks around which schedule is

built

Charts

visual aids• Gantt Charts

– plan - activities by time (work in outline)– implement - fill in as work done– doesn’t show relationships well– very good at seeing where things are (IF

ACCURATE)

• Expense Charts - cumulatively graph $ spent

Recap

• Planning - key to accurate bidding• need to know what it will cost in order to know how to

price• need to know resources required, complex projects take

a long time• MIS projects

– activities, predecessor relations, resource use

Software Estimation

The Mythical Man-Month:

Essays on Software Engineering

Frederick P. Brooks, Jr. (U N. Carolina)Addison-Wesley: 1975

Programming Products

• Program– usable by author

• Programming System– usable by anyone

• Programming Product– tested, documented, maintained– 3 times the effort of a program

• Programming System Product

causes of project failure

• LACK OF CALENDAR TIME the most common– estimating techniques are poor– assume that effort = progress

• you can’t just throw people at a problem

– poor monitoring of progress

• SCHEDULING– tendency to assume all will go well

impact of adding people

• partitionable project– marginal contribution declines

• non-partitionable project– no benefit at all from adding people

• complex interactionsmust separately coordinate each task with all others

– first few have declining marginal contribution– after some number, adding people slows down

project

Software Project Activities

• testing is the activity most difficult to predict– planning 1/3 of project– coding 1/6 of project– component testing 1/4 of project– system testing 1/4 of project

• most projects are on schedule UNTIL TESTING• Brooks’s Law: Adding manpower

to a late project makes it later

programmer productivity

• there is wide variation in productivity between good and fair programmers

• Brute force failures– costly OS/360 TSS– slow Exec 8 SAGE– inefficient Scope 6600– nonintegrated systems Multics

impact of adding programmers

• if a 200 person project has its best 25 people as managers– fire the 175– make the 25 managers programmers

• shouldn’t have more than 10 people on a team• OS/360 had 1000 working on it, 5000 man-years• small teams infeasible; use surgical teams

surgical team

• surgeon chief programmer• copilot share thinking, evaluation• administrator boring details• editor references, documentation• secretaries (2)• program clerk technical records• toolsmith editing, debugging• tester develop test cases• language lawyerexpert on language

conceptual integrity

• better to reflect one set of design ideas than to add independent and uncoordinated features & improvements

• purpose of programming system is to make computer easy to use

• simplicity & straightforwardness come from conceptual integrity

conceptual integrity example

• OS/360– architect manager: said his 10 person team could write

specifications in 10 months (3 months late)– control program manager: his 150 people could get it done in

7 months, & if his people didn’t do this, they would have nothing to do

– architect manager: control program people would take 10 months, do a poor job

– Brooks gave to control program group– took 10 months, plus added year to debugging

estimating programming time• duration is exponential (bigger jobs take more than

proportionally longer)– analogous to sprint 100 yards, running 1 mile

effort = K x (number of instructions)1.5

• one manager noted programming taking twice as long as estimate– only getting 20 hours of work/week– machine down, divert to emergencies,

meetings, paperwork, sick

programming estimation

• the more interactions, the less productivity– interaction = coordination with others

• high level languages increase productivity– now tools should almost eliminate the

programming component, but there are other activities (the more unpredictable ones)

(prototyping)

• in most projects, the first system built is barely usable

• PLAN THE SYSTEM FOR CHANGE– modularization– subroutining– interfaces– documentation of interfaces– high-level languages

software estimation

Charles R. SymonsSoftware Sizing and Estimating: Mk II FPA

Wiley [1991]

software production cycle

• DESIGN

• DEVELOPMENT

• production not hard

• MAINTENANCE

recognized as a difficult task

software production cycle

• SYSTEM SIZE a variable in – DESIGN– DEVELOPMENT– MAINTENANCE

• components of system size– amount of information processed– technical requirements– performance drivers (objectives)

objectives

• COST minimization

• TIME minimization

• QUALITY assure that product

performs to specifications

size measures

• source lines of code+ concrete measure- what lines?- logical or physical?- housekeeping?- different across languages

• most commonly used• some economy of scale

Albrecht’s Function Point Analysis MethodAIMS

– consistent measure– meaningful to end user

• function points should be easier to understand than lines of code

– rules easy to apply– Can estimate from requirements

specification– independent of technology used

Albrecht’s system

• count – external user inputs– enquiries– outputs– master files delivered (internal & external)

• get points for every useful activityfunction points=

information processing size x technical complexity adjustment

Albrecht’s System

complexity tables– data elements referenced

• 1-4• 5-15• 16 or more

– file types referenced• 0 or 1• 2• 3 or more

table of SIMPLE, AVERAGE, COMPLEX

Albrecht complexity

1-4 data 5-15 data 16+ data

0 or 1 filetypes

SIMPLE SIMPLE AVERAGE

2 filetypes

SIMPLE AVERAGE COMPLEX

3+ filetypes

AVERAGE COMPLEX COMPLEX

Albrecht functional multipliers

SIMPLE AVERAGE COMPLEX

external input x 3 x 4 x 6external output x 4 x 5 x 7logical internal file x 7 x 10 x 15ext interface file x 5 x 7 x 10external inquiry x 3 x 4 x 6

add up, get total unadjusted function points

Albrecht Technical Complexity Adjustment14 general application characteristics

data communications on-line update distributed functionscomplex processing performance re-useabilityheavily used configuration installation ease transaction rateoperational ease on-line data entry multiple sitesend user efficiency facilitate change

not present = 0 average influence = 3

insignificant influence = 1 significant influence = 4

moderate influence = 2 strong influence = 5

TCA = 0.65+(0.01x(total degree of influence))

Symons’ complaints

• Albrecht method– alternative counting practices– weights used are questionable– large systems under-weighted

• (XEROX 1985: rapid drop in productivity with increasing system size)

– range of points too narrow

• but MUCH BETTER THAN SLOC

Mk II Function Point Analysis• modification of Albrecht• use same Technical Complexity

Adjustment• extend general application

characteristics to 19 or more• weights adjusted• Information Processing Size changed

the most

logical transactions

logical transaction = – unique input/process/output

combination triggered by unique event of interest to the user

– or need to retrieve information• create a customer• update an account• enquiry• produce monthly summary report

unadjusted function points

UFPs = WI x # input data element types

+ WE x # entity types referenced

+ WO x # output data element types

weights determined by calibrationdetermine UFPs for system by adding UFPs for all system

logical transactionsassumes work directly proportional to # of data elements;size of process proportional to # data entries;weights meaningful, obtainable

complexity adjustment

Albrecht’s method with 2 modifications:– extend general application list to 19

• interfaces to other applications• special security features• direct access requirement for third parties• special user training facilities• documentation requirements

TCA = 0.65 + C x (total degree of influence)where C is obtained by calibration

calibration

by CALIBRATION Symons means fit the company’s data

regressindustry averages:

WI 0.58

WE 1.66

WO 0.26

Mk II FPA summary

• obtain general understanding of the system• construct a model of primary entities• identify logical transactions• score degree of influence of all 19 general

application characteristics (plus client specific)• obtain total project work-hours, calibrate• calculate function points

comparison

SLOC Albrecht Mk II FPA

accepted standard no yes yesclarity potentially some subjective

objectivestructured? no no yeseasy to use? yes no noautomatable? yes no yesuse for estimating? sometimes yes yes

Estimation Example

SLOCFunction Point

Source Lines of Code

• NEED DATABASE of past experienceAVERAGES effort 33 months

cost $361 (thousand)

documentation 1194 pages

errors 201

defects 52

people 4

KLOC 20.543

Implementing LOC

• Estimate structured lines of code10,000

• averages proportional to LOC 10/20.543 = 0.487 effort 33 months 0.487 = 16cost $361 thou 0.487 = $177,000documentation 1194 pages 0.487 = 581 pp.errors201 0.487 = 98defects 52 0.487 = 25people 4 0.487 = 2 people

Function Point Calculation

1 - get count-totalnumber of features times complexity

2 - get Fi

rate 14 factors (0-5), total3 - FP = count-total [0.65 + 0.01 Fi ]

4 - multiply historical averages (623) per FP by this FP

1 - get count total

Complexity Weightingsimple average complex

product# user inputs __ 3 + __ 4 + __ 6 = ___# user outputs __ 4 + __ 5 + __ 7

= ___ # user inquiries __ 3 + __ 4 + __ 6 = ___# files __ 7 + __ 10+__ 15 = ___# external interfaces __ 5 + __ 7 + __ 10

= ___

1 - get count-total

Bank accounts record system involving36 user inputs simple complexity5 user outputs average complexity20 user inquiries simple complexity40 files accessed simple complexity3 external interfaces average complexity

1 - get count-total

Complexity Weightingsimple average complex product

36 user inputs 36 3 + __ 4 + __ 6 = 108

5 user outputs __ 4 + 5 5 + __ 7 = 25

20 user inquiries 20 3 + __ 4 + __ 6 = 6040 files 40 7 + __ 10+__ 15 = 2803 external interfaces __ 5 + 3 7 + __ 10 =

21TOTAL 494

2 - get Fi

F1 require reliable backup & recovery? Significant 4F2 data communications required? Moderate 2F3 distributed processing functions? Significant 4F4 performance critical? Average 3F5 run on existing, heavily utilized environment? Essential 5F6 require on-line data entry? Essential 5F7 on-line data entry from multiple operations? Incidental 1F8 master files updated on-line? No influence 0F9 inputs, outputs, files, or inquiries complex? Incidental 1F10 internal processing complex? Incidental 1F11 code designed to be reusable? Average 3F12 conversion and installation included in the design?

Average 3F13 system designed for multiple installations in different orgs? No

influence 0F14 application designed to facilitate change and ease of use? No

influence 0 = 32

3- Calculate FP

FP = count-total [0.65 + 0.01 Fi ]

= 494 [0.65 + 0.01 32 ] = 479.18

4- Multiply by Historical

• Estimated FP 479.18• averages proportional to avg 479.18/623 =

0.77effort 33 months 0.77 = 25.4cost $361 thou 0.77 =$278,000documentation 1194 pages 0.77 = 918 pp.errors 201 0.77 = 155defects 52 0.77 = 40people 4 0.77 = 3 people

Scheduling

• “Coding is 90% finished half of the coding time”• “Debugging is 99% complete most of the time”• MILESTONES: concrete eventsstudies of government projectsestimates carefully updated every 2 weeks before activity

starts rarely changeduring activity, overestimates dropunderestimates don’t change until into activity

Control

• When delay is first noticed,the tendency is to not report it

• STATUS INFORMATION

what is going on• ACTION INFORMATION

learning this causes something to be done

• KEY: know when which case applies

Summary

• Estimation of duration & cost key to sound project decision making

• Estimating software development very difficult– Can improve by

• Keeping records• Using productivity-enhancing methods• Use more off-the-shelf software

– Estimation methods can become accurate if systematically applied

Recommended