For our software projects we size based on function points. If you are unfamiliar with this technique, the most common standard used is that of the International Function Point User Group (IFPUG), at least in my part of the world. It tries to sizethe project by looking at the fuctionality being delivered from a users point of view, with levels of complexity and files being considered. Their are also adjustment ratings dependent on the type of project and complexity of the processing environment, user environment etc.
The function point technique is useful when the project involved has a lot of user functionality which is easily derived. The drawback rends to come when the project has a lot of interfaces and background processing which facilitate functionality rather than providing functionality.
Another important consideration with function points is that thed number of function points per staff month that can be expected is dependent on platform and language.
RegardsMarc