Any level-of-effort estimate for a software product, no matter how well developed, will not be 100% accurate (or at least it is very unlikely). However, that doesn't mean that the estimate shouldn't be believable.
In this case, believable means that the customer believes that the estimate is as close to accurate as possible, based on the current information, with an understanding that the outcome may change.
When an estimate is believable, it's easier to communicate with the client and to manage the project. Download my article, "Believable Estimates," to learn how to create such an estimate using Function Point Analysis.
VP, Software Performance Management