|
"A good cost estimator should never make an estimate
that deviates from the actual cost at delivery by more than 20
percent. A good schedule estimate should be within 5 percent
of actual schedule at least 95 percent of the time, and should
not deviate by more than 12 percent less than the actual schedule."
-- Capers Jones
Practice Description
It has been said that experience is the best teacher. When
it comes to cost and schedule estimation this is could not be
truer. The best indicator of how long a project will take or
how much it will cost is how much a similar project cost and
how long it took. This is not a reflection of our inability to
forecast and analyze a new job. Rather, it is a reflection of
the inherent complexity of software development projects and
the multitude of ever-present factors that can influence cost
and schedule.
Unfortunately, this is often more easily said than done. While
few would argue the validity of the above statement, the "view
from the trenches" is that comparisons are hard. The rapid
evolution of software technology, languages, tools and practices
often makes it appear that every software development effort
is different. There are, however, some common navigational points
that can be exploited. The fundamentals identified below try
to capture these.
Practice Essentials
- A cost estimate should be made.
- The cost estimate should be based on actual costs from past,
comparable projects.
- A software size estimate should be an input to the cost estimate.
The size estimate should include an estimate of the equivalent
new development lines of source code for planned legacy reuse,
commercial-off-the-shelf (COTS) and government-off-the-shelf
(GOTS) software.
- When COTS application software is involved, an analysis of
the fit of the COTS to the current application should be made
prior to cost estimation.
- A productivity estimate should be made for input to the cost
estimate based on measured productivity on past, comparable projects.
- The empirical cost estimate should be made with a cost model
based on metrics from past, completed projects.
- The empirical cost estimate should be compared with a bottom-up
engineering estimate made by estimating the labor and other resources
for each task in the project's detailed activity network, and
differences reconciled.
- The schedule should not be unreasonably compressed. If experience
shows that similar projects have taken a given length of time,
the new project should not be expected to complete in less than
85 percent of that time.
- Schedules and cost estimates are influenced by a number of
factors, not all of which are under a program manager's control.
Do not expect an estimate to be extremely accurate. A good estimation
technique will be within 20 percent for cost and 5 percent for
schedule.
Implementation Guidelines
- Estimate the cost, effort, and schedule for a project for
planning purposes and as a yardstick for measuring performance
(tracking). Software size and cost will be estimated prior to
beginning work on any incremental release.
- Software cost estimation should include a reconciliation
between several different approaches such as a top-down estimate
(based on an empirical model; e.g., parametric, cost) and a bottom-up
engineering estimate.
- Software cost estimation will also be subjected to a "sanity
check" by comparing it with industry norms and specifically
with the supplier/developer's past performance in areas such
as productivity and percentage of total cost in various functions
and project phases.
- All of the software costs will be identified with the appropriate
lower-level software tasks in the project activity network.
- Productivity estimate should be a function of software size
and type of software.
- Real-time
- Engineering systems
- Business systems
- Productivity estimate should be based on productivity metrics
from past projects of the performing organization using the planned
processes and technology.
- Productivity estimate should be reduced for new people hired
into the organization.
- Estimate should be adjusted for experience base (for example:
new application -- no valid comparison available, no experts
with experience in application).
- Estimate the cost of code reuse by first identifying the
specific code modules to be reused and then estimating the percentage
of the reuse code in the application that is new or modified.
- Cost and schedule estimates at completion should include
costs and schedule to overcome problems resulting from risks
materializing into problems.
- Risk materialization cost should be the expected value sum
(chance x cost impact) for all risks.
- Subject cost estimate to sanity-check rules of thumb:
- Percentage of total cost for individual phases and functions
- Productivity computed from size and labor effort estimates
- Cost estimate for the effort to modify and integrate reuse
code
- Explicitly identify all source code modules to be reused
and estimate the amount of code modification and new code to
write to integrate each identified module.
- Adjust the schedule to avoid large increases over a short
time in number of staff in any labor category.
- The nominal schedule duration in months is given by nominal
calendar months = 2.5 x (staff months)1/3
- Allocate the estimated total project labor effort among all
the tasks in the activity network.
- Detailed activity net will have no more than 20 percent level
of effort (LOE).
- The estimate must be verifiable with documented rationale.
Things to Watch Out For
- Cost estimates are often based on productivity estimates
that are better by many factors than the organization has ever
accomplished. The rationale supporting this is that a new, unproven
technology, never used by the organization before, will support
this markedly improved productivity.
- Cost estimators and project managers usually do not know
the industry norms for productivity as a function of the size
and type of the software.
- Cost estimates often assume that there is either no or negligible
cost in reusing source code.
- Most project managers have never heard of the metrics concerning
schedule compression.
- Cost estimates are frequently based on incomplete and ambiguous
system requirements.
- When a project begins to show bad earned value metrics, poor
cost estimation is usually not considered as a possible reason.
- Size estimates that were made at the inception of a project
frequently grow considerably over time because system requirements
were not adequately defined at that time.
Figuring Out Where You Are - Project QuickLook
Chapter 6 contains a series of detailed
questions that can be applied to any program to determine the
health of its cost and schedule estimation approach. These questions
should be applied on a regular basis. However, there are some
quick indicators that can be used to see if the risk management
process requires more in-depth examination. Specific "quicklook"
questions are:
- Do you have a database of productivity data?
- Has a cost and/or schedule estimate been prepared?
- When was the last time the cost or schedule estimate was
updated?
An inappropriate answer to any of these questions could indicate
a more serious problem and merits further investigation.
Additional Considerations
Estimating cost and schedule should be consistent with organizational
policy and procedures. Likewise the evaluation of cost and schedule
estimates for software acquisition should be consistent with
organizational policy and procedures.
- There should be a documented procedure for estimating costs
and schedules to ensure consistency. This procedure should
be adapted over time based on the experience from the project.
The procedure should call for estimation of detailed work packages,
based on historical data, documenting assumptions and review/approval
of estimates.
- There should be a documented procedure for estimating use
of critical assets. The procedure should call for assets
to be identified, the estimates to be based on the software products
to be used, traffic and the operations concept. The estimates
should be reviewed and agreed to by all parties at the system
level.
- Measurements should be made for all tasks to determine cost
and schedule status. This includes support tasks such as
SQA and SCM.
- The cost and schedule estimating evaluation process should
be coordinated with organizational processes for consistency
and accuracy.
- Tailoring of the organization cost and schedule estimating
evaluation process should be tailored to the project acquisition
strategy and documented.
- Project teams are informed of the tailoring of the organizational
cost and schedule estimating evaluation process.
top
  |