Viable estimation is critical to successful software projects whether it is agile, waterfall, or anything in-between. In the book “Software Sizing, Estimation, and Risk Management: Where Performance is Measured Performance Improves” we lay out the process. This can be used in a formal way for high maturity organizations AND can be used as a general basis of organizations just getting started in improved planning. There are many documents and presentations available from Galorath on this topic. I find the IBM paper by Dr. Denton Tarbet of Galorath an interesting visual representation. And a short summary of the process is included as this link.
Step 1: Establish estimate scope and purpose
Define and document expectations. When all participants understand the scope and purpose of the estimate, you clear up contradictory assumptions, establish a baseline for measuring the effect of future changes, and head off potential misunderstandings.
Step 2: Establish technical baseline, ground rules, and assumptions
Identify the functionality included in the estimate. If detailed functionality is not known, document ground rules and assumptions, and what is and isn’t included in the estimate. Issues of Commercial Off-the-Shelf (COTS), reuse, and other assumptions should be documented as well.
Step 3: Collect data
Identify the data required and the information holders. Provide participants with questions and clear definitions beforehand. During interview confirm data is realistic and valid. Build and refer to repositories of project histories. Be sure to capture uncertainty.
Step 4: Determine size and scope
If circumstances force you to compromise on your estimating methodology, spend the bulk of the time you have on sizing the project (the use of sizing databases and tools can facilitate this process). This is arguably the most critical step in determining the ultimate success of a project. Sizing and scoping drives every aspect of the project, constrains the actions that can be taken in the development or upgrade of a product, and limits available options.
Step 5: Prepare baseline estimate
Estimating a project should not be thought of as a one-time activity. As projects progress, unknowns become knowns, and new and unexpected issues and opportunities arise. Life happens. Refreshing estimates and documenting estimate deltas throughout the development process ensures that 1) the evaluation of trade-offs is based on increasingly reliable data, 2) the organization has a “most accurate” estimate at any given point in time, and 3) estimation accuracy improves over time.
Step 6: Quantify risks and risk analysis
Risk can be characterized in terms of a loss of time, quality, money, control, or understanding. The loss associated with a risk is called the risk impact. Risk cannot be eliminated, but it can be planned for. Risk, by itself, will not threaten the success of a project if it is recognized and addressed in a timely fashion.
Step 7: Validate and review
Validating and reviewing your estimate provides a systematic confirmation of your estimate’s integrity. This step enables the organization to be more proactive in adjusting project variables, and justifies confidence that project data is sound, methods are effective, anticipated results are accurate, and focus is properly directed.
Step 8: Generate a project plan
Generating a project plan employs the project estimate as a basis for allocating and communicating specific cost, resources, and timelines in a detailed function and task-oriented work breakdown structure.
Step 9: Document estimate and lessons learned
Each time you complete or update an estimate and upon completion of a project, you should document the information that proved pertinent and record lessons learned. By doing so, you document a “best effort” process, capture actual results with which to calibrate your estimation models.
Step 10: Track performance (measurement and feedback)
In-process information should be collected continuously and compared against the original plan and baseline. If performance varies consistently or significantly, corrective options should be evaluated and implemented to get the project back on track. Performance feedback should also be reviewed and project data retained to refine the estimating process, itself.