Skip to main content

MSF for CMMI Process Improvement

Go Search
Home
  
MSF for CMMI Process Improvement > Wiki Pages > Activity - Estimate Iteration  

Activity - Estimate Iteration

Activity Information

Estimate Iteration

Description

An iteration estimate should define a two-stage commitment: a list of work items to which team members are fully committed, and a secondary list of work items to work if there is spare capacity at the end of the iteration. Remember that it is an "estimate," a best guess at what can be achieved. The iteration promise should therefore reflect this. Defining a minimum acceptable deliverable and a buffer of additional work items provides a mechanism that embraces the natural variation in software engineering whilst providing the customer with a promise around which other plans can be built.

Steps

  1. Gather Metrics:

    Collect any available report data from previous iterations.
  2. Choose an Estimation Method:

    Choose a method of estimation. For example, by effort (expressed in person days) on individual tasks, or by some more lightweight approach. The standard reports are setup to facilitate lightweight estimation which embraces the concept of variation in process performance.

    In general, the MSF approach uses the velocity data from previous iterations. Divide the mean velocity into the length of the iteration to determine the approximate midpoint for the number of work items that can be completed in the iteration. Reduce the number slightly to provide a buffer that is under the expected team performance. This should be the minimum commitment level for the iteration. Set a second number based on a slightly inflated (above average) velocity. This should be the stretch goal number. The difference between the two is the scope buffer for the iteration plan.
  3. Calculate Estimate:

    If estimating individual tasks, divide the proposed iteration backlog across iteration work groups. Have each work group analyze the work items and make an estimate. Each team should be asked to create the midpoint estimate for each task; that is, if given the opportunity to do this task 100 times, what number would allow the task to be completed approximately 50% of the time?

    Take the iteration length and subtract a buffer to absorb special cause variations; issues and risks that affect the critical path. Start with 15% of scheduled time for this. It may not be enough, it may be too much. Ask yourself, "How much insurance do I want to buy against unknown problems occurring?" Use the identified project risks and the open issue log to gauge the answer to this. How many days were lost on previous iterations due to blocking issues?

    Subtract a buffer for common cause variation. Compare planned versus actual data from previous iterations. How accurate were the planned estimates? Buffer accordingly for the inaccuracy. Include the data from the Unplanned Work report as input. Emerging unplanned work must be treated as common cause variation in the process.

    Take the prioritized or ordered iteration backlog and fill as much of it into the remaining iteration time. This is the minimum commitment for the iteration.

    Now fill the time buffer with more tasks from the backlog. This extended list will represent the stretch goal for the iteration.

    If you are lightweight estimating using velocity, then divide the mean velocity into the length of the iteration to determine the approximate midpoint for the number of work items that can be completed in the iteration. Reduce the number slightly to provide a buffer that is under the expected team performance. Reduce it further to buffer for unplanned work (based on data from the Unplanned Work Report in previous iterations). This should be the minimum commitment level for the iteration. Set a second number based on a slightly inflated (above average) velocity. This should be the stretch goal number. The difference between the two is the scope buffer for the iteration plan.
  4. Publish Updated Iteration Backlog:

    Publish the updated proposed iteration backlog with a minimum commitment level and a stretch goal level to the project portal.

Inputs and Outputs

WorkProductInputOutputAllowable States
TaskActive

Successors

TypeNameDependency Type
Define Iteration Budget and ScheduleFinish-Start

Last modified at 12/19/2007 10:37 AM  by Administrator