PPT

advertisement
Software Effort Estimation
Planning to Meet Schedule
Lewis Sykalski
5/01/2010
How Managers View Software Effort
Estimation
•
•
•
•
Nebulous
Vague
No correlation to reality
Why bother
Effects of Bad/No Estimation
• Underestimation can lead to Schedule/Cost Overruns:
– Diminished Confidence by upper management
– Customer upset
– Can affect schedules/cost downstream
• Overestimation can lead to Schedule/Cost Underruns:
– Adversely affect positioning
– De-motivator for employees
– More profitable opportunities passed over
Effect of Estimation
•
•
•
•
Clearer expectation of level of effort
Allows SPM to better allocate resources
Helps SPM account for change
Shows upper-level management that manager
has a plan
Abstract
Most managers today are unaware of established software
effort estimation methodologies or don’t account for
unforeseen consequences when using a method.
This paper attempts to reconcile this by surveying several effort
estimation approaches and gauging both the utility and
inherent pitfalls in each.
Additionally, this paper will present a refined method for
software effort estimation based on expert judgment and
describe benefits of using said method.
Current Methodologies
•
•
•
•
•
•
Expert Judgment
Consensus-based Estimation
Price-to-Win
Analogy Costing
Function Point Analysis
Algorithmic Models
– Cocomo
– SLIM
– PriceS
Expert Judgment
• Consulting one or more experts
• Experts leverage their own past experiences
or methods
• Typically arrive at task duration. Sometimes
size which can be converted to effort with
assumed productivity.
• Sometimes averaging occurs between multiple
experts’ estimates to smooth out results
Expert Judgment Utility
Advantages:
• Not much time/effort required
• Not conceptually difficult
Disadvantages:
• Not repeatable or explicit
• No consistent rationale for estimates
• Prone to error and very subjective
• If estimates do not match size of experts’ historical
experiences, estimate can be way off-based
• Experts with right experience could be hard to find
Consensus-based Estimation
• Logical extension of expert judgment
• Multiple experts/developers seek to reach consensus
on estimate
• Wideband-Delphi most popular:
– Short discussion of to define tasks
– Secret ballots
– Any deviations must be resolved by discussion & revote
• Planning Poker (Agile Method)
– Card representing duration of task is shown
– Resolution follows until consensus is reached
Consensus-Based Estimation Utility
Advantages:
• Same advantages as parent -- Expert Judgment
• Experts have discussed and agreed on the estimate
• Hidden tasks are often discovered
Disadvantages:
• Same disadvantages as parent – Expert Judgment
• Amount of time required to reach consensus
• “Anchoring”: When process is loosened and
someone affects groups predispositions. (e.g. “It
can’t be more than 20 days…”)
Price-to-Win
• Estimate is estimated at:
– whatever the optimum value is in order to win the
contract or
– whatever funds or time the customer has
available
Effort  EffortWIN
Price-to-Win Utility
Advantages:
• Win the contract
• Effort could contract to fill the difference?
• Not a lot of time required
Disadvantages:
• Considered poor practice
• Large discrepancies in effort anticipated and effort required –
might result in severe overruns
• Quality of the product may suffer in trying to reach deadline
• Profit loss?
Analogy Costing
• Estimates effort by analogizing to past
project(s)
Effortnew  Effortold  Effort
• ∆Effort = difference in project from past
project(s) in terms of requirements, reuse
opportunity, process, etc.
Analogy Costing Utility
Advantages:
• Grounded in past history
• Full effort need not be estimated only delta
• Not a lot of time required (just meaningful analysis of deltas)
Disadvantages:
• Meaningful data may not be present
• Subjectivity in deltas
• Past historical data may not be representative (innovation
efforts)
• Abnormal conditions in past projects (that estimator is
unaware of) may throw off results
Function Point Analysis (Albrecht)
• Function point represents a piece of
functionality of the program:
– User-input
– User-output
– Inquiry (interactive inputs requiring response)
– External (files shared or used externally)
– Internal (files shared or used internally)
Function Point Analysis (Albrecht)
5
3
UFC   N ijWij
i 1 j 1
where,
• i=type of FP (User-input, output, etc)
• j=Complexity level of FP (1-3)
• Nij is the number of FPs of type ij
• Wij is the weight of the FPs of type ij
LOC  a * UFC  b
where a & b come from historical data/curve-fitting
Effort = LOC*Productivity
Function Point Analysis Utility
Advantages:
• Can be formulated at requirement time very early in the
software-lifecycle
• Provides good traceability in mapping tasks to effort
• No subjectivity is required as to the task duration
• Less prone to subjective bias than expert judgment based
techniques
Disadvantages:
• Detailed requirements & consensus on complexity is required
• Very nebulous
• Time involved to arrive at such an estimate
• Requires a good handle up-front of the requirements (prone
to requirements creep/hidden requirements)
Algorithmic Models
Effort  F (C1 , C2 ,...Cn )
Where,
• {C1, C2, …, Cn} denote cost factors
• F represents the function used
COCOMO (Boehm)
• Regression Formula
• Historical Data Inputs
• Current Project Characteristics: (Nominal 1.0)
–
–
–
–
Product: Reliability, Documentation Needs, etc.
Computer: Performance Constraints, Volatility, etc
Personnel: Capability, Familiarity w/language, etc
Project: Co-location, Tools productivity gains, etc
• Project Categorization: (Different historical data)
– Organic: Small team / flexible process
– Embedded: Large team / tight process
– Semi-Detached: Somewhere in-between
SLIM (Putnam)
• Spent much time doing curve fitting, came up with
following equation:
3


