Carnegie Mellon University

17-622 Estimating Software Development and Maintenance Projects

Estimating Software Development and Maintenance Projects is a 6 unit half semester course.

Time, resources, and money are three criteria by which society and organizations decide what gets built, how it is built, and by whom.  Unrealistically small budgets, as well as unnecessarily large ones, can often result in a misallocation of resources and wasteful spending.  The importance of having credible and reliable estimates cannot be overstressed. 

The objective of this course is to learn how to develop estimates for software development and maintenance projects, how to communicate the estimates to others, and how to best represent the estimates in a formal contract.  Although the course is essentially quantitative, it will delve into the cognitive biases and administrative behaviors that affect the estimation process.  While the course will cover the use of parametric models and counting methods, it is not a study on COCOMO or Function Points.

After completing this course, students will:

  • be able to estimate the effort and duration of software development projects;
  • capably use expert methods such as Wideband Delphi and Paired comparisons;
  • use functional sizing methods, such as function point analysis and use case points;
  • use parametric models such as COCOMO;
  • be able to explain the basis of estimation that was used;
  • quantify risks and variations using subjective probabilities;
  • prepare release plans.