Estimating the effort necessary for a software project is always difficult but is always necessary. As the project progresses your estimate should converge on what is actually occurring in the project. However, often initial estimates are needed immediately after the project is conceived, to determine whether it is affordable/doable. At that early point you have to draw on your experience and analogy to produce an estimate, noting places where the dragons (unknowns/traps) are.
If you do have more time or after those initial "back of the envelope" estimates, there are tools that can help you estimate the effort. NASA has a great site on software estimation that includes an informative, downloadable handbook on estimation techniques and it can be found here.
Function points are one of the more popular software estimation technologies and Stevens teaches the methodology. IFPUG (International Function Point Users Group) is the society that promotes function points and its web site can be found here. However in order to obtain the full benefits of the organization, you must join it and there is a membership fee of $50 for students and $185 for professionals (plus an additional $75 first year fee).
Any experiences/data on software estimation techniques that you could provide in comments to this post would be appreciated and useful, Thanks!
Finally my web site is undergoing fairly significant upgrading of information. In particular I am creating resource pages for software engineering, rule-based programming and languages. If you have any additions to those pages send me some mail. Hope you are enjoying your summer. Later!