Size
Effort  
*B
4/3 
 P r oductivity* Tim e 
where,
• Size is ESLOC or Effective SLOC (new+modified)
• B is a scaling factor indicative of project size
• Productivity is the Process Productivity factor
• Time is duration of project schedule (years)
PriceS
• Parametric cost-estimation system
• Can accept a wide variety of inputs:
– Use-Cases, Function Points, Predictive Object
Points, Functional Size, SLOC, and Fast Function
Points.
• Effort estimates also factor in:
– Software Lifecycle processes (Waterfall, Agile, etc.)
– Software Language Choice (Java, C++, etc).
Algorithmic Models Utility
Advantages:
• Objective
• Repeatable results
• Historical data often represents MANY past projects
Disadvantages:
• Complex formulas are hard to comprehend
• Requires faith on the users’ end
• Subjective historical data
• Subjective Cost factors may throw off equations
• May require difficult/time consuming tailoring using
estimator’s historical data
New Model: Predictive Expert Judgment
Combines inherent simplicity of expert
judgment method w/feedback control
provided for in other models
Requires:
• Diligent tracking of actual times for past tasks
• Records of experts’ estimates toward those
tasks.
Predictive Expert Judgment (cont.)
Steps:
• Solicit effort estimates for each task from each
expert
• As tasks are completed build a repository
tracking how close the experts’ estimate was
to past historical estimates
• Weight each experts’ future estimate by how
well he has historically estimated
Predictive Expert Judgment
Equation
N
ETotal  Wi * Ei
i 1
Where,
– Wi corresponds to each expert’s trust weight
based on historical performance
– Ei corresponds to each experts’ estimate for the
current task being estimated
Predictive Expert Judgment (cont.)
• Wi can be calculated:
– Simple formula involving standard deviations
– Intermediate custom formula where one
disregards some experts based if they are outside
target range or based on external factors
– Weighted Variance Equation
Simple Formula
Wi 
1
N
 i * 1 /  n
n 1
Where,
– Wi corresponds to each expert’s trust weight
based on historical performance
– N is the number of experts with historical data
– σi is the current experts’ historical stdev
– σn is each experts’ historical stdev
Expert Judgment Example
Expert A: 40 hours
Expert B: 20 hours
Expert C: 5 hours
Expert D: 20 hours
Expert E: 30 hours
No historical data:
40*0.2+20*0.2+5*0.2+20*0.2+30*0.2 =23.0 hours
Predictive Expert Judgment Example
Everybody counts methodology…
N
ETotal  Wi * Ei
i 1
0.35*40+0.16*20+0.11*5+0.22*20+0.17*30=27.0 hours
Predictive Expert Judgment –
W/Constraints
If we had rules where we threw out experts’
estimates if they were wildly off: > 12.0 STDEV
N
ETotal  Wi * Ei
(Where σi <12.0)
i 1
0.47*40+0.29*20+0.23*30=31.8 hours
(Could be closer?)
Predictive Expert Judgment –
W/Constraints (cont.)
You could alternatively tighten the standard
deviation constraint to trust only the leading
expert…
ETotal  Ei
1.0*40=40.0 hours
(Where σi = best)
Predictive Expert Judgment –
W/Constraints (cont.)
You could also adjust for deviations in estimate
(how far they are normally off and in what
direction)
N
ETotal  Wi * ( Ei -  i )
i 1
0.35*38.75+0.16*20+0.11*3.75+0.22*13.75+0.17*26.25=24.4 hours
Results & Analysis
• No model can estimate the cost of software
with a high degree of accuracy
• Expert Judgment was found to be just as good
as algorithmic models (in 15 case studies)
• Uncertainty and Probability should be added
to most models
• More historical data needs to be collected
from industry
Conclusion
• A software manager who takes time to
perform and reconcile software effort
estimation will be on safer footing than a
manager who doesn’t
• Use the advantages/disadvantages in paper
and use one you feel most comfortable with
Download