One of the first questions I'm always asked is a logical one: "What is a function point?"
Simply stated, function points are a standard unit of measure that represent the functional size of a software application. In the same way that a house is measured by the square feet it provides, the size of an application can be measured by the number of function points it delivers to the users of the application.
A good example is when I had my house built two years ago. I worked with a very straightforward home builder and he basically said "Al, you have two choices here. First, how many square feet do you want to build? Second, what quality of materials do you want to use?" He continued "Let's say that you want to build a house that is 2,000 square feet. If you want to use cheap materials we can build it for $80 per square feet. That's $160,000. If you want to go top of the line then you're looking at more like $110 per square foot, and that's $220,000. What would you like?"
Don't read into this example that building a software application is exactly like building a house. We all know that there are a lot of other variables, and it's not quite this simple. But function points do get you a lot closer. For example, I'm currently working on a Java software development project where we're building a Swing-based application that runs on Windows and Mac computer platforms. We're building this application on a fixed-price basis, at a rate of approximately $250/FP. So, is it like building a house? No. But can I bid projects on a fixed-price basis now? Yes, I can. And I couldn't do that 18 months ago.