This document discusses software project estimation. It begins by defining estimation as using a function or formula to derive a solution or make a prediction, unlike approximation. It then discusses why software estimation is important for activities like project planning, budgeting, and scheduling. The document outlines what can be estimated in software projects, such as size, effort, schedule, and derived estimates. It also covers common problems with software estimation like a lack of historical data, incomplete project information, and failure to update estimates as more information becomes available. Finally, it presents tools and techniques for performing software estimations, such as work breakdown structures, product breakdown structures, top-down estimation, and bottom-up estimation.