Estimation is the process of approximating values even with incomplete or uncertain data. Software project estimation is challenging due to the complexity of software. Estimation is needed to allocate resources, bid for projects, and determine whether projects are done in-house or outsourced. Common project estimation approaches include analogous cost estimation, parametric estimation, three-point estimation, and bottom-up estimation. Wideband Delphi and planning poker involve expert panels providing multiple rounds of estimates. Work breakdown structures, PERT diagrams, and critical path methods break projects into tasks and dependencies. Guidelines recommend leveraging past experiences, including management time, using organizational data, and getting multiple estimates from developers using different techniques.