Ashford Technical Software
Engineering and Business Solutions
Through Innovative Technology
Estimating Software Projects
The most difficult aspect of software project management is estimating the duration of a development project. The task is particularly daunting for new systems or systems which will utilize new technology.

At the core of the problem is the lack of a commonly accepted method for measuring software development productivity. The most common measure, lines of source code, is widely recognized as being inadequate for all but the smallest projects. The best metric is one based on an estimate of the amount of work to be done. Ashford has successfully used a work–based estimating technique for several years. The method is summarized below.

(1) Once a specification has been prepared, develop a detailed work breakdown (task list) of all the work items associated with developing the software. Use the development team to prepare the task list. Refine the task list - break out more detail, add more tasks. Remember that the first major failure of estimating is not identifying tasks during the planning phase. Include time for planning, scheduling, project management, unit test, integration and documentation. A list of the functions to be performed, the modules to be developed, the database tables to be updated, etc. will help identify development tasks.

(2) After a detailed work breakdown has been prepared, have at least three senior developers independently estimate the time required to complete each task. Rules of thumb: no single task should be greater than one man week; no single task should be greater than 2% of the entire project; no single task should be less than one day. Use records from previous projects to assist in estimating development requirements and task durations.

(3) Compare the individual estimates. Revisit tasks where the individual estimates vary greatly; large deviations for a given task suggest that the task should be clarified or subdivided into additional tasks. Refine the estimates until the estimators are in reasonable agreement on the duration of each task. Expect new tasks to be identified during the estimation process. Remember that the second major failure of estimating is underestimating individual tasks.

The final work breakdown can be used to develop a project schedule. Keeping actual development records along with the original work breakdown provides a historical basis for future project estimates.

In Ashford’s experience, a team of developers that uses the method consistently and maintains accurate records from the actual development process can become very proficient in estimating software projects.

     © Copyright 1998-2009 Ashford Technical Software, Inc. All Rights Reserved.