# Software Project Survival Guide

## Sample Informal Estimation Procedure

**I. Pre-Requirements (Product Concept) Time**

- 1. Create at least one estimate using each of the following approaches:
- a. Number of Subsystems computation
- i. Estimate the number of subsystems.
- ii. Calibrate estimation software using historical data from within our organization.
- iii. Estimate the nominal effort and schedule using a commercial estimation software package.

- b. Gut Instinct comparison with previous projects
- i. Estimate the technical scope of the new system as a percentage of the scope of a previous system("Relative Size")
- ii. Compute nominal schedule and effort for the new system by multiplying the schedule and effort of the previous system by the Relative Size of the new system.

- c. User Interface Components comparison with previous projects
- i. Estimate the number of dialog boxes (B) of the new system as a percentage of a previous system.
- ii. Estimate the number of graphs and reports (R) of the new system as a percentage of a previous system.
- iii. Estimate the number of tables in the system’s database (T) compared as a percentage of a previous system.
- iv. Compute a multiplier (M) as follows: M = 0.35 * B + 0.35 * R + 0.30 * T
- v. Compute nominal schedule and effort for the new system by multiplying the schedule and effort of the previous system by the multiplier (M) of the new system.

- a. Number of Subsystems computation
- 2. Compute nominal effort and schedule estimates (N) for the new system as average of the estimates a, b, and c.
- 3. Compute estimate ranges as from 0.6 N to 1.75 N.
- 4. Estimates must always be presented as ranges. The single-point nominal estimate developed for use in these calculations should not be presented.

**II. Pre-Architecture (Post Requirements) Time**

- 1. Update each of the estimates I-1a, I-1b, and I-1c. Create an average estimate "I-average."
- 2. Create a Function Points Estimate
- a. Compute function points based on requirements specification
- b. Calibrate estimation software using historical data from within our organization.
- c. Estimate the nominal effort and schedule using a commercial estimation software package.

- 3. Compute nominal effort and schedule estimates (N) for the new system as average of 2c and I-average.
- 4. Compute estimate ranges as from 0.7 N to 1.4 N.
- 5. As in Step I, estimates must always be presented as ranges.

**III. Construction (Post Detailed Design) Time**

- 1. Build a bottom-up developer based estimate
- a. Have each developer estimate the effort required to design, code, and unit test the modules he or she will be responsible for.
- b. Add up the individual module estimates.
- c. Multiply the sum by 1.3 to account for forgotten tasks and developer optimism.

- 2. Compare 1c to II-3. Compute a nominal estimate as 2/3 the higher estimate + 1/3 the lower estimate.
- 3. Compute estimate ranges as from 0.8 N to 1.25 N.
- 4. As in Step I, estimates must always be presented as ranges.
- 5. If cost/schedule tradeoffs are desired, they may be computed as follows:
- a. Shorter schedule: the schedule may be shortened 20% in exchange for 50% more total effort.
- b. Reduced cost: total effort may be reduced 50% in exchange for a 25% longer schedule.