Software Effort Estimation: Software Development Project Management (CSC 4125)
Software Effort Estimation: Software Development Project Management (CSC 4125)
Software Effort Estimation: Software Development Project Management (CSC 4125)
MANAGEMENT
(CSC 4125)
1
What makes a successful project?
Delivering: Stages:
• agreed functionality 1. Set targets
• on time 2. Attempt to achieve targets
• at the agreed cost
• with the required quality
2
Introduction
• A successful project is one that is delivered on time,
within budget and with the required quality.
– Targets are set which the project manager then tries to
meet. This assumes that the targets are reasonable.
– Realistic estimates are therefore crucial
3
Difficulties in Software Estimation
• Complexity & invisibility of software
• Intensely human activities of system development
can not be treated in a purely mechanistic way
• Novel applications of software
• Changing technology
• Lack of homogeneity of project experience
• Political implications
• Subjective nature of estimating
4
Where Are Estimates Done?
Estimates are carried out at various stages of a software
project for a variety of reasons.
• Strategic Planning – to prioritize projects
• Feasibility Study – cost benefit analysis and justification of the project
• System Specification – refining estimates and to re-confirm viability of the
project
• Evaluation of Suppliers’ Proposals – where the bids are within our own
estimates, or we need to do in-house development, do we have expertise and
resources?
• Project Planning – refine and reconfirm– more detailed estimates of smaller
work components
– Accuracy of estimates should improve as project proceeds
– Some speculation(assumptions) about physical implementation may be
necessary for estimation
5
Problems with Over- and Under- Estimates
• Over Estimates: An over-estimate is likely to cause project to take longer than it
would otherwise. This can be explained by the application of two ‘laws’:
Parkinson’s Law – ‘work expands to fill the time available’, i.e., given an easy target staff
will work less hard (Does not apply universally, can be controlled)
Brooks’ Law – ‘adding more people on a late project makes it later’
8
Software Effort Estimation Techniques
• Parametric /Algorithmic Models e.g. Function Points
– use ‘effort drivers’ (FP, LOC etc.) representing characteristics
of the target system and implementation environment to
predict effort
• Expert Judgement – based on the advice of knowledgeable
staff
• Analogy – similar, completed projects are identified and their
actual effort is used as the basis of estimate ( case-based
reasoning, comparative)
• Parkinson – identifies the staff effort available to do a project
and uses that as an ‘estimate’
9
Software Effort Estimation Techniques (cont.)
• Price to Win – the ‘estimate’ is a figure that is
sufficiently low to win a contract
• Top-Down – an overall estimate is formulated for the
whole project and is then broken down into the effort
required for component tasks
• Bottom-Up – Component tasks are identified & sized
and these individual estimates are aggregated
Note: ‘Parkinson’ & ‘Price to win’ are not recommended
10
Bottom-Up Estimating
• Detailed Work Breakdown Structure (WBS) is made
– Break project into smaller and smaller components
• Effort for each bottom-level activity is estimated
• Estimates for bottom-level activities are added to get
estimates for upper-level activities until overall project
estimate is reached
• Identify all tasks that have to be done – so quite time-
consuming
• Appropriate at later, more detailed, stages of project planning
• Advisable when a project is completely novel or when no past
project data is available
11
Top-Down Approach
• Normally associated with parametric/algorithmic models
• Effort will be related mainly to variables associated to characteristics
of the final system (and development environment)
• After calculating the overall effort, proportions of that effort are
allocated to various activities
• Based on past project data
• Form of parametric model will normally be
effort = (system size) x (productivity rate)
• Important to distinguish between size models and effort models
– FP focuses on system size
– COCOMO focuses on productivity factors
• Combinations of top-down and bottom-up estimation may (and
should) be used
12
Top-Down Approach
Estimate • Produce overall estimate
100 days using effort driver(s)
overall
project • Distribute proportions of
overall estimate to
components
design code test
30% 30% 40%
i.e. i.e. i.e. 40 days
30 days 30 days
13
Expert Judgement
• Asking someone who is familiar with and
knowledgeable about the application area and the
technologies to provide an estimate.
• Particularly appropriate where existing code is to be
modified.
• Research shows that experts judgement in practice
tends to be based on analogy.
14
Estimating by Analogy
• Also called Case-Based Reasoning
• Estimators seek out projects that have been completed
(source cases) that have similar characteristics to the new
project (target case)
• Actual effort for the source cases can be used as a base
estimate for the target
• Estimator then identifies differences between the target and
the source and adjusts the base estimate to produce an
estimate for the new project
• Historical data must include all relevant dimensions included
in the model
15
Estimating by Analogy (cont.)
• Problem is to identify similarities and differences
between applications where you have a large
number of past projects to analyze.
• One method is to use shortest Euclidean distance to
identify the source case that is nearest the target
Euclidean Distance = square root of
[(target_parameter1 – source_parameter1)2 + … +
(target_parametern – source_parametern)2 ]
16
Calculating Euclidean Distance :
Example 5.1 (page 113)
• Say that the cases are being matched on the basis of
two parameters, the number of inputs to and the
number of outputs from the application to be built.
The new project is known to require 7 inputs and 15
outputs. One of the past cases, project A, has 8
inputs and 17 outputs. The Euclidean distance
between the source and the target is therefore the
square-root of (( 7 – 8)2 + (15 – 17)2 ), that is 2.24
17
Exercise 5.6 (Page 113)
18
Albrecht/IFPUG Function Points
• Top-Down method devised by Allan Albrecht and later adopted by
International Function Point User Group (IFPUG).
• Quantifies the functional size of programs independently of the programming
language.
– Based on functionality of the program
• Albrecht worked at IBM and needed a way of measuring the relative
productivity of different programming languages.
• Needed some way of measuring the size of an application without counting
lines of code.
• Identified five types of component or functionality in an information system.
• Counted occurrences of each type of functionality in order to get an indication
of the size of an information system.
19
Albrecht/IFPUG Function Points
Computer-based information systems comprise of five major
components or ‘External User Types’
1) External Input Types
– Input transaction through screens, forms, dialog boxes
– Input transactions which updates internal files
2) External Output Types
– Transaction where data is output to user by screens, reports, graphs
3) Logical Internal File Types
– Standing files used by the system. Made up of one or more record types
(group of data that is accessed together)
4) External Interface File Types
– Input and output passing through and from other computer applications
5) External Inquiry Types
– Transactions initiated by user which provide information, but do not update
internal files.
20
IFPUG Function Points Calculation
• Each instance of each external user type in the system
is identified
• Each component is then classified as having high,
average, or low complexity
• Counts of each external user type in each complexity
band are multiplied by specified weights and summed
to get Unadjusted FP (UFP) count
• Fourteen Technical Complexity Factors (TCFs) are then
applied in a formula to calculate the final FP count
21
FP Complexity Multipliers
22
Function Points Mark II
• Developed by Charles R. Symons
• Recommended by Central Computer and Telecommunications Agency
(CCTA)
• Used by a minority of FP specialists in the UK
• UFPs = Wi x (number of input data element types) +
We x (number of entity types referenced) +
Wo x (number of output data element types)
– where Wi, We, and Wo are weightings derived from previous projects or
industry averages (currently 0.58 for Wi, 1.66 for We, and 0.26 for Wo)
normalized so they add up to 2.5
24
Calculating Mark II FP: An Example
UFP =
25
COCOMO: COnstructive COst MOdel
• One of the most widely used software estimation models
• Developed by Barry W. Boehm
• Based on industry productivity standards - database is
constantly updated
• Allows an organization to benchmark its software
development productivity
• Predicts the effort and schedule for a software product
development based on inputs relating to the size of the
software and a number of cost drivers that affect productivity
• Refers to a group of models: COCOMO81, COCOMO II, …
26
COCOMO: COnstructive COst MOdel
• Basic Equation: effort = c x (size)k
• effort is measured in pm (‘person-months’)
1 pm = 152 units of working hours
• c and k are constants that depend on the type of system:
organic, semidetached, embedded
• Size is measured in ‘kdsi’ (Thousands of delivered source
code instructions)
Development Time = 2.5 x (effort)t
Where t = SLOC-dependent constant (0.32 – 0.38)
Required Number of people = effort/Development Time
27
COCOMO81 constants
System Type c k t
28
COCOMO applies to
Three classes of software projects
1) Organic projects
– Relatively small, simple software projects
– Small teams with good application experience work to a set
of less than rigid requirements
– Similar to the previously developed projects
– working with "less than rigid" requirements
– Requires little innovation
2) Semi-detached projects
– Intermediate (in size and complexity) software projects in
which teams with mixed experience levels must meet a mix
of rigid and less than rigid requirements
29
COCOMO applies to
Three classes of software projects
3) Embedded projects
– Software projects that must be developed within a set of
very "tight" hardware, software and operational
constraints
– Changes to system very costly
30
Summary
• Estimates are really management targets
• Collect as much information about previous projects as possible
• Use more that one method of estimating
• Top-down approaches will be used at the earlier stages of
project planning while bottom-up approaches will be more
prominent later on
• Be careful about using other people’s historical productivity
data as a basis for your estimates, especially if it comes from a
different environment
• Seek a range of options
• Document your method of doing estimates and record all your
assumptions
